My Mathematical Regression

I came across my 10 year old repo for project Euler solutions. (N.B! Euler spoilers onwards).

Naturally it’s full of python files. One file stood out. It was just called problem15.txt.

I pulled up the problem.

Problem 15

I imagined getting this at work. I think I would reach for python. Maybe start with a naive brute force. Throw a bunch of loops together. If that didn’t solve it, reach for memoization. Dynamic programming, let’s go! (this is just me fantasizing. At work I would just give it to an AI and continue with my day)

And let’s see how I solved it when I was still an engineering student

problem15.txt

doesnt even need to program anything for this problem
there are 6 solutions to the 2x2 grid
there are 2 solutions to 1x1 grid
there are 20 solutions to a 3x3 grid
this follows the pattern of (2n) choose n
so (2*20) choose 20 = 137846528820

(If you aren’t familiar with discrete math, see the binomial coefficient for syntax)

I’m impressed by past self! And present me became sad. It feels like an Asimov book where the main character finds past knowledge, codified by the ancients. But it’s just me when I was in school.

I remixed this picture to cope.

AI life skills

Brevity as a human advantage

short rant on information density

I am encountering more and more AI generated content, privately and professionally. Truth to be told I am quite fine with reading AI texts (as long as the producer has proof read and agrees with it (this is becoming rarer though)).

But I feel like the latest models are really amping up monetizing their output tokens, by just producing a <beep>load of text.

I hate it.

Now when I encounter someone communicating in a succinct way I’m delighted!

Maybe brevity is something that we humans always will be better at?

A startup copied my landing page (and then gave me great feedback on it)

I stumbled upon a website that had something uncanny about it. This was the Hero:

landing page hero

Their Hero.

After some more scrolling:

how it works section

Their "How it Works" Section.

.

Wait.

This is getting really similar to Kavla (my sideproject) “How it Works” section.

Kavla how it works section

Kavla's section (now replaced)

I’m not the one to jump to conclusions though. This could just be a huge coincidence!

Then I checked their css:

/* Yellow underline highlight 
like Kavla */
h3::after {
  content: "";
  position: absolute;
  left: -4%;
  right: -4%;
  bottom: -3px;
  height: 14px;
  background: var(--yellow);
  z-index: -1;
  transform: rotate(-0.6deg);
}

Hmmm. 🤔

To comfort myself on this ridiculous inspect-elemented theft I made some bad memes.

landing page hero

sorry

That could have been the end of the story.

.

.

But I sent them a snarky email.

Alex (Me)
Hello! I'm building Kavla. I found your site and we have a very similar design! Coincidence!

Have you tried it out? What did you think?

Might as well ask for some product feedback right?

Instead, I got a quick and honest reply.

Them (Milan)
Heyy! Yes i may have used you guys as an inspiration base... sorry im not even sure what your product does I just loved the landing page design.

Imitation is flattery right ?? My landing page is still evolving.. but yes for now I definitely took inspiration.

Ok so Milan admitted to copying my design. Good for my ego!

But that he doesn’t understand what Kavla does is concerning. I sent him a follow up email asking for more and got this response:

Milan

Honestly to tell you the truth looking at Kavla again I still don't understand what service you are providing. And I've been on the site a fair few times as I was using the look & feel as a direct inspiration.

I'm a solo developer and recent founder. I've been working as a developer for quite some time. I honestly still have no idea from the landing page what the product is actually for.

You put a lot of care and attention to this I can see and I really like the UI!

Ouch.

So we have this person, who is a former dev, now founder, that after looking at my landing page for hours to copy it, still doesn't understand wtf Kavla is about.

That is… not good.

I’m aiming to wow people that work professionally with SQL (Data Engineers, Analysts, Data Scientists). They didn’t fit this persona. But they should still be able to figure out what it is I’m actually building.

We ended up exchanging a few more emails. I was gaining insight after insight, such a treasure trove!

Treasure island book cover

My own personal treasure, available over email! Long John Silver would be super jealous

I came to realize I had been over indexing on selling collaboration. I am super excited about how awesome tldraw (the canvas I’m using) makes multiplayer. I really wanted to go all in on showcasing it.

However, this led me to neglect selling Kavla’s core utility. After all, multiplayer is something you only care about after you enjoy the product in single player.

I also tried to tighten it so it’s clearer what the value prop is:

Kavla is for messy, non-linear analytics where notes, screenshots and questions live just next to the SQL and charts.

The new landing page is available on kavla.dev. Check it out!

Shoot me an email, I’d love to know what you think ([email protected]). And try the product too!

Also have a look at Milan’s company Conference Cowboy. He’s building a white label event app. Awesome guy!

Data Engineering job market in Stockholm

Interviews
A Sankey diagram of my job search

I got a job! I will be working at Mentimeter doing Data Engineering stuff!

There aren’t that many blog posts about looking for a job in Stockholm. I thought it would be fun to contribute by writing an After Action Report.

Background

I quit my job in June of 2022 to go traveling with my partner. We visited some cool places in Asia (Hiking in the Himalayas was a high point (🤓)). We were back in Sweden in early December. I then started sending out job applications.

I used this resume.

An executive summary of my resume would be:

  • 2 years of experience
  • Spark, Python & SQL
  • Hadoop & GCP
  • CI/CD and terraform stuff

I was only looking for roles based in Stockholm.

Screening

All processes started with a recruiter reaching out by email to schedule a phone call or a video meeting. In the beginning of my search it was easy to say yes to their proposed time, but after a week my calendar was quite full. I solved that by Publishing my calendar online

Most of the screenings was them telling me more about the role and the company. I also almost always got the question “Tell me a little about yourself”. And of course I got some time to ask questions about the company. I would recommend to have some questions ready!

Here are some reasons I withdrew:

  • They had bad work-life balance (I’m very glad the recruiter was honest about it!)
  • The product made didn’t make any sense (could just be me being stupid though!)
  • They couldn’t bother to show up to our booked meetings, twice!
No show
Actual email after I withdrew after two no-shows. Red flag!

Technical

The majority of the technical interviews were take-homes. They were a Jupyter notebook (locally or Google Colab) with some data loaded. There were some tasks to do basic transformations, either in Python or in SQL. Then there was some basic system design questions, like “What would you do to fix a slow loading dashboard?”

One technical interview was just chatting with the hiring manager about technical stuff. Very pleasant experience!

For the live coding I had one in pure SQL and another in Python.

The Python one was similar to the take-homes with a jupyter notebook with some tasks. Just that I was doing it live with a time limit and also needed to talk through what I was doing.

I failed the SQL one, that’s on me for not preparing my SQL skills enough!

The live system design was a fun one, we started with some basic functionality. Then the interviewers started adding more and more requirements. I had to think about scale and cloud services for that one.

Cultural

I had two cultural interviews. They are quite personal, where you need to talk about how you handled situations at work.

I recommend breaking down a story into Situation, Task, Action, and Result. Called the STAR Method, famously used by Amazon for their behaviorals.

Offer

I got multiple offers and wanted to evaluate them all fairly. With the first few offers I asked for more time to finish the other processes. They were reluctant but agreed!

For me it’s also important who I’m working with. I arranged going to their office and meeting the team as well.

End

That’s it! If you have any other questions about the Data Engineering job market in Stockholm, shoot me an email at [email protected] :)

Publish your calendar and let recruiters schedule interviews themselves

I am unemployed! It’s great!

I have been (deliberately) out of work since June 2022. It’s been a magical time!

  • I tried a lot of new recipes
  • I spent time on my side-project bostadsbussen
  • I visited Singapore, South Korea, Thailand, Nepal (Hiking Himalayas), Turkey, Italy, France
  • I slept a lot
  • I spent time with family

But I also used a lot of my savings.

So I’m looking for a job.

Anyone who has looked for a job has probably had this exchange:

<Monday>
Recruiter 1: Can I schedule a call? When are you free?
Alex: I'm free on Wednesday from 9 to 12.

Recruiter 2: Can I schedule a call? When are you free?
Alex: I'm free on Wednesday from 9 to 12.

Recruiter 1: Great, I'll call you on Wednesday at 9.

<Tuesday>
Recruiter 2: Great, I'll call you on Wednesday at 9.

A classic race condition! Now I need to reach out to Recruiter 2 and re-schedule. Then I would need to submit a time-slot again, which could create another race condition with a hypothetical Recruiter 3

This can result in a back and forth email chain just to find a suitable time. That is not very productive!

So how can we solve this problem?

If my calendar was online the recruiters could find suitable times themselves.

So let’s put it on a web page!

I use Proton Calendar, which has an option to export my calender as an ICS link:

proton calendar

That gives us an ics subscription link, which can be imported into a calendar. But expecting busy recruiters to figure that out is not really respecting their time.

I found Open Web Calendar which will generate an iframe that can be pasted anywhere.

It was easily deployed to my Raspberry Pi! You can see the result below or on dahl.dev/calendar

The UI breaks a little bit on mobile devices. But I think recruiters will be using a desktop when scheduling. After this job hunt I might spend some time on creating a PR that fixes that 🤓!

No more scheduling conflict. I actually started using it for my job hunt and I have gotten good feedback from the recruiters. They said it made their job so much easier!

So now all my interactions look like this instead:

<Monday>
Recruiter 1: Can I schedule a call? When are you free?
Alex: You can see my availability on dahl.dev/calendar

Recruiter 2: Can I schedule a call? When are you free?
Alex: You can see my availability on dahl.dev/calendar

Recruiter 1: Great, I'll call you on Wednesday at 9.

<Tuesday>
Recruiter 2: Great, I'll call you on Wednesday at 10.