Accidentally deleting a prod DB

Yesterday I accidentally deleted a production database containing years of medical data for thousands of patients. I’m still in shock of how this could have happened to me, I tend to think of myself as careful especially around prod stuff. Previously I thought this was only possible if you are really careless and stupid. To be fair, it is. I was careless and stupid. This is how it happened.

continue reading ...

TODO for fall of 2023

Autumn is such a beatiful season. Just saying. This quick post is a reminder of the stuff I need to do:

  • set up a proper home network -> keep learning about OpenWRT and buy a router
  • keep learning about C++, updated my private larning notes, should make them public here. Main items:

C++ adventures, part II. - What I want to do with it

I’m tired of hearing myself say “I don’t really know” when I’m asked why I want to work with a particular piece of technology. I say that because even I don’t have a clear answer. Mostly it is just “because it seems interesting” but I rarely put more thought into it. In this post I’ll summarize why I want to learn C++ and what I want to do with that knowledge.

continue reading ...

C++ adventures, part I. - First questions

I interviewed for cloud devops positions at a few places this summer. I got one offer at the end of August. Then I decided to decline and stay with my current employer in part because I was offered the same salary and because my current job is very low-stress and very flexible. Both are very important while you have small children. While still in negotiation with my boss, during a meeting where we talked about the numbers he asked me this:

“What is going to happen if give you what you are asking? How long until you start looking around again?”

continue reading ...

Missing that sense of magic about computing

I noticed that the higher up the technology stack I’m working, the less I’m excited about it. It might be because more and more is hidden from me and I feel powerless to understand it all. I also feel like the knowledge I gain from understanding some high level, specialized component is not that valuable. It won’t transfer well to other domains of computing, so I’m not that motivated to understand them either.

continue reading ...

Hacking

What a horrible title, but I couldn’t come up with a better one. Today I again found some nice video about reverse engineering. Then I remembered that one HN thread where people mentioned overthewire/vortex and how they would consider someone “elite” who reached lvl25 and how much that made me want to reach lvl25.

continue reading ...

Learning

I’m not allowed to delete while writing this post. I just deleted. No more. So I want to get rid of the feeling of anxiety when I start writing a post. Noone will read it anyway, unless I show it to someone, so this is just for me.

continue reading ...

Questions about "free software"

Gnu.org states that it is perfectly fine to sell your modified version of a “free software”:

Since free software is not a matter of price, a low price doesn’t make the software free, or even closer to free. So if you are redistributing copies of free software, you might as well charge a substantial fee and make some money. Redistributing free software is a good and legitimate activity; if you do it, you might as well make a profit from it.

Then they also state that it is fine not to pay for such a thing:

With free software, users don’t have to pay the distribution fee in order to use the software. They can copy the program from a friend who has a copy, or with the help of a friend who has network access.

So is it only an option for people to pay money for it? Let’s say I sold it to their friends. Is it ok that they just copy it from their friends? One had to pay but the other doesn’t? How is this fair?

What I learned today

  1. Learned about network configuration in libvirt. Default mode is NAT. Can also be isolated or routed. Each fits a different scenario.
  2. Linux uses “disk caching” (== “page cache”) to speed things up and it shows this in a newbie-confusing way when using htop or free for example. See Linux ate my ram. Check “Available” instead of “Free”. Linux memory management is complex. See /proc/meminfo.

Linux performs all file I/O through the page cache. Writes are implemented as simply marking as dirty the corresponding pages in the page cache; the flusher threads then periodically write back to disk any dirty pages. Reads are implemented by returning the data from the page cache; if the data is not yet in the cache, it is first populated. difference between Buffers and Cached

Questions

Difference between virbr0 and virbr0-nic. Why one has an IP address configured by default and the other doesn’t?

4: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:0c:6f:e5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:0c:6f:e5 brd ff:ff:ff:ff:ff:ff

Learning time

At least every other day I fall asleep next to my son after putting him to bed in the evening. Quite early, around 9-10PM. He is my #1 priority so I spend most of my free time (after work) with him - and I encourage every other dad with a small kid to do the same. I realized that lately I barely spend any time honing my software skills or learning about new areas, things which I think would be important if I want to spend my working time on worthy things, have fulfilling jobs and a safe financial background. I also noticed how easy it is to waste that 1-2 hours that I have when I don’t fall asleep too early - watching videos, reading random articles. To try and help me stay focused, here is list of things I started learning about:

I’m planning to pick up c/c++. Again. Been planning that for a long time. I had the idea to spend some time learning about interesting open source c/c++ open source project and doing a summary writeup of their architectures. See older post with some inspiration on what to pick

Chaotic times

  • lots of stress in the past months
  • lots of stuff to pay, everything is getting so expensive
  • moving with a small kid is very hard
  • home renovation with a small kid is very hard
  • mind completely clouded with things that need to be taken care of and things that need to be paid
  • had a moment of clarity on a saturday afternoon when I was reading about the ubuntu package icedtea-netx - “implementation of the Java Network Launching Protocol (JNLP)” (need to install Java Web Start for applying for some government subsidy)
    • somehow, out of the blue, reading that one line brought back that lost feeling of excitement and curiosity about software and computers that I used to feel when I started out
    • maybe because the acronym is similar to JPL which I’ll always associate with one of the most motivating articles about software engineering
    • I really lost this feeling in the past 1-2 years since my son was born (not blaming him!) and the only time I spend writing software is my dayjob
    • I want to get it back, I want to feel excited and curious about software again
    • want to work on meaningful things and not waste my working life just for the money

New year thoughts

The end of the year is always a wonderful time because this is when I get to spend most of my time away from work and that means more time for thinking and making realizations about what I should and should not be doing in my everyday life.

continue reading ...

Into C++

Yesterday I made up my mind, I’ll learn C++. Properly this time. Seriously.

I’ve long pondered what areas of software I want to get into the most. It is still blurry but I know it is not CRUD applications and definitely not (dev)Ops. I’ve had enough of yaml files and bash and python scripts and clicking buttons on web UIs.

I concluded this post 1,5 years ago with a note that I should put my focus on lower level languages. I put some effort into learning to program in Go in the past half year. It went quite good too, I’m not disappointed with my progress. I am disappointed at the job market though. As of May 2020, there are very few open Go positions in Budapest. There might be a lot more abroad but I won’t be moving anytime soon - expecting a son in August this year.

C++ on the other hand is in very high demand.

continue reading ...

2020

Topics for 2020.

continue reading ...

rm, file permissions and recovering data

I won’t find the rm -rf jokes that funny anymore. Yesterday as I was testing a deployment bash script on my laptop, I set some environment variables and run a script that executed rm -rf $STARTUP_ENV_DIR. That variable was accidentally set to ~/. In a fraction of a second, some strange “Permission denied” error messages appeared (to which I’ll get back later in this post) and in a few seconds it began to sink in: I deleted all my music, pictures, work files, almost everything I had in /home/asallai.

continue reading ...

Linux topics

Last friday I gave a presentation about file systems to some of my collegues. I spent quite some time preparing for it. There were still some holes that could have been filled but overall it turned out well, they seemed to have enjoyed it. But what’s more important is that I finally understood the basic concepts related to file systems which haunted me for a long long time. It all really makes sense now and it feels good!

continue reading ...

Amsterdam jobs

We are taking a short nap in the hotel room close to the Vondelpark and the Van Gogh Museum. I’m thinking about looking through the local job market online. First I googled for “maritime tech jobs in Amsterdam” but quickly realized I’m not yet qualified for any of that. Now I’m looking at search results on Glassdoor for “aws cloud devops linux” terms. Most of them start with a “Senior” prefix which seems quite scary. Key qualifications they expect:

  • 5+ years of general, 2+ years of relevant experience
  • strong Unix/Linux OS and networking knowledge
  • AWS, Azure, GCP
  • containerization: Docker, Kubernetes, Mesos
  • config management, CI/CD, automation: Chef/Ansible/Puppet, Terraform, Packer, Jenkins
  • monitoring: Grafana, Prometheus, Zabbix
  • distributed systems tech: Couchbase, Redis, Cassandra, ElasticSearch
  • big adat: Hadoop, Kafka, Spark

Ok. Half of that I don’t even want to know.

Quick brain dump

Can I write a blog post while my wife is taking a shower? Let’s see. Currently I’m learning go as I planned to do this year, but it wasn’t until our last retro 2 weeks ago with my team where we decided we have to get ourselves up to speed with 3 topics: Go, Kubernetes and general Linux stuff. Shower stopped.

Which way forward?

I have an idealistic image of the perfect work environment for software developers. One where the work is not limited to high levels of abstraction. Where people get a chance to rethink and experiment and build stuff from scratch. One where every day work touches on many different areas of computer systems. The problems are technical in nature and there is “real engineering” involved. The performance and efficiency of the resulting software is at the core. One where the members of the teams are experts who can and do make sound decisions grounded in theory and experience, who have a deep understanding of the different layers of software all the way to the hardware and who can do optimizations where it is most efficient. Where the quality (correctness) of the software is assured by using advanced tools and technologies.

continue reading ...

Resurrecting the blog

A good friend of mine and I agreed that we will both set up a blog during the Christmas holidays.

I decided to resurrect my old blog that I started - and then abandoned - in 2013. I had to look up my old posts, some of them I had to recover from The Wayback Machine because I haven’t kept a copy of them.

continue reading ...

New year update

It feels like it’s been years since I last wrote anything here. A lot must have happened to me last year. Many things happened indeed. I got married, I had a great honeymoon in Tuscany, I’ve done a lot of work as the sole full time developer at Bioscreen and since september I’m back in school finally officially studying CS and software engineering. I sincerely hope that will help me beat my ever-present impostor syndrome for good.

continue reading ...

"The C programming language" by Kernighan & Ritchie

In the same way, p->str fetches whatever str points to; *p->str++ increments str after accessing whatever it points to (just like *s++ ); (p->str)++ increments whatever str points to; and *p++->str increments p after accessing whatever str points to.

continue reading ...

Negative text progress bar

A good friend of mine, the founder of Boomla, a “website OS” as he calls it suggested I improve my progress bar design by making its text change color pixel by pixel as the progress bar passes through.

continue reading ...

Magento

UPDATE - 2014.05.11.: Magento is just bloatware, don’t ever bother using it.

I’m developing a custom Magento theme. Well, trying to… I’m only getting familiar with how the system works and I’ve set up a webshop on localhost using WAMP.

continue reading ...

Writing crawlers

I’m currently reading the book called ‘Webbots, spiders and screen scrapers - a guide to developing internet agents with PHP’ by Michael Schrenk and I really enjoy it partly because it is something new to me and partly because the author seems to pay attention to many small details. I have certainly seen cleaner code than in the book but it makes good points and shows simple yet useful examples.

continue reading ...

Infinite jukebox & white noise

In online poker - or poker in general - the term ‘grinder’ or ‘grinding’ refers to the very monotonous and long lasting activity of playing many hands over the course of long hours. I hate poker jargon with a passion but find this one rather fitting. It’s quite appropriate for writing code as well.

continue reading ...