Well, all right. So you might be asking where the hell has been Nick? What the hell has been he doing with NeoHaskell and all that jazz. So basically a lot of stuff was happening in my life.
Some of you might have known that I got married in December. Yay for me. And also throughout that process, I decided to quit my job and basically start rethinking my life. So there was a lot of stuff going on. We prepared a wedding in a month and a half together with my wife. We like to say that it was "Wedding Speedrun Any%," but it was 100% what we really wanted it to be. We had an extremely good time with our closest friends and family and did it as nerdy as we wanted our wedding to be. Basically, we are super happy for that. It was time after being 13 years together.
Now, after that, we also improvised a honeymoon because we hadn't thought about it until two days before the wedding. And we decided to go to Russia. Yes, I know times are weird about that. Some people might like it, some people might not. But to be honest, taking the political views apart, I highlight the fact I don't subscribe to any kind of violence. The country is very beautiful, and especially having relatives there, it was very easy for us to go there and visit. We really, really enjoyed the hospitality of Russian people, taking into account that it was my wife's first time going to that country and my first time going to that country as an adult. So we spent a great time there.
Meanwhile, I was unemployed, doing a lot of stuff. I really appreciated having free time to be able to do things related to the wedding, the honeymoon, and especially taking care of my home. I took the time to set up a proper home office, clean stuff, sort things around, and essentially get back the balance there. I also reconnected with friends, reconnected with video games, which was something that I had abandoned for a long, long time and that I really enjoy, to be honest. I also reconnected with hobbies like music production, just having fun and reconnecting with life.
In February, I was lucky enough to get an offer for a new job, and I accepted. I've been working there for a month already, and it has been a very exciting journey. Of course, it's a new job, new technologies for me, a new business domain, and especially a new kind of workflow—how the teams are organized, how the knowledge is structured, how the codebase is structured, and how a fully product-focused team compares to a services team that I was previously working with. So it has been a lot of learning, of course, a lot of taxing in terms of energy. And yeah, I've been learning for months, and I keep learning.
But of course, I haven't forgotten about my biggest project, which is NeoHaskell. I really plan to keep going on with that. I really want to continue working on it. Some people have doubts about it, and that’s completely fine. I would be in the same place. There's a lot of discontent in the Elm community due to the opacity of the development process there. Thankfully, NeoHaskell is in a very, very early stage, so there’s no one waiting for production fixes or anything. But whatever.
Basically, I was also rethinking a bit about how I was working throughout the project. Initially, I had this plan of drawing everything, planning everything first, and then starting to develop. But again, that wasn’t very realistic because there's a lot of stuff to plan and a lot of stuff to develop. So I ended up diving in and just starting to develop. But again, that becomes another rabbit hole because you end up implementing a lot of stuff that you don’t need immediately.
Given that NeoHaskell is going to have a strong focus on event modeling and event sourcing, I decided that I should probably start planning graphically. For example, the Neo CLI tool will be the first NeoHaskell application. I decided to start with the event model. In fact, you can see here attached the preliminary Neo CLI Event Model. It’s not even finished yet, nor will it ever be, because event models are constantly changing. I want to figure out the best place to put this online so it stays updated.
You’ll see that there’s a lot of stuff missing there—stuff like slices, chapters, etc. And if you’re not familiar with event modeling, it’s a very great concept. I really recommend reading through Understanding Event Sourcing book. Even if you’re not using event sourcing, event modeling is a great design process to help you simplify how you document and design your software. Of course, feel free to leave your opinions here in the comments or in the Discord channel. I’ll be very happy to discuss this.
Back again to the topic, I essentially want to take the time to design the minimal stuff, make it using diagrams and graphical resources, and then map those to actual tasks that can be finished in one day. One day doesn’t mean eight hours because I’m not working on this full-time, but one day means a couple of hours that I have in the evening. This will not only enable me to go faster and provide results for the community, but also I believe that it will allow people to onboard faster. This event modeling tool or design process allows us to go much, much faster in terms of onboarding because all the knowledge is right there.
Writing design documents is hard, but writing diagrams, which are very graphical, is not only easier in my opinion but also much more fun. So basically, I have a branch called develop that has been long-running for a couple of months now. I really want to release the first neo build feature so people can use it, but that’s probably unrealistic. I’ll just end up merging that into the main branch, where the neo build command is basically a Hello World. I think that makes much more sense because then we can keep iterating quickly and providing more stuff there.
Also, you might be wondering, but not everything can be done through an event model. And you’re completely right. There’s a lot of stuff that we still need to model and document. For example, one of the things that I have in mind is to create a diagram, a table, or some graphical resource that maps the collection type, class, or trait (which we don’t have right now) to the different type classes that Haskell has. So we would have this trait called collection that we could use in order to make our code more generic without having to get into concepts like Functor, Foldable, etc., which are very useful on their own but do not give immediate value to newcomers.
So yeah, basically, this is me rambling a little bit about what has been going on, what has been on my mind, and also what I see for the future. I hope this gets you a little bit excited because I really am. I want to keep going forward with the project, and I want to keep hearing from you folks. So thank you for reading this.
That’s all from my side. The wizard has spoken.
Top comments (0)