Beginning: When the virus hit I lost my work contracts and all my income overnight. My immediate reaction was one of great relief - the relief of no longer having to build other people’s creations. I had been doing it far too long and used the demanding hours as an excuse for not attending to my own dreams. I was too comfortable and not bold enough to throw it away. I needed a push and the shutdown of the economy was it. I had enough in the bank to last a couple of months.
Adrift: What do you do when you’ve been in safe employ for years and then it’s gone and there’s nothing to replace it with? I let go of all that past stuff and felt a lightness - fear too but also a sense that I am not alone in this sea of change. The obvious thing is to find more work but it felt like that would be resisting the change, just going back to the old ways. That’s not for me.
What do you do when you can do anything?
Taking Flight: I recall an app idea I had years ago. I named it Seagull. I think the concept is still strong and innovative. The thought of making it is immediately exciting. But it feels fragile too - could I really spend my days building something of my own, something I love? I trust my intuition and determine to do it. It’s funny because where I live now, the seagulls live too. These old sandstone buildings are their cliffs, their home. They raise their young here. I love to see them soar.
Sketching: Out come the old sketch books and pencils - they’ve been shut away in the dark for too long. I explore my idea with diagrams and notes. It unfurls and exposes its nuances. Is it worth making? How will it fit together? Will it work at all? I think so.
Money: I don’t want money to get in the way of my plans, my freedom. I live frugally but there is still rent to pay, mouths to feed - the usual. Just as one cannot simply walk into Mordor, one does not simply stop working. So where does the money come from? I am so convinced and trusting in my app plans that I take out a large loan that will pay the bills for a few months. It is a big commitment for someone who has no debts at all and a testament to how much I value this new-found freedom.
The Grand Plan: Race to version one of my desktop app and then sell the whole thing to a big business. This will cover my loan and give me some future work too. Now I write it down in public it sounds naïve but this feels right to me and gives me the freedom to make something I believe in. The app is innovative and bright enough to attract buyers. I hope.
Worst Case Scenario: One way I have learnt to cope with risk is to run through a worst-case scenario. It allows me to see that if plans go pear-shaped, it’s not so bad after all. In this instance, I have taken on a large loan in order to work freely and happily - I had no debts beforehand but it seems like a good exchange in order to live this enjoyable period in my life. I hope that my efforts will pay well in the future but what’s the worst-case scenario?
What if all fails and I am left with no money and the loan still to repay? I would have to find work - it may not even be the nicest work but it’ll be a bridge. I may have to move out of my home and find somewhere with cheaper rent. That’s not so bad, I’ll still be here with my free will intact. There may even be fresh opportunities that arise from those events - good things that might not have happened otherwise.
I choose to enjoy this time and do my very best to make it work out. What happens after that is in the lap of the gods.
Today at Loch Ard.
When I’m in the water I let go of everything. The coldness drives it out and the surrounding views of this beautiful Earth restore me. I am grateful.
Liberation: So I am liberated. The burden, the responsibility, the sheer weight of my past work-life is lifted from me and it feels fantastic - quite dream-like really. I begin my race against time and dwindling money to create the program I always wanted to. Apart from the idea, I am starting from nothing. I have a long journey ahead and I know that some of it will challenge me. I feel daunted and excited in equal measure. I have no idea how this story will end. But I do know I’ll enjoy it.
Maytime: Events so far happened in May 2020. It was exciting to emerge from the darkness of mundane work and into an invincible Springtime of infinite possibilities (as long as it didn’t involve leaving the house - C19). June was a hopeful leap into the unknown…
With the onset of Autumn, the first geese arrive over Glasgow skies. First, distinctive sounds, then the magical V formation was seen - a symbol of cooperation and unity. Welcome geese. You made it!
I am starting this project with a blank slate, no rules and no one to tell me what to do. I get to choose how I’ll develop, what my environment will be, what my tools will be. These are luxurious decisions. It was a time for introspection. What do I really want?
Back in the day I was a graphics programmer, mostly for games. Some audio coding too. I loved it. I started with 68000 assembler and then moved to C followed by C++. After that I built some of the early web platforms. They were happy and innovative times before I drifted into more mundane work and became too comfortable - blah, blah, we’ve all heard this story before. Now I’m free and thinking back to those glory days.
My Seagull project harkens back to those times - it, too, requires raw speed and real-time graphics. So I turn to C++ again. I had fun there. It’s been a long time but the idea lights me up and that’s always a good sign. I’ll just need to brush up on my skills.
I shall code in a traditional style too - simple and direct without constraining or complex abstractions. It’s fun to program in this way, to see changes so fluidly, so explicitly.
I go back to my roots in other ways. I migrated to Windows last year and I want to stay there, just as I was 20 years ago. I even choose to code in the original Windows monospaced bitmap font, Fixedsys. It’s pure and timeless and makes me smile.
So I find myself back at the beginning. I think I’ve always longed to go back to that time, not out of nostalgia but because I enjoyed working that way the most. It is utility - I shun the superfluous, leaving only pure tools and a passion to create.
Confidence: When starting something new (or revisiting something old) I like to build confidence quickly so disillusion and overwhelm can’t set in. I have a mammoth task before me but I know that I will overcome difficulties either by wit or sheer determination. I know that small victories will add up to create an invincible self-belief.
So I begin by compiling some of the libraries I’ll be using and simply messing about. In C-land, sometimes even compiling a library can be an entertaining exercise. I know all this from my past and I’m pleased to find that the knowledge is all still there as I intuitively overcome problems. I also get to meet CMake. It’s a nice concept and it should be simple enough but it seems that a lot of users enjoy making the most complex build scripts possible. I like to keep things simple so I write my own minimal scripts that are easy to read and make sense to me - they look nice too which is always a good sign.
Awake: It’s so good to be coding passionately once again - words cannot express the joy and gratitude I have for this. I feel like I’m doing exactly what I was born to do, coding from my heart, in unity with technology and nature by my side.
Daydreaming: For me, writing software is half daydreaming and half doing the work. The daydreaming part is soft, it’s an opening of doors to new realms. Then I bring the daydream into existence - this is physical, accented by moments of intensity. I am forging.
Tech Forge. The place where magick sparks at my fingertips.
Black Boxes: I love how I can create these little black boxes of code that support me throughout development. They’re little nuggets of gold that remove friction. These helpers are greater than the sum of their parts.
Breaking Through: I get that blank page moment sometimes. It happens when I don’t know how to proceed. Where to begin? How to begin? There is a grand vision but the dark corners only reveal themselves when I get down to do that work. It’s easy to hide from the great unknown and waste time. Discipline is required to pull away from this stasis.
I walk away, breathe and daydream on the smallest piece that needs to be done, the very beginning. This is the only thing I understand at first - everything else is too ominous.
I get on and write the simplest part. Then things start to take shape. There’s something to build upon. It makes sense and the snowball begins.
Colour! I gave my desktop app a custom colour palette today. Dark and light schemes - the dark is lush. It’s made the whole thing seem more personal. There’s a character to it now, an identity. I’m surprised at how profound this feels.
Here’s something to try. I love dark mode but I find text a bit harder to read there despite good contrast in my colour scheme. Yesterday I bumped up my chosen font from Regular to Medium weight and it’s made a tremendous difference - just enough extra definition.
Don’t: How will I do X? How will I solve Y? The enlightened answer is: Don’t. Don’t solve it, don’t do it that way. The question causes confusion because there’s complexity. So I don’t go down that road, I back up and take a simpler path. And it always turns out better.
Good morning. Today is a good day. Beautiful code shall spark at my fingertips - I can feel it.
Elegance: Everything I bring to this project has to be elegant. Every layer, every piece has to be well made and efficient, from the tools I use to the APIs I choose, to the style I create, to the raw speed of the thing. Elegance induces happiness.
Parsing: A big part of my app is a source code parser…with a twist. And that is what I begin today. I’m playing with various lexers and parser generators to find the pair that suites my style best. I’ve just excluded ANTLR due to code bloat, a shame because the syntax is nice.
Lemon: After many battles, I have chosen the parser generator for my project. It’s Lemon by Richard Hipp (SQLite). I love that he wrote it in the late 1980s and it’s still an elegant choice. And, like all code from long ago, it’s fast as light - it had to be back then. Glorious.
Dawn: Woke at 6am and spent two hours daydreaming through the intricacies of parsing and lexing and how the two intertwine. I was peacefully building up and tearing down solutions in my mind until I found a good path. I rose before sunrise ready to make these discoveries real.
re2c: Impressed by the simplicity and power of the lexer generator re2c. It’s a classic from the 1990s but still in good use. Incredibly fast - the generated code makes me laugh with joy when I look at it, not because it’s silly but because it’s just so simple and clever. ❤
Coding by Candlelight
Fatigue: It’s been slow-going recently. I’ve made progress every day but not much. Developing this parser has been challenging and directionless at times. It feels like I’ve been walking through the Dead Marshes but the end is in sight. I see rays of light before me.
Magick: My lexer and parser are now integrated. Working with parsers feels like playing with magick. I love.
Progress: Most things take longer than my optimistic self thinks. But it’s okay because forward movement every day adds up to more than I think too. And then I see all the progress made in the past few months and the result of it in front of me and I smile.