It is cool though No images? Click here There is sometimes a correct wayAh yes, the nerves associated with having sent a pricing proposal to a new client. It never quite gets old. Phew. Well, fingers crossed and all. It doesn't matter that I think my proposal is fair, well stated or whatever. It is the uncertainty in how another person will receive it that makes the stomach churn. I can handle a negative response, I can handle negotiating. But I can't do anything about the waiting. As I've been on about the PETAL stack I put together a very thin getting started guide on the blog. Just to help people try it out. I've also been glad to see the interest in my mentorship program. Now, since that's 1-on-1 it can be quite costly and I am considering some options to make it more accessible to a wider audience. If you have any thoughts on these, please let me know by replying to this email. Office hours livestream Coaching chat group The type system types and the objectively betterI've never gotten into type systems. I've done fine when ActionScript introduced types, I can write some C#, very little C and some assorted statically typed languages. But I've generally worked with more dynamic languages and have been fine with that. A recent conversation with a Haskell enthusiast touched on something I've seen and have thoughts on. This particular Haskeller was not dogmatic about types, we actually spoke because of some very pragmatic interest in Elixir on his part. But we touched on the fact that there are people in Haskell that find the type system more important than any day-to-day concerns. A strong enthusiasm about the theoretical greatness of the thing. I've seen similar sentiment around Functional Programming as a concept, Elm, TypeScript, free software purity, privacy ethics, operating systems (usually Arch or Nix), occasionally Rust, Event Sourcing, any development approach ending in DD, definitely Macs and a number of other things. Sometimes its fanboyism. That's not very relevant to what I want to touch on. We can all fall for fanboying something and I don't think that's ever very healthy. But there are aspects to the things I listed where a case can be made that they are not just good but correct, or just better. Maybe even beyond just better, basically perfect. And I think sometimes that's right, in theory. On all accounts I've heard that the elegance of Elm is astounding, the type system of Haskell is amazing and that Nix could be a new paradigm for operating systems. I tend to get a bit annoyed listening to these arguments for too long but if the arguments make sense, in spite of what is often both fervent insistence and a touch of unflattering elitism, I also tend to register them as likely interesting. People that buy into perfection often do end up dealing with some interesting ideas. The idea can be strong and useful. Often the reality of the thing is insufficient, has certain flaws or is so far from pragmatic as to be entirely non-feasible. At least for me. I'll tell you about my first use of Arch sometime, it started out really promising. FP (Functional Programming) didn't get me until Elixir brought me around to it. Elixir has particular, pragmatic reasons to not use shared state. The inconveniences of the transition to FP habits was still there but the upside was quite clear. Distributed/concurrent systems with sane ergonomics. I'm sure I'll encounter a case where a type system really solves a problem for me at some point and be like "yeah, this is legit". That hasn't been my experience yet. Granted, I haven't explored that space much. I'm pretty sure Nix is pushing forward on a lot of things I want. Haskell is obviously impressive and influential, especially in FP. I've heard very strong cases for Elm and my initial reading into it seems promising. But I also find that there's an undercurrent of frustration when people pitch these perfect, platonic ideal solutions and don't get the enthusiastic response. But one, I distrust any claim to perfection and two, there are almost always sharp edges where the perfection breaks down and the complexity suddenly hits, or maybe it only works for a subset of my needs. It's great if I can use things that work perfectly. But things that aspire to some theoretically high ideal tend, in my experience, to come with some wild disconnect from the realities I care about. I hope that paints a somewhat coherent picture about what I see when I hear arguments about perfect, ideal systems or "why don't you use X". On the flip side, I don't care so much about theoretical perfection. I'm generally about making things. I want to make good things. I want to build them well. But I never expect perfection. Done is better than perfect and all that. In a world where two internet computers can't be certain if they've lost connection to one another I have more pressing concerns than a type system for getting things working. On the other hand, the moment a type system impresses me with its practical applications for building cool stuff. I'm likely hooked. If you want to throw your opinion about this at me, just reply or email lars@underjord.io. Also, please, if you have thoughts on the ideas up top that I mentioned, do weigh in. Even a "nah, not interested, stick to writing" is useful signal. You can also find me on Twitter as @lawik. As always, thank you for your attention, I appreciate it. - Lars Wikman |