High Quality Software and Machine Learning
Welcome to this little experiment. I am a very passionate developer who loves trying new stuff and pushing myself to be more efficient (in everything). In addition to this I'm a big fan of high quality software. I simply dislike bugs, especially fixing them when the alternative is doing cool new features. This, and the intellectual challenge, has led me onto the path of functional programming. One of the main themes of this blog.
My favorite programming language is Haskell. As you might know, Haskell is a purely functional programming language. It also has a very sophisticated and strong static type system. In fact, this website is written using Yesod, which is a web framework written in Haskell.
Technology Behind The Scenes
A little about Yesod. This is my first project using Yesod. I quickly made up my opinion, Yesod is simply awesome! Firstly, it uses Haskell, which means that you can develop your website with the full power of Haskell. Secondly, Yesod provides a lot of solutions to common problems, and all the solutions are very well thought through. Some interesting parts are:
- yesod-persistent: A very simple way to communicate with your database. It is a bit limited though, mainly it doesn't support join. But Esqueleto solves that in a very elegant way. And, the data you get is typed!
- yesod-form: Dealing with forms is something I associate with a lot of boilerplate and messy code. Yesod has a solution for this, making it pretty nice. And the forms are trivial to reuse.
- If you try to load a file that doesn't exist you will get a compile error.
- Session is stored clientside in an encrypted cookie. This differs from the common approach of saving a session identifier and the rest of the session server side. Security is solved by using AES encryption. The benefit is performance (no need to load the session on every request) but also the idea that the request is complete. Given a request your application can serve it. It does not rely on a session existing on a specific server.
- Simplicity. It's not trivial to learn. But compared to Spring MVC, which I'm using at work, Yesod is incredibly simple.
I'll try to give more detailed posts about Yesod as I develop this website further. If you ever thought of testing Yesod, which I did for quite a while, do it! You won't regret it. A good starting point is the Yesod Book and the scaffold. As I mentioned, one of the big themes of this blog will be functional programming. But it doesn't end there, I'm also very interested in Machine Learning.
I'm currently repeating A First Course in Machine Learning which was my course book when studying machine learning. I also took the famous Coursera course, but found it a bit to shallow/simple compared to the book. Expect to see many posts about machine learning in the future. I'm currently focusing on the mathematics, I want a solid understanding in order to develop an intuition for which technique to use when and how to find the best parameters. In other words, I'm not just trying to shallowly learn how to use Tensorflow (although I will probably play around with it too, it's pretty cool).
Have a nice day, and do come back if you are interested in programming (especially functional programming), mathematics, machine learning or just software engineering in general.