30th of November, 2021
This blog is a few years old, and during its time, it has had a couple of
different style changes (and a couple of domain changes). Initially, this blog
started in 2018 when I was in school, and I thought some blogging platform
could improve my writing.
Most of the posts back then were some assignments for various school related
works. Blog was a clever publishing platform for those and was accepted in
many courses. Most of those have since been deleted and forgotten.
During those days, this was very tech-oriented, focusing more on writing
various tutorials about different subjects, mainly revolving around
distributed computing. Then I landed my first job as a DevOps engineer, where
I was able to put these tutorials that I had written to
practice. Unfortunately, about the same time, I started losing my motivation
on regular writing mainly due to time constraints.
Around late 2020, early 2021, I started to rekindle my writing habit with
different styles and topics. Then I began to write down my thoughts about the
world around me. So many topics were about music, art, some tech stuff here
and there but not really "technical writing". I was mainly sharing my opinions
about the various topics that interested me. While I enjoyed this little bit
more pondering writing style - some could call ranting - for me, it felt that
it was missing something.
I missed the technical writing. But now, since I had established a particular
style in my writing, it felt out of place to start writing about various
geeky subjects revolving around computer science. That being said, all those
writings in the tutorial and guidance way or these recent little bits of more
analyzing way of writing hasn't been gone to waste. However, I feel that now
at least, I know about what I want to write.
I think the combination of both will suit me the best. At the same time, I don't
necessarily see myself writing some basic how-to tutorials anymore. But I feel
that technical analysis with various concrete implementations would be
interesting to research and write. My main interests have generally lay in
music, arts and how these intertwine with computer science. However, since my
professional life is linked to topics such as designing and implementing
distributed systems, distributed computing in big data environments, systems
engineering, performance, reliability, and compilers and programming
languages. I feel that those might also be a regular visitor in my ramblings.
My professional life has also revolved around these topics. So I feel that
I'm able to write a lot in conjunction with my work. Especially since working
with large distributed systems, you're bound to stumble upon some weird
things, making this analysis-oriented technical writing is an excellent tool
for thought. I would want to have this semi-regular to regular writing habit
that I once had, but that is something I can't promise. Post at a time!
But since this is still my blog, I feel that occasional rambles and shitposts
about various topics are in place. Do people want to read those? Probably
not, but every once in a while its fun to vent. So going forward, I think you
can expect a significant portion of more technical commentary with smaller
portion of things that entertain and occasionally horrifies me.
20th of September, 2021
I'm very prone for procrastination. While I wouldn't say that I have focus
issues, I have noticed that I can easily spend hours on non-essential sites that
don't bring anything to my life. Social media has been one of them. I have
always had a pretty weird relationship with social media. I joined Facebook and
Instagram a long time ago because many of my friends and family were already
there. While I never did post stuff actively, I always noticed that I just ended
up mindlessly surfing these, especially on Instagram.
A couple of years back, I became conscious about this and decided to delete my
accounts on these platforms without giving too much thought about it. While
leaving these platforms were pretty easy for me, I noticed that I had just
replaced these with some other platform, YouTube in my case. After which, I
started spending countless hours on that platform instead. Back then, I didn't
consider this habit as bad as mindlessly browsing Instagram or Facebook despite
it being the same thing. I think I just rationalized it to myself being
educational or informative in a better way than other platforms.
Year or two passes without Instagram or Facebook completely fine, but then I
wanted to start using them again for some reason. Maybe I thought to myself that
I had already been cured of this disease so I could have a healthy relationship
with them from now on. I also had professional reasons behind this since I
thought that these platforms offer a great way of marketing your art to others,
which is true in some cases. However, very quickly, I started noticing similar
behaviour when I last was on these platforms. So after a couple of months of
trying to get back in, I just felt repulsed by them and decided to leave them
again. When it comes to marketing, that is not for me. I understand the benefits
of being an artist in social media. Still, since I mainly enjoy that as a
passionate hobby, I don't see the need for being on social media.
So at the time of writing this, I think it has been about six months or so of
living without these. Still, I'm very conscious about my unnecessarily large
usage of YouTube, News etc. While comparing my use with Instagram, I still
wouldn't consider watching YouTube or regularly checking news as bad as
mindlessly scrolling through your feeds. I still noticed similar behaviour on
those I struggled with, for example, with Instagram. I became conscious about
randomly picking up my phone and scrolling through news even though I had just
read them or just letting YouTube's autoplay roll for long periods without
giving too much thought about it. So I wanted to tackle these habits.
I have noticed that the most extreme methods work the best when fixing some
bad habit, at least in my case. So I didn't want to ease when trying to have a
healthy relationship with these applications but instead went cold turkey
immediately. Also, to help me in this, I wrote a simple application that
allows blocking distracting sites "completely".
So how has this worked for me? I think great! In the beginning, I noticed how
much free time I have when I don't spend it on useless things. Also, in the
beginning, I occasionally picked up my phone by instinct. I quickly realized
that I didn't have any applications to spend mindlessly surfing, so I quickly
grew out of this habit. First, I felt slight boredom when I couldn't spend time
on these apps, but thankfully I realized that this spare time needed to be used
elsewhere. Before this, I was already reading relatively a lot, about three to
four books per month, but I have almost doubled that number nowadays. I also
wrote about time management between multiple passions a while ago where I
pondered how I manage time between, for example, programming and music. After
ditching distractive sites entirely, I have felt that the time management
between these activities and my work life hasn't been an issue. It's
straightforward to find time for various pet projects and serious work outside
my work life since I don't spend my time on useless stuff anymore.
Do I see myself using these applications in the future? Well, I want to read the
news and continue to do so, not just constantly. I usually catch up with recent
events in the morning, but I don't desire to install any news apps on my
telephone. When it comes to these streaming platforms, YouTube, Netflix, etc., I
could live without them. There are lots of good information on these platforms,
so if I need to watch some video, I can allow myself to do so. However, I don't
want them to control my life in a way that I'm uncomfortable with.
10th of August, 2021
I have always enjoyed reading about other people's productivity hacks and their
workflows, in general, regarding whatever they might be doing. However, I often
stumble upon reading how people maintain an extravagant lifestyle with dozens of
different hobbies, interests, and passions with ease. So it makes me wonder how
they manage their time to maintain a healthy level of participation in their
interests without burning out.
I don't have dozens of different passions or interests in my life, but my
passions tend to be quite large on their own, so when combining those with 40
hour work week, I need to think about my time management thoroughly. These
passions I would consider to be writing, music and programming. Fortunately, I
currently work in the tech industry, so I can make a good living by doing one of
my passions. Writing on its own isn't necessarily a huge topic/interest, as it
only consumes time, but the practice itself is pretty straightforward. On the
other hand, music is time-consuming, and it involves many different activities
in my case. Sure, you could argue that writing includes other practices, too,
like planning what to write, but music is on another level. I play multiple
instruments, which I record for myself and others in my home studio. I enjoy
composing tunes, add some mixing and mastering to this, and you need to
sacrifice a lot of time for this. Programming is also something that I enjoy
spending my time on. While I do it for a living, what makes me truly like it are
the projects I work on in my free time, whether it's my pet projects of various
sizes or some open-source projects.
Finding the time and focusing on the task at hand isn't necessarily an issue on
its own for me, but it's more about maintaining a healthy balance between all
these passions that I hold dear to me. Although that being said, I would
consider being a very gifted procrastinator, so focusing on the task at hand can
often be difficult for me. However, focusing becomes no more an issue once I've
gotten into the flow. A more significant issue here is often finishing projects
rather than starting a new one (which I feel is entirely another issue to
improve).
When I work on my passions, I tend to focus for days or weeks on one passion,
e.g. programming, neglecting my other passions like writing and music. This on
its own isn't necessarily a bad thing since I don't feel that I'm wasting my
time when I'm doing something that I enjoy and something where I'm able to get
rewarded in multiple different ways. But I would like to maintain an equal
balance between my passions.
Tools to the rescue
A while ago, I started reading about how other people have managed their time
with multiple passions/hobbies, and almost unanimously, everybody used various
schedules for this. So I have already used a "life management" system for a long
time to handle all my to-do lists and schedules related to my home and work life
(insert praising words about Emacs' org-mode here).
I'm not going into details about how I manage my life with org-mode, but if
you're interested in the tool, I would recommend going through articles found at
Org for GTD and other Task management systems and from Rainer König's OrgMode
tutorial
I realise that I have been missing for a long time in my current setup because I
haven't scheduled when to work on what project. While I've split my free-time
projects into sub-tasks and occasionally schedule and deadline when to
work/finish those, the work has always been very sporadic on this front. The
result has often been that I work for an X period on one project then move on to
another, so I often just forget what I was supposed to do on the earlier
project. For me, this often leads to unnecessary postponing of tasks or
cancelling/removing them completely. I also quickly start saying, "I'll do it
tomorrow", which everyone knows won't happen.
Starting light
So I started to approach the whole concept of time management between multiple
different interests was to make dedicated timeslots and days for whatever I
might be working on. I maintain numerous ongoing projects that don't necessarily
have deadlines but are just larger projects that I want to work on from time to
time. Then these projects have sub-projects which are usually scheduled with
deadlines. These projects and sub-projects might include something related to
work, home, open-source work, recording or simply just writing something.
I nowadays approach working these by dedicating timeslots for something on a
specific day. My work life and day-to-day home stuff take a good portion of my
days, but I try to use it as efficiently as possible the rest of the time. So on
Monday, I might work on some programming related endeavours based on my backlog,
Tuesday something else and so on. The way I still approach tasks haven't been
changed in any way, as in I still manage my tasks and TODOs and keep track of
them, but nowadays, I just dedicate specific days for specific interest/passion.
Conclusion
This way, I don't feel that I'm neglecting the stuff I want to work on. Issues
with this kind of approach are the context switching almost daily. However, this
kind of switching isn't necessarily a bad thing. I don't want to think about
work-related topics after I've "clocked in the hours", but I want to do
something either to relax or move my thoughts elsewhere. Issues that I've mainly
stumbled with are that when you might focus on programming one day, you focus on
music. While this switch on its own hasn't been too bad in my case, but when I
get back to, for example, programming after doing something else for several
days, it always takes a while to get back to the flow. But I do believe that
this is just missing practice in the world of managing multiple different
passions.
I have now split my time between multiple passions for several weeks, and this
is an excellent way to go. It has also taught me about the stuff that I
genuinely want to work with, since when you write down what you want to do and
when it's easy to spot the stuff that you don't want to work on or just don't
have an interest about it. So this also works in my case to find the topics that
genuinely interest me. Will I continue to manage my time like this for long?
Well hopefully. I feel that this way, I can contribute to all the stuff that
makes my life interesting, so obviously, I wouldn't want to miss that.
28th of July, 2021
Since the discussion about artificial intelligence has become mainstream, I have
started to ponder AI's possible impacts on our day-to-day lives. While I work in
tech, I come from this "culture and arts" background, at least a little bit. I
did some theatre when I was young and have worked with music in one way or
another for most of my life. This background has got me thinking about how AI
could affect these fields.
We have already seen multiple interdisciplinary works mixing artificial
intelligence with various art forms, like drawings, paintings, music
etc. Already drawings and paintings generated with AI present a superb quality
in those, in which you cannot make a clear distinction from if these were
created by AI or an actual human. On the other hand, music is not quite at that
level yet, at least in my opinion. At least in the form of an entirely generated
song by AI. That being said, I have heard great pieces which utilize both human
touch and AI, where AI plays more of a supportive role in the whole
work. Similar things can be seen in all creative endeavours where AI could be
utilized.
If AI gets used more and more in these creative projects with great success, to
me, it raises a question, can human art be entirely replaced with AI? I believe
it would be naive to say that it couldn't. But, considering the possible future
where we cannot distinguish humans from computers, how could we distinguish this
kind of smaller medium like song or book on how it was created or who created
it? As a consumer of these kinds of mediums, does it matter if some algorithms
made your new favourite novel to provide the same feeling that you might get
from reading a regular author's book?
They are taking our jobs
To put it shortly, AI can replace anyone's job who happens to handle bits in one
way or another. This means that AI can do it way better than you ever can in
these kinds of jobs. So when we talk about "creative jobs", how you can do it
better than someone else? Are you possibly better at drawing than someone else?
Or can you compose better symphonies than someone else? What makes you better?
Is it purely a technical thing, or is there something else? When we talk about
painting or drawing's technicality, sure, you could argue that your "pen
strokes", etc. might be better than someone else's. But does this make it better
art?
Already there has been a trend of AI-generated music populating different
streaming platforms. Currently, that music has almost always been something
simple, in which AI definitely can excel. This could be called elevator music or
Muzak. This kind of music is most likely something that many people wouldn't
mind that it's generated with a computer and lacks the human touch. But how
would people feel if there were a chart-topping song entirely generated with AI?
Again, I believe many people wouldn't like that, other than a few tech geeks who
might think it could be cool (me included).
Could then AI fully replace the human touch in our art forms? We might wait for
that to happen for a very long time. Still, as I said earlier, it would be naive
to think that this couldn't happen, especially in the future, where we have
reached a certain level of intelligence where we can't distinguish each other
from humans and machines.
So what could this mean for our "blue-collar" artists? What could be the driving
force for them to create new art if the audience doesn't know if it was created
by computer or human? To me, that seems very grim.
Creative programming
If we can't beat them, join 'em? Right? If we think that this will be the
future, while it might not be a very uplifting thing to consider, it'll most
likely be very realistic. While I think that AI will have some bad repercussions
on our life in the future, I also believe that it can be used for great
good. Whether AI is used in health, fighting climate change etc., there are many
good use cases. In my opinion, utilizing AI in the arts is also one. Should you
create your next song or novel entirely with AI? Possibly no, although GPT-3 has
shown some great results on how good text it can write.
I like to write or play music, so I don't want to replace the artificial process
that I enjoy so much. So the way I could utilize it in my creative endeavours is
by working with it side by side. Possibly, it could generate some ideas for me
for my next blog post, novel, poem or whatever. For example, AI could be taught
with the text of a long list of your favourite authors or songs by your
favourite bands. Based on this knowledge, maybe some of the possible ideas it
could generate could then be finished by a human giving the final piece that
human touch.
Conclusion
So while the future might look dark and grim for us, maybe we could make some
use of it, so at least we might have a little bit of enjoyment. Thankfully we
are a long way from this singularity that many people tend to talk about, but
the trend has shown to be moving towards that kind of future. So rather than
fighting against it, at least personally, I want to make the best use of our
technical achievements in one way or another. Who knows if the next big novel or
piece is created with AI or some other great technological invention. That being
said, I have already found many great ways to utilize AI in my creative
projects, so who knows what might come out of those.
23rd of June, 2021
Code reading has always been this activity that I've just done without really
giving any thought to it. But despite this, now, when I look back at this habit,
I see it as immensely beneficial. This habit caught my attention when I was
reading Peter Seibel's book Coders at Work, in which there is a section where
Peter asks about code reading from his interviewees. His interviewees tended to
be unanimous that code reading is very beneficial. Still, while reading his
interviews, it left a picture that the practice itself seemed to be lacking even
within those heavyweight programmers. Exception in this being Brad Fitzpatrick
and, obviously, Donald Knuth. If these programmers speak for this practice but
don't do it in the wild, then who does? This overall, it seems pretty odd to
me. Seibel made a great comparison regarding this when he compared programmers
to novelists, where if novelist hasn't ready anyone else's publications, it
would be unheard of.
I've always enjoyed reading others' source code mainly, let's face it, to steal
some ideas. But doing this, I've received a long list of different lessons,
ideas, and patterns, which I've been able to utilize frequently in most of the
work that I've done after these revelations.
Pattern Matching
One of the most significant benefits that I've learned while code reading is
that you're able to learn various patterns after a while. Sure, every project
might seem cluttered and hard to understand for a while, but when you get the
gist of it, you start to realize why this or that has been done the way it
is. Furthermore, when you've understood some of these patterns, it gets much
more comfortable to start noticing them in other similar or not-so-similar
projects. Fundamentally this means the graph of WTF-per-seconds starts getting
less and less.
I have also noticed that pattern matching helps understand the whole project
under study itself. It would be best to try to comprehend a large open-source
project at once but in small pieces. Then, when one of these pieces is
understood, it can help tremendously understand the other pieces.
Benefits of reinventing
It can often be pretty hard to understand the functionality of some part of an
extensive program by looking at the code. So quite often, to get a better grasp
of foreign code is to reimplement the way you would write it. This way, you're
able to abstract the bread and butter out of the program and utilize it however
you might want.
This kind of reimplementing can be quite hard on bigger projects. The best way
to reinvent something in those projects is to change something and see changes
in the new compilation. For example, try to change some text in some menu or
output. This way, you can easily test how well you understand the foreign code.
Code as a literature medium
Many people say that code is not literature because you read it differently from
prose. In my opinion, this doesn't necessarily need to be the case. Overall,
code is written for humans first and then machine second. An excellent example
of this is Robert C. Martin's ravings, in which he often recites that the "code
should read like prose to be clean", which I tend to agree with. Another good
one is Donald Knuth's approach to literate programming. However, the latter one
is more about embedding code pieces amidst what one could call
prose. Nonetheless, this kind of system makes the code much more readable since
writing is such a big part.
One thing that I believe makes people think code is not literature is syntax
highlighting. I don't use it. For some reason, I never grew used to colored
text. Of course, I might be a bit biased, but when I turn on syntax
highlighting, I tend to focus on the wrong things in the code, making it so that
it doesn't read like prose anymore. Removing syntax highlighting has allowed me
to grasp the whole structure better. Is this true, or does it work for everyone?
I don't think so, but that's how I feel.
Code reading club
Based on these thoughts and Seibel's ideas, I decided to try some code reading
clubs in my workplace. Initially, what I had in mind for this kind of club was
choosing one library/program per week/month or whatever and then dissecting the
main logic behind it and discussing it. However, I quickly realized that this
would most likely work since people have different interests in programming. For
example, I don't have an interest in various GUI applications or other frontend
technologies, even though they might have some good ideas behind them.
So a much better approach would most likely be that person chooses one
library/program and then dissects it sharing the findings to the rest of the
group. This dissection done by someone else than yourself could easily inspire
you and others to dive more deeply into the code itself, even though it might be
a little bit outside your interests. That being said, exploring the world around
your circles can be mind-opening since you can easily find new approaches to the
same problems that you might face in your work.
I want to give this kind of approach a good try, and I could write some "deep
thoughts" about it in the form of a review.