So I finally did it! Like thousands1 before me I started a blog. I deemed my opinion relevant enough to throw it out into the world. I finally mustered the courage to let it be consumed, criticized, dissected and regurgitated. Which leaves but one question: Why? And why should you care? And how come I am off by one?2
It might not be immediately apparent, but what you are looking at right now is, at least for me, a major achievement. I am not talking about the site itself, not the style and presentation. That consisted of merely some minor adjustments to html and css liquid templates plus a really small amount of ruby code, whilst most of the real work is gracefully handled by jekyll in the background. Not even the server setup was done by me, as this page is gratefully handled by the free github pages service. I am not even talking about the grandiose content presented here, as - a keen reader might have realized already - at the time of writing content is pretty much inexistent. No, what it is I am talking about is this blogs very existence. The fact that some stranger on the internet is currently reading those lines I have so carelessly written is testament to my success, irrefutable proof that I have actually managed to - in ever so small a way - overcome my insecurities, have convinced myself that it is ok to present something to the world, to show part of me and my work and be judged for it.
Somehow this feels simultaneously like one of the most frightening and least significant things I have ever done. This dichotomy deserves to be explored. Maybe if I share and analyze my thoughts on the matter it will motivate and encourage someone just like similar posts have motivated and encouraged me.
“Similar posts?” I hear you utter in disbelief. “Aren’t you a very special and unique snowflake without equal”? Maybe I am. Maybe we all are. Nonetheless, I am most certainly not the first person struggling with this particular dilemma and I will clearly not be the last.3 A simple search query of “blog why” returns a literal cornucopia of results4, all telling you in detail how blogging is a wonderful investment of any developers time and energy and can greatly advance ones skillset and career.
Alright. I guess that is it then. I am done. Others have made my point for me and better than I possibly could. Google to learn more…
Yet… that’s not true, is it? At least it can’t be all there is to my story. All those excellent reasons so eloquently expressed in others posts existed for all my life, I have been acutely aware of them for at least a decade, but I decided to spam the world now, not before. Why? It has to be a little more intricate, more personal than this…
So join me - if you dare - on a grand journey of self-reflection, of dissecting why I do the things I do.5 A deep dive into my feelings and motivations that will leave you with a better understanding of what to expect from future posts and wondering: “How on earth did I manage to read all that”.
At this point, you know what you are in for. This is personal. This is about me. As such, you will indulge me some unabashed and shameless self-promotion.
I fancy myself as a teacher, and a good one at that. If I wouldn’t mind being arrogant and believed the concept had any merit, I might go so far as to claim a certain talent for it, but I prefer to say it is a passion. School itself might not always have been my most favorite thing in the world, but I can’t remember a time at which I did not enjoy learning new things. What I seem to enjoy even more so is telling others about it. For as far back as I can remember I had a certain penchant for pestering people with everything I learned or liked, trying to share both enthusiasm and knowledge whenever the opportunity presented itself6, relishing at every chance to discuss and debate, quite to the annoyance of many a peer.
What really made me aware of just how important this is for me and that I could - even should - teach at a larger and more professional scale was taking on a job as a TA at university. A job I first took on reluctantly.
In the early days of my studies I was in desperate need of money to ensure I could continue. I quite liked academia, so I specifically searched for jobs my university had to offer. There were two which piqued my interest: One was only about grading homework for a beginners programming course, the other also involved grading, but in addition one was expected to instruct what was called a “Praktikum”. That meant being present in a room full of students working on their homework, answering all questions and assisting with all problems they might encounter. This did have some appeal to me but, as I am a really shy person, I dared not apply and chose the first.
My interviewer wasn’t having any of that insecurity nonsense so. Not only did he tell me right from the start that he loved my application and thought I was perfect for the job I applied for, he went one further and told me he was responsible for the aforementioned “Praktikum” and asked if I would be interested in getting that job instead. This was the first job interview I cared about and I was so relieved it went well and felt so flattered that I simply agreed outright, ignoring for a brief moment the debilitating terror I felt at the scary prospect of standing and talking in front of a crowd of strangers. Strangers who had expectations of me and potentially needed my help. Once the initial enthusiasm waned I was certain to have spelled my own doom. Rarely have I been so wrong.
For almost 7 years I was employed by Humboldt University. I had the honor of not only grading homework and exams, supervising tutorials and lecturing classes but even designing courses. Name pretty much any compulsory undergraduate course for computer science taught there and chances are I have been involved in its teaching. What I originally thought to be a bother turned out to bring me more joy and fulfillment than I could have ever anticipated. I learned far more from teaching than I did from attending classes. It brought me respect, friendships and did more for my feelings of self worth and relevance than pretty much anything else I have ever done. I was certain of being a positive influence on the lives of others and it would not be far fetched to claim it gave some meaning to my own.
Alas, this has now come to an end. I left university early this year and already miss it. Whilst I am now attempting to earn a living as a freelancer and am available to being hired not only for software development, but also for training/teaching by individuals and companies alike, this has not happened yet.7 As such I am deprived of this joy and in desperate need of some outlet to convey what little knowledge I have and engage with others who share my interests. I hope a blog can serve that purpose.
In addition to helping others improve, I also wish to improve myself, which in turn will hopefully transform me into a better educator. Once again, allow me to elaborate why I think blogging helps with this by sharing unnecessary and embarrassing details about myself.
When I received my first computer I was fascinated by what it could do. But I also wanted it to do more. I wanted to play, but without any games and my parents displaying - much to my chagrin - quite an aversion to buying me any I had no choice. I did what anyone in my position would have done and set out to build my own. How hard could it possibly be? I opened a texteditor and typed “bild.bmp bewegbar”8, saved it with an “.exe” extension and was completely dumbfounded when nothing at all happened on a double click. It was completely non-obvious to my childish mind that what I had described was completely non-obvious and far too inaccurate for my dear computer to understand.
Unfortunately I do not remember exactly when this was, I think it must have been at the tender age of about 10, but from that point on I was hooked. I had to understand how that stuff worked. It still took some more time until I arrived at actually writing something that could be called code. For a short while I was content with creating stupid quiz games by hyperlinking excel sheets, but once I discovered a book about BlitzBasic in my local library the damage was really done.
As you can see, I originally got into programming because - like any reasonable child and adult should - I wanted to create games. But I stayed with it for so much more. What I discovered was not merely a tool to create worlds following my rules, but a tool to understand the one around me. Programming really taught me, more than anything else ever did, how to go about comprehending things and how to structure my thoughts. The need to accurately describe what it is we want our code to do forces us to dissect and refine our own understanding and mental models, to be precise about what our words mean, to peel back layers of abstraction. The desire to build systems that exceed what we can keep in mind at any one time forces us to categorize, to generalize, to build abstractions. Being confronted with compilers telling us we are wrong and more often than not being right about it teaches us to accept errors, to embrace and learn from them and to adjust our beliefs to conform to the evidence of reality. I believe learning to code improves more than just coding, it shapes ones mind.
Teaching shares many of the same qualities. In having to break a topic down and extract the essence to provide a reasonably structured explanation, I am bound to increase the depth of my own knowledge. Interacting with students and being confronted with questions that do not even appear in my own mind, I will naturally acquire a better understanding of the depth of my own ignorance.
I believe writing, too, does have that quality. Being forced to organize ones thoughts in order to put them into words others can understand and follow, to phrase them for easy consumption, exposes flaws in our thinking, necessitates a deeper understanding.
I recently came across a quote summing this up perfectly9:
Writing is nature’s way of showing us how sloppy our thinking is.
I have an annoying tendency to encourage others to put themselves out there, to show their work - however imperfect - to not be afraid of criticism but embrace it and follow the maxim that if we are to be condemned, we should at least be condemned for what we really are. Yet, I never really swallowed my own medicine, I failed to heed my own advice and it is about time I changed that.
One of the many reasons I failed to do so before now is my belief that the final product of whatever endeavor I set out to complete itself does not adequately reflect the work put in. I strongly belief that it is more important how one thinks and arrives at a conclusion than what the conclusion turns out to be.
Consequently in my case, I always felt very very afraid of releasing code into wild, fearing something in there - taken in isolation - could reflect badly on me as a developer.
Don’t get me wrong, I am convinced well written code can and should stand largely on its own and littering with comments is horrible practice. If there is something relevant the code does not express on its own this more often than not implies it ought to be rewritten, not commented.
What I am not as convinced of is that all of my code is well written10. Furthermore, there are many considerations that go into writing code that - whilst not directly relevant when working with it - are highly interesting when trying to learn from it. Thinking about the overall design process, alternatives considered, reasons for choosing specific trade-offs over others and so on can be quite illuminating and educational.
Therefore, instead of just throwing the result out there, I feel much more comfortable sitting down with someone and explaining my process. Blog posts doing the same thing seem like a reasonable middle ground. They allow me to share so others can profit whilst simultaneously satisfying my delusions of grandeur and desperate need to justify my decisions.
And then there is my vanity. I have always been simultaneously desperate for attention and horrifyingly scared of it. Always wanted to be adored but never wanted to be seen. I have decided to change the latter.
A recent personal incident quite uncomfortably forced me once again to confront my own mortality. Whilst I fully support the efforts of anti-deathists like famously Aubrey de Gray11 and believe vastly prolonged healthy lifespans are worth striving after and all counterarguments I ever heard or read are essentially either ageist or stockholming death12, I realize that reaching this goal is at least somewhat uncertain and reaching mortality escape velocity within my ‘natural’ time is reasonably unlikely. Simulation hypothesis, the nigh inevitable emulation of all our minds in some coming supercomputer, parallel universes and similar arguments aside13 as well as the logically sound presumption that all religions promising some form of afterlife are various degrees of bullshit, I have no choice but to come to terms with meeting our omnipresently lurking bearer of the scythe. I should not fall in love with him14 or believe death to be the best thing since sliced bread15, yet if I am to be a hostage anyway, I might as well enjoy it and try to reach an arrangement we both can - ironically - live with. At least for the time being.
Quite morbid, but how is this even remotely related to a puny blog like this?
In the 2004 movie Troy there is one scene in particular which managed to leave a lasting impression on me16. Before deciding whether or not to join the war effort, Achilles mother explained what she foresaw the choices would entail. Were he to stay at home he would live a peaceful and happy life, be loved by his wife and children who would remember him fondly as long as they lived. Yet in time he will be forgotten. Should he, in turn, decide to fight, his life will be short and painful for both him and his loved ones, but it will become legend, his legacy will last for thousands of years.
I always fancied, when faced with the choice Achilles was presented, I would immediately choose glory and remembrance over the pleasant, but ultimately forgettable life17. Yet the harsh reality of the matter begs to differ. Thus far, I tumbled along in silence and solitude, gathering all my thoughts, ideas and actual products in the comfortable and criticism free dark recesses of my mind and hard drive. If I were to perish today, all that’s left of me is but a few memories, a bunch of junk and maybe some lingering resentment. Within a few years or decades at best no one will remember I was even here. I left no footprint on this world and what little marks I produced are centralized and like prints on sand in the desert, inevitably blown away, leaving no indication anyone ever tread that path.
If my ultimate demise is bound to be inevitable, then I want to at least make it noticed. Produce work that endures beyond me, that reflects and preserves what little it can of my person and personality. Which is why I have to change my behavior. Why I have to publish and showcase as much of my work as possible. Which is why I need to start building a legacy, no matter how insignificant.18
I have been accused of being a blind idealist before, but this last argument does not quite fit the character. It betrays a certain hypocrisy. Whilst I would love to pretend that this is all about helping and educating people, about sharing thoughts to benefit others I cannot honestly claim to be quite as selfless.
All of the reasons outlined above might be good and honest ones I really do care about. But what - in turn - is my reason for caring about them? Do I teach because I want people to be educated? Or because I want it to be me they are educated by? Do I share ideas because they are beneficial? Or do I share ideas because I want it to be my ideas that are spread? Does it matter?
Do intentions matter?
So my intentions are impure. Apparently, whilst I do wish to educate and help people, some non-negligible amount of my motivation is more self-serving. I want to improve. I want to advertise myself. I want to be known, admired and remembered.
A commonly shared tip for writing articles online is to use the word “you” frequently. I am supposed to talk to you, dear reader, to address you personally, to make you feel valuable and relevant. I should ask not what my readers can do for me, but what I can do for my readers. It is about you. It is not about me. Except it really, really is.
Yet: Do my intentions even matter? It is not entirely self-evident that they do. I may be pretentious. But if I pretend to be good, aren’t my actions bound to be as well?
If a rich politician gives to a specific charity because he or she hopes to sway voters of a specific kind, to leave a specific impression on some specific segment of the population, why does it matter? Doesn’t the charity get money either way? Could this not save lives?
Of course it can, yet nonetheless I proclaim there is an effective difference. I am clearly oversimplifying a bit, but I believe intentions matter partly because they are predictors of future behavior. The aforementioned politician will likely cease their donations once elected and nearing retirement or if public sentiment changes. Someone truly believing in a cause might not sway their opinions and actions quite so easily.
If I start a blog because it might increase my visibility and hiring prospects, will I stop once hired or sufficiently well known? If I start a blog due to a passion for sharing and educating, I clearly won’t.
Yet none of this actually matters. I can truly care about others and myself simultaneously. Human beings are weird like that. There is no real conflict here. If I am unsure if my real motivations could be predominately selfish, but I don’t want them to be, all I can do is continue. Keep doing what I am doing to prove to others - and to myself - that what I claim are my motivations actually are and in so doing turn my words into truth either way.
Some lies can become truth if enough people believe in them. For some its sufficient to believe strongly enough oneself and act accordingly.19
So here we are. I believe my voice is one that deserves to be heard. One that can be of some benefit to a non-empty subset of the population. And I shall prove it to myself and the world.
I am going to write about my personal projects, explaining my design and choices in detail, in the hope that it will be useful. I will gradually share my code and finally publish some of the things I have been holding back for far too long!
I think I will start by writing about emulating the original GameBoy, as that is a more recently started and quite inconsequential project of mine which has been done to death by far more experienced developers than me. So if my writeup happens to be unclear but still manages to ignite some curiosity, there are myriad other sources to consult. After that I will probably publish and detail my chess engine, my forays into hobbyist operating system development and a scripting language I designed for use with my retro game engine.
Whenever I encounter or learn of anything new and interesting, I shall consider writing about it. Whenever I repeatedly explain something in private, I shall assume it could be of general interest and try to put my explanations in accessible writing for a broader, public audience.
If mood strikes, I might even write some generic articles delineating my thoughts and feelings on topics far removed from software development.
I am also open to suggestions:
If there is something particular you, dear reader, would like to learn about and it happens to be within my area of expertise I will gladly be of service and try to write about that.
I hope someone out there enjoys part of it. If so, even if I stop and fail, it has been well worth it.
Thank you for staying with me till the very end. As compensation, you shall receive a cookie 🍪 and my eternal gratitude. How on earth did you manage to read all that?
well, technically that is off by two now… ↩
if I were this post would be even more redundant, wouldn’t it? ↩
by literal I obviously mean figurative and just chose the word to annoy purists. I have no clue what a cornucopia of search results could possibly look like… ↩
and in so doing getting some much needed writing practice ↩
and often when it did not ↩
“bewegbar” is german for “movable” ↩
In a youtube video of a talk about operating system development using Rust, where Leslie Lamport was cited as citing Dick Guindon with putting the statement into a comic strip. Well, extra levels of indirection are a good thing, right? I’d also like to add that whilst I enjoyed the talk, I disagree with part of it. I believe the osdev wiki is an amazing resource. ↩
so I do try. Perfection is something I strife after, alas it remains elusive and unattainable ↩
I hope by applying this term I did not misrepresent his position, which I believe is more nuanced than it would suggest. If so, I apologize ↩
more often than not both ↩
which all also raise quite interesting questions of identity ↩
so one has to admit that cape does look rather awesome ↩
which incidentally does a pretty good job of delaying it ↩
it being the only scene I really remember might reflect somewhat on the overall quality of the movie, but lets leave that aside for now. I also don’t know if the original Illiad contained an equivalent, as to my great shame, I have never read it ↩
ok, i don’t think id be down for all the fighting and killing bits involved as i am a rather anxious and fearful person, but you get the general idea… ↩
and it does seem quite insignificant ↩
I know, I could have simply written “Fake it till you make it” and be done with it, but that is getting kind of old now, isn’t it? ↩
Comments powered byTalkyard.