Hi!
I'm building a digital filing cabinet to order the chaos in my (and potentially your life). Whether you're a companion in struggling with staying on top of letters and e-mails or a fellow developer curious how this adventure unrolls, this is the place where I will regularly share my progress and learning, both form a technical as well as a business perspective.
Posts
Speed coding Minesweeper in a statically typed functional language
Elm can be just as agile for prototyping as dynamic progamming languages! I challenged myself to created and deploy a browser-based Minesweeper clone in under 2.5 hours and less than 100 lines of code.
If Kent Beck is your doctor, Elm is your pharmacy
Kent Beck is known for his pragmatic approach to software design and his focus on improving the quality of code and the efficiency of development processes. In one of his articles he gives a list of āprescriptionsā to write less bug prone code. And now I have a concrete list of reasons why I like writing code in Elm so much.
The misguided dream of language monogamy in web development
In the ever-changing world of web development, many seek the ideal of using one language for both frontend and backend. But if we focus on common data instead of a common language, we can get the best out of both worlds without having to sacrifice significant synergies. ā
Discover Functional Programming with Elm
If youāve been eyeing functional programming or diving into Single Page Application (SPA) development I think no other tool is better suited for you than Elm. It stands out as a language that not only makes development delightful but also serves as the perfect gateway to the world of functional programming.
Dynamic Diagrams
Static images, videos, and SVG animations come each with their own challenges when it comes to visualize complex systems through diagrams. Iāve developed a mini language and web component to add a narrative element to diagrams.
htmx vs. SPA
As web developers, itās our responsibility to discern the best tool for the job. htmx indeed simplifies the tech stack and lowers the entry barrier for budding developers or simpler projects. However, for intricate UIs that demand consistent data representation, the SPA approach offers better support. Rather than getting swayed by trends, itās time we appreciated the nuance in these discussions and chose our tools wisely.
Building in the open
Join me as I embark on a transparent journey to develop a digital filing cabinet that prioritizes your privacy. Using my years of experience in web development, I aim to craft a solution that bridges the gap between convenience and data security, all while sharing each step of the process with you. Follow along for live coding sessions, insights, and the chance to shape a product designed for individuals, families, and SMEs alike.
Episode 12 & 13: Fade out and clean up
In episode 12(1h:25m) I started with building a simple score tracker. Adding gradual fading became a bit of a cliffhanger, because I introduced a gnarly bug that I was only able to resolve in episode 13 (1h:20). I used this as motivation to clean up and reorganize the code with the help of the glorious Conquer of Completion Vim plugin.
Episode 11: Game Over
There are still a few elements missing to be able to call our Tetris complete. However, with the changes from episode 11 (40min) weāre at least able to tell the player āGame Overā.
Episode 10: Clearing lines
For my Tetris to be actually playable Iām adding in episode 10 (55min) the code to have full rows cleared. With the help of more unit tests and the infamous fold
function, Iām inching my way towards a complete solution.
Episode 9: Preventing invalid movements
In episode 9 (48min) I make sure the current piece canāt be moved out of the board or into other pieces. With that came the opportunity to do a little functional finger exercise and develop a function that swaps the arguments of another function.
Episode 8: Rotation and random new pieces
In Episode 8 (60min) I implement the rotation of the current piece. That worked out so fast that I also looked at generating random pieces instead of the hardcoded one when a new piece has to be created.
Episode 6 & 7: Collision detection and Test Driven Development
This article is the summary of the last two episodes. Tetris-wise Iām trying to implement the functionality that lets the current piece rest on the ground or other previously dropped pieces. After I introduced a gnarly logic error in episode 6 I decided to start from scratch in episode 7. This gave me the opportunity to talk about elm-test
and to show the strengths of the Test Driven Development technique.
Episode 5: Registering keystrokes
In this episode (40min) we investigate how to react to global keyboard events. Once more weāre putting the āsubscription systemā to use which we got to know last episode
Episode 4: Applying 'gravity' to the current piece with subscriptions
After the marathon episode last week I kept it to more digestible 30 minutes this time.
Episode 3: Definition, Rendering of Tetris pieces and static typing
This week I developed the data structures that are necessary to define and render the characteristic Tetris pieces. I was a bit surprised it took me more than 1.5 hours, but I never was the fastest š .
Episode 2: Rendering the empty board and partial function application
After we looked at the structure of an Elm app line by line last week, we had a more abstract look at the mechanics of an Elm app today. But after that we jumped right into the code that would render the empty Tetris board.
Episode 1: Project setup for the Elm Tetris clone
In this episode I shared my hot code replace setup for Elm explorations with you. After struggling with the limitations of elm reactor
I build this little boiler plate setup to shorten my feedback loop.
A stream, because: why not š¤·
The only thing thatās even more energy draining than reading long texts is writing them. Thatās why Iāve decided to give the āstream formatā a try.
Practical exmaples in Elm
I am starting a series of small articles to motivate you and get you started with Elm development. I donāt want to prove to you how Elm has to make you more productive or how your programs are more robust than with other frameworks. There are enough articles about that out there š. For me coding in Elm is fun and it brings back some of the memories of how it felt when In picked up programming. And I want to share that.