2023 Q1 Update: First Months of Consulting & ModernRetroTech
So here it is: the first 2 months of me starting my indie journey are done, and I feel quite happy about how it goes so far. I want to document how it goes both for myself & for others who might want to try this road. In accordance with the lovely business tradition, I’ll try to do it quarterly.
Freedom is the ultimate value, at least for me. And I feel much more free when I work with clients vs. being employed by some company. Since I already did it for several years (between 2015 and 2018), getting back to consulting felt like getting into those comfy old shoes again.
Of course, you lose the certainty about the future that comes with a stable pay check (doubly so in a country with strong employee protection laws like Germany). But what you gain far outweighs it for me: the ability to choose when, how, how much, with whom, and on what you work. No politics. No office gossip. No useless meetings. No tip-toeing around people who bring a tad too much of their true self into the work or associate themselves with the products of their labour to such a degree that any rational conversation about technical merits and limitations of the system in question becomes impossible.
Especially at the time when a lot of people are realizing that their relationships with the company they work for were always transactional, not having to deal with all the manipulative bullshit that companies tend to promote internally to gaslight their employees into making those transactions highly unfair to said employees is delightfully liberating.
On a more practical note, that’s what happened so far:
- Registered via Elster - thankfully, my boyfriend has an MBA with tax specialization and helped me with the somewhat horrifying form.
- Got all the magical letters from the various tax authorities - those are needed to open the business bank account and invoice clients.
- Tried to open a bank account with Kontist, but that didn’t work - they are accepting neither Russian international biometric passports nor German Niederlassungserlaubnis in their KYC, and point fingers to BaFin. The support was kind enough to send me a document from the said authority… that listed my passport among those that are accepted 😂. So, I ended up opening an account with Qonto instead, which I can recommend - no problems with verification for passport holders from most countries, they support both SWIFT & SEPA transactions, both web & mobile apps are decent, built-in invoicing tool, etc.
- Setup an integration with an accounting software (Sorted, can also recommend).
- Registered on Malt and added a Contact Me form on this website. Also refreshed my old Upwork account, but I’m keeping it mostly as the last resort option - hopefully, I won’t need to use it, but it can be helpful in a pinch - still got 5 star rating there and a lot of good client feedback.
I got no leads so far from Contact Me, but got 2 leads on Malt. One turned out to be spam, the other one turned out to be my first client :) The client was a division inside one of the largest German media conglomerates, which is pretty neat. Finished that project (was a rather simple but somewhat labour intensive data pipeline rewrite + data analysis, cleaning, and backfill). The money from this one project is enough to support me for the next quarter without getting deeper into my savings, which is splendid.
Also, paid my first VAT to the German tax office. The whole submission of the VAT report through Sorted & actually paying was quite painless, because I kept both my expenses and invoices organized from the get go - I guess helping a medium-sized company through an audit a year ago when their records were not organized scarred me for life :)
I can see that my impressions on Malt are growing (got more than 1000 search appearance and around 40 profiles visits last week - a huge change from around 30 search appearances and 0 profile visits in the first few weeks I was registered on the platform), but of course the long term idea is too get as independent as possible from external platforms and build my own network. Which brings us to …
ModernRetroTech: Reviving my YouTube Channel
However delightful consulting is in comparison with a typical employment, it’s still not the ideal way I’d like to earn my money. Now, growing and monetizing technical YouTube channel is far from easy, and even if I will be able to keep up my ideal schedule of releasing something every couple of weeks or, better, every week, it will take quite a bit of time before I start earning anything from it, let alone enough to support living in Berlin.
Yet, I see it both as something that I enjoy working on, that can have some value that transcends doing a project for somebody (since sharing knowledge with a large enough audience is more valuable in my personal scheme of things), and which can be a perfect spot to both promote those consulting services in the meantime + eventually promote some of things I want to build.
Still, I didn’t do enough in the last 2 months. I did released 2 videos that were well received (uno, dos), became comfortable with the new editing software - I switched to DaVinci Resolve, and transferred my styles and templates to Figma instead of Sketch that I used before for my slides & graphics.
I’m very happy with Resolve, but Figma is a mixed bag. Let’s see, maybe I will do some contraption for myself to cut down on time / do better graphics in the future.
For now though, my focus is on releasing a new Rust miniseries - I was working on the code for it on and off for the last 3 weeks or so, and I’m finally done with it, so now it on to filming / editing / hopefully releasing the first video this week. My perfectionism got the better of me again and that’s why it took so long, but c’est la vie.
Apart from that, I have lots of ideas for new videos, and once the series is done, I hope to take some Elixir / Julia / Python topics into the mix again. Though Rust probably will be the focus on my channel moving forward still (it is the best language to showcase most of the algorithms and techniques I want to talk about), I don’t want to become a Rust-exclusive channel because it’s limiting in the range of topics I can cover + I do need some variety to not lose the interest myself. And a lot of exciting stuff is happening with all of those!
I also finally setup a Github Sponsors profile. Nothing there yet, but let’s see if that miniseries can get me some sponsors :)
Prototypes and Family Matters
I sadly got no time whatsoever to work on any of the prototypes I was sketching for a couple of apps. Apart from consulting and the work on the channel content, we had a loss in the family and that occupied quite a bit of time and mind space over the last month, and I needed to go to Vienna to attend the funeral. This stuff is never easy, but ultimately the reaper will get us all eventually - I have regained some mental balance over the last couple of weeks, and thinking about work makes me energized again so I started tinkering. Let’s see where that goes.
Languages (Not the Programming Ones)
On top of that, I kept my Japanese studies up. It has been 9 months now since I started learning, and I’m quite happy about my progress. I’m at the level where I can read manga targeted at 14-15 y/o demographic without needing a dictionary much, I can understand a lot of conversational content if it’s not too hard / too specific, can write around 300 kanji and can read more than that. Naturally, I don’t need to think much nowadays when writing/reading hiragana and katakana. I’m watching a lot of native Japanese content nowadays on Netflix and YouTube, and though it’s still sometimes challenging, it’s becoming better and better.
My German became a bit better this year because I spent some time in Austria, and somehow I always find it easier to speak German there than in Berlin. I’m sure that both more uniform pronunciation Viennese tend to have and the lack of the “let’s switch to English” experience when people notice my accent / very imperfect grammar has a lot to do with it. Still, I plan to go through the grammar again in the next couple of month and started ramping up the amount of German content I watch (Die Kaiserin turned out to be good, though highly historically inaccurate; Im Westen nichts Neues was also quite good). Gotta get better at it :)
Sidenote: The AI Hysteria
A lot of people got very agitated lately about the whole “will we have work if LLMs can code” topic. Some personages of various believability even went as far as to call for governments to regulate the space (oh, that always go so swell, doesn’t it).
I find the FUD ridiculous :) In fact, I’m very excited about what can become possible soon. Perhaps having been somewhat involved in various (very small scale in comparison, but still) ML projects over the years kept me both excited but also realistic about the promise of that technology. I don’t expect that we will achieve artificial general intelligence any time soon, I don’t believe that when it is achieved it will be anything like our own human intelligence, and I see no reason why our human failings will somehow translate to it and lead to the destruction of mankind or some other apocalyptic scenario that public invariably gets scared about whenever any new technology gets hyped. I also fail to see any spark of “intelligence” of any kind in either ChatGPT or GPT4, all the nice demos notwithstanding.
But this is a theoretic talk. What is a more urgent question for some people is the way those tools can impact our own work. Thankfully, the most direct way to learn that is very accessible right now: you can just try. I did exactly that, and my results were quite mixed - more on that in a second, but first the generic approach I use whenever I encounter something that promises/threatens to change the way we work.
It’s quite simple really: if indeed this technology will completely eliminate the need for us to type
exhaustively precise instructions for our silicon friends, I’ll be very happy. It means, for example, that I
will be able to get those prototypes I mentioned earlier not in several months, but tomorrow. The timelines will
get shorter, but in the end you still will need to know what to do, you’ll need to be able to explain
what it is you want to be built, you will need to know which questions to ask, how to set up pricing, etc.
In other words, no more aligning
<div>s, only fun product work for me.
Will it somehow devalue those 20 years I spent learning & honing my programming skills? No, not really. Those skills fed me, allowed me to meet amazing people, allowed me to escape the frozen hellhole I was born in (sorry, but that’s how I see the infinite homeland - YMMV). But also, the problem-solving ability I developed, the system thinking, the product and UX skills will still be useful. Even if I will never need to write another topological sort in my career, knowing how that computation works and what I can do with it will allow me to build systems that others won’t be able to build. I see it as a win/win - all the knowledge I gained will still be an advantage, I will just not need to type as much anymore.
In fact, a lot of my learning and my career was focused on typing less - that’s why I was so easily sold on the functional programming all the way back circa 2010 - I can get the same results, but faster, with less typing, with less mistakes. It’s why I’m so excited about Rust: I can write the code that is as fast as C, but I don’t need to deal with all the footguns. That’s why I still love Python: because to this day, miraculously, I can express some things in a couple of lines that may take way more otherwise.
Typing less allows you to see the bigger picture. And that becomes progressively more fun. I had more fun running a data department than I had when I was a junior writing this little form over there. And a lot of that came from being able to accept that sometimes writing less is achieving more.
But that poetic interlude aside, the reality is that those tools are nowhere close to being as transformative as they are sold currently, at least not yet. I just didn’t find Copilot that useful so far. I tried it for a bit, but overall I rarely write the kind of repetitive code that is widely featured in the demos, and I use languages that just don’t have a comparable amount of public code compared to Python or Go, so my experience is not necessarily the most representative. Plus, my work is often reviewing other people’s code and fixing/optimizing it - not something that this particular tools can help with. Overall, I found that I don’t usually use it, except for some very basic applications. You can also see that currently Github itself is showing that the level at which people accept its suggestions is pretty low:
In a recent evaluation, we found that users accepted on average 26% of all completions shown by GitHub Copilot.
From the FAQ, “Does GitHub Copilot write perfect code?”, emphasis mine
ChatGPT turned out to be significantly more useful. It tends to produce pretty mediocre code on first prompt, but it can be cajoled into improving it. I tried to make it write the shunting yard algorithm for one of my upcoming videos, and results were somewhat okyish, even though I ended up rewriting it completely from scratch in the end anyways.
The initial prompt & the first version of the code - note the repetitiveness.
The first “refactor” prompt.
Fragment of the resulting code after the first refactor prompt.
The next refactor prompt.
Fragment of the resulting code after the second refactor prompt - note that the repetition is gone.
In other words, it can be a somewhat helpful tool if you can guide it to an adequate solution. Of course, being able to provide such guidance happens to be one of the main measures of developer career progression.
Still, I believe that currently it’s just not worth it in most cases. It’ll be faster for me to open wikipedia and write this algorithm using the pseudocode it provides than guiding ChatGPT to correct its code to an acceptable degree before pasting it into VS Code to discover some compile errors.
Algorithms aside, most real world work involves working with lots and lots of existing code - and a lot of it is not publicly accessible. You cannot use this tool in those circumstances. Same with the code generation by non techies - it’ll be swell if it was useful for them, but currently the existing no code tools such as CRMs are better, more predictable, and less labour intensive solution.
Where I see ChatGPT’s, Copilot’s, etc. value right now is in breaking the creative block. Sometimes you just stare at this empty file and don’t know where to start. Getting anything to work with to kick the process off is just what the doctor ordered for that case: and then the quality of that first draft doesn’t really matter anyways.
Of course, there are people who will take that first draft and try to sell it to people, commit it into production code bases, or open a PR to an open source project with code that both terrible and doesn’t even compile. For the first 2 there are non-technical solutions. For the last one, it might be a bit more problematic, but it seems that there are tools that can recognize LLM generated stuff quite well too already. Perhaps we can filter that garbage out this way. It’s really not that different from all the other spam.
And when those technologies improve? Cheers to progress.