What I tried

I am Artyom Kazak, aka @availablegreen on Twitter. I was born in Belarus, a small Eastern European country, and lived there till 18.

I have my own company (Monadfix), work as a manager and programmer there, and currently make about $1000–2000 in dividends + $3000–6000 from coding.

I am turning 25 in October 2020, and that is when I plan to quit coding—as a birthday gift to myself.

One of defining features of my life is:

  • I am sometimes anxious about things everyone finds easy, like going to a new restaurant,
  • but not anxious about things I should properly be anxious about, like couchsurfing in a new country, hiring people, or opening a business.

With this in mind—here's what I've done in my life, and how. This includes both personal projects and achievements like "traveled a bunch".

2017–2018:
The "Intermediate Haskell" book

https://intermediatehaskell.com/

In 2017, I was a Haskeller—and defined myself by it.

I loved collecting information and I loved writing. So I thought: I can ask a lot of people to write articles about various areas of Haskell, pay them $200 each, edit the result heavily, publish it, and earn some money.

After talking to friends about it, the goal changed into "why don't we write it ourselves", three or four people working together.


A part of the table of contents. Every item is a book chapter.

We began by writing a long, long, long table of contents. Everything we'd want to read in a book.

I also posted on Reddit, and everyone got super excited.

The writing process was slow and difficult—we were arguing about every little thing. I gave up on the book a year later; Vlad still hasn't.

Eventually some of the drafts were salvaged into standalone posts, e.g. Mark Karpov published his Megaparsec chapter on his own site.

I don't think I am ever going to try to write a technical book again—unless I learn how to write 10x faster.


By the way: how did I find other Haskellers to write the book with? I didn't. I already had them in my circle.

But how did this circle appear? It appeared because I was offering help to strangers, here and there. I'm not shy about offering people money, or help with writing, or anything else.

Example: I was walking past a street band recently and I liked them. So I went to the nearest grocery store, bought a bunch of candy, went back, and wrote "donate and get a sweet!" on a sheet of paper. The strategy didn't work out, but somehow it was easy to try anyway. I don't know why.

2016–2019:
Aelve Guide, a lightweight wiki for Haskell

guide.aelve.com, 2019, after closure. The source is at github.com/aelve/guide.

Again, I loved collecting information and I loved writing. So I also thought: I should make a wiki for comparing Haskell packages.

I coded the backend and the frontend myself, in Haskell. Then I wrote several well-researched pages and posted them on Reddit. The wiki started getting views.

The best feature, for me, was that it was super low friction. Everybody could edit everything, no registration needed. I was reviewing all edits myself.


The painfully long list of blogs. A short excerpt.

One thing I hated about all wikis is that they didn't want to host "everybody knows" kind of content. E.g. "whose packages are usually high-quality and whose are low-quality?". I still wish somebody would write things like that down.

I didn't have the guts to write that, unfortunately. The most popular piece I wrote was "A painfully long list of popular Haskell blogs".


An excerpt from the hiring form I wrote.

Later I hired people to work on the backend, by posting on Reddit. I offered $1000/mo. My thinking was: I will just wire people money and they will work for me. No contracts needed.

I was funding the project using my own salary, back when my full-time job was the Cardano cryptocurrency. I was making about $3000/mo. All my spare money was going into side projects, and I was very proud of that.

I cared a lot about looking like an awesome employer. I also thought that nobody with experience would want to work for me. I was very surprised when a guy with a PhD (!) from the US (!) was willing to work for me.

I hated discipline and didn't require it from anyone else. At the same time, I had a lot of opinions about code. So, I was anxious about everyone's pull requests—I knew I'd have to spend a lot of time reviewing them until they were done the right way—and eventually I would get to the point where it took me several weeks to review a single pull request. People would leave, I would stop thinking about the project for some time, then I would hire someone else and the process would repeat.


Every time I talked about Guide to someone, I would have more ideas about what Guide could be useful for. Eventually I went in the direction of "it will be a super low friction corporate wiki for small teams, because all corporate wikis are hard to deploy and also suck".

I had also met a marketer who was much better at {networking, etc} than I was, and she got me invited to various conferences where I talked to researchers or CEOs who were way out of my league. I managed to get Trent McConaghy (a founder of a pretty big blockchain thingy) interested in Guide by telling him that Guide could be an awesome workbench for researchers. They'd be able to collaborate and everything! Automatic translation, like in WeChat. A CI for mathematical formulas. Every small quality-of-life improvement that competitors wouldn't implement, I would implement.

We had a dinner. I was embarrassed about the current state of Guide—a small CRUD wiki that took two years to write—and very much avoided talking about what Guide was. I only talked about what it could become and how the competitors sucked. Probably one of the reasons why we never talked for the second time.

I wasn't interested in helping researchers, even. I just loved writing and wanted to have a wiki where people could write things easily. But I couldn't admit it to others and I couldn't admit it to myself, because I really wanted to be on a road to greatness, not just "doing a side-project".


Eventually, I noticed that Guide wasn't useful to anyone and was moving too slowly, and I shut it down. It felt liberating.

2017:
Presenting Guide and Intermediate Haskell at ZuriHac

ZuriHac is a Haskell hackathon in Zürich. In 2017, I asked Vlad "Want to present our stuff at ZuriHac and look for contributors?" and he said "Why not." Or maybe it was the other way round.

We submitted the projects, went to Zürich, and presented them. For me, telling 300 (?) people "Hey, look at my thing" was scary. The presentation went over time. My employer asked to mention them in the presentation and I did, even though I didn't want to and nobody else tried to advertise anyone during their presentations. Eh.

I think that nothing useful came out of the contributions, but it was the first big conference I attended and it was nice anyway.

Not everything works out.

2018–2019:
Aelve Codesearch, a site for searching through package repositories

Versioned CSS · Issue #70 · aelve/codesearch · GitHub
2018

In 2018, a former classmate was looking for something to do with his time. So I told him: "Hey, wanna work on a project for $500/mo?".

I didn't care much about what he would do. I chose "search engine for code" because I had stumbled upon Google's open-sourced defunct search engine, and thought it would be very easy to get something useful out of it.

(Later it turned out that getting a server with a fast SSD and using ripgrep, no indexing, would have worked too and was much easier to set up. Oh well.)

I wasn't ever going to monetize Codesearch. I just wanted a tool for myself. I also wanted to finally get something done. I had another project going on—Guide—and felt it wasn't useful to anyone. So I wanted to make something small and unambiguously useful.

Later I hired some more people by posting in a large Telegram chat with Scala job ads. Too many people, in fact. Some of them were inexperienced. Everyone was working part-time.

By that time, I was explicitly treating this project as a management experiment, and I tried to inflict Principles on them, like "no discussions in private chats, ever, even hiring/firing discussions". That didn't work out. I have changed my mind completely on private chats, nowadays.

In total I have spent about $12000 on Codesearch before shutting it down.

It was useful to me and to others, and I still miss it.

I shut it down because at some point the development was super slow and I couldn't do anything with it. I had also realized I was spending more money on it than made sense—it was useful, but not $12000 useful.

A side-note: it seems that for me, the only way to learn from an experience is after this experience is over.

2017–ongoing:
Monadfix, a programming consultancy

2017

I am the co-founder of Monadfix, a Haskell consultancy. Currently it brings about $20000/mo in revenue. 

There was no starting capital.

In 2017, I got together with a friend and we thought "okay, how can we make money?".

We were both Haskell experts and could answer questions about Haskell in our free time. Presto. We made a single HTML page in a couple hours, wrote "we will answer your questions for $100/mo", and put it on Reddit.

This is how we found our first clients, mostly hobbyists. We were already well-known in the community, so we could find clients just through the word of mouth.


2020

Eventually we raised prices, raised prices again, raised prices some more, renamed ourselves, and hired more people as contractors.

Opening a business was super easy. The company is registered in Estonia through Xolo. They handle accounting, taxes, and interactions with the Estonian government. Their service costs about $100/mo.

I did not have to interact with the government at all. I had to go to the Estonian embassy to collect an electronic signature card, and travel to Estonia for a day to open a bank account there.

Right now, we are mostly hiring by noticing that someone awesome is looking for work, and telling them "hey, wanna work for us?". It's been going well.

Monadfix is my full-time job now. The bulk of my income still comes from coding, not management (or co-owning Monadfix), but I plan to stop coding on October and focus on management and expansion.

I don't know what advice to give if you want to open your own business. The reason it worked out smoothly for me was that I was learning Haskell since I was 15. If I didn't have this, everything would have been harder.

2018–2019 (several months in total):
Berlin Haskell meetups

The meetup.com group we had. Wait, 110 members? We definitely didn't have 110 attendees though.

A couple years ago I quit the Cardano job and started looking for better-paying jobs. I landed at Wire, a Berlin company making a secure messenger for teams.

They had a gorgeous office with lots of empty space, and they mentioned that it was often used for meetups—but not anymore. So I went and asked: "Hey, can I do a meetup, next Saturday, on the empty side of the office?"

Then I made a meetup.com group and posted it on Reddit. I think. I also asked a coworker, who had a Haskell meetup group of his own, to advertise my meetup group.

Every Saturday, 10–20 people would come to the office and I would tell them something about Haskell for an hour. I didn't prepare for the meetup. I would just go "okay, here's something super simple, let's see how it's done in Haskell". We would also drink coffee and talk.


After five meetups, I started asking people to contribute. Somebody talked about making web apps in Haskell, something I had no idea about. That was nice.

I think everything went downhill when I also started asking people to teach others, instead of teaching them myself. The meetups got more haphazard.


Not the same meetup series, actually! But this one is also at Wire, and I'm in the same spot where I would usually be.

Back then, I felt like nothing useful was coming out of those meetups.

I wasn't talking to people about anything interesting for me, and I wasn't making connections. I would open my mouth, talk for an hour, and close my mouth, but I wasn't socializing after the meetups almost at all. Socializing was much harder than talking, for me.

After ten meetups I stopped doing them.

Were they useful to others, after all? Maybe they were. I don't know.

Perhaps the most useful thing for me was learning that I can easily organize meetups if I want to.

2019–ongoing:
Brick

Brick is the writing platform I'm using to write this post. To date, it's been the biggest boost to my writing output. (Sign up! It's free!)

When Aelve Guide was close to shutting down, I had promised one of the devs—Andrey—that I'll warn him a month in advance of the shutting down. Then, when I had realized I want to shut Guide down, I just went and said: "Hey, you can just get the salary for the next month, or we can do a small project together."

So now we are co-founders of Brick. He's coding it up, and I'm funding it.

I purposefully asked him to write the backend too—in TypeScript, which I don't know—because I knew that if I was allowed to meddle with the backend, the project would die.


I am currently the primary Brick user. It very much helps that I know what kind of a writing platform I want. It's been useful pretty much from the start, because I always wanted a blogging platform with live editing, and once I had that, I didn't need almost any other features to start using it. Writing platforms, in general, are great candidates for dogfooding.

Unlike Aelve Guide (which was also a writing platform), this one has more users, and has some paying users. This is because I told everyone on Twitter "hey, this is awesome, use this" and because we introduced a paid plan pretty soon. Can't charge people if you don't have a "give me money" button.


This is my most useful project to date, and yet I can't say much about why it turned out this way or how I was able to not fuck it up. Huh.


Several months after starting Brick, we posted it on Hacker News. It worked really well—500 users in the first day, 25 support conversations, 4 paying users. One security vulnerability, too.

I think the biggest success factor was that Andrey DID THE LANDING. With a video. With a pretty illustration. With screenshots! I never did landings for any of my projects before. I don't think there'd be any users if not for him.

2020–ongoing:
LessWrong meetups in Minsk

While stuck in Belarus—due to COVID—I met a girl, Polina, who knew about LessWrong. I mentioned that I co-organized a LessWrong meetup in Belarus, five years ago. (In reality, a friend had organized it, mostly.)

Back to 2020. Polina was like "let's do a meetup?". I was like "let's, yep!".

Then I did a survey in a popular Russian-speaking LessWrong chat group. "Hey, if we do a meetup, outdoors, in masks, would you come?"

There were about seven people who wanted to come. I made a Telegram group. Some of them invited other people.

The Korpus yard. We all fit under that tent.

Polina knew a bunch of places—bars, event spaces with large yards, etc—where we could do a meetup. We went and asked: "Hey, do you know where the management is? Thanks." "Hey, can we do a meetup here? About fifteen people. Is it going to be loud on Saturday? Very loud? Alright."

Due to COVID, I didn't want to do a meetup indoors, so most cafes and bars were out. Eventually we found Korpus, a "culture center" which is actually just a building with some shops inside, a bar, and a large yard. "Can we do a meetup here on Saturday?" "Yeah, go ahead."


For the first meetup, I asked people if anybody wanted to give a short talk. Somebody did. I also did. Cool.

The meetup went for two hours. I didn't know how to facilitate a meetup, but I was at other LessWrong meetups, so I had a rough idea:

  • Give everybody paper tape and ask to write their names.
  • Let everybody talk about how they found LessWrong and what they wanted from the meetup.
  • Pair people up and ask them to ask each other from the famous 36 Questions For Increasing Closeness list (somebody groaned).
  • ...something?
  • Talks.
  • ...something else?
There are no photos of me doing the talk, but there are photos of me just sitting around.

In reality, just the first talking phase took an hour, and after that there was only time left for one talk, not two. The other guy had a quiet voice and wanted to give the talk without a mask, which wasn't great at all, so I ended up giving my talk instead. I had drunk half a liter of cider by that point so it was super easy.

I didn't even had to learn the talk—it turned out that just writing it down once, and not rereading, was mostly enough.


Facilitating the meetup was easy.

Anybody uses a term I don't know off the top of my head?—I ask "hey, what is that?" because I know that others might not know it too. I feel tired?—I know that others are tired too so I declare a break. Having "official" power helps a lot, there.

I have a superpower: when I open my mouth, and have to keep it open for a while, I'm a different person. I jump around and interrupt conversations. I don't look insecure. I don't feel much. I only know what I feel when I close my mouth and get away from people. (This is awesome for giving talks, and terrible for therapy.) I don't know how to acquire this superpower, unfortunately.


This is everybody. Actually not everybody, some people left. So, some-body.

Girl in orange dress (right): my sister. Girl in stripes (left): Polina. In the middle: me.

Oh, and right below me: the guy who tried to behave like he was the boss. Half a year earlier it would have totally worked, but not anymore. Having spent the last several months learning what I want and what I like made me impervious—I am freely able to admit "yeah, I'm gonna be the benevolent dictator of this meetup" and "yeah, I don't know what I want from the meetup, and yeah, you say you tried all that before, but I'm still gonna keep doing exactly what I was doing".


Being well-read is another superpower I have. I'm like an old uncle who has weird half-stories for every story you try to tell. You mention you were eating a crab and he goes "a crab bit the end of my nose off, once". This helps make short meetups—longer.


For the second meetup, I found a bunch of cognitive biases and asked people to give examples. It went well.

Several people started pushing their own ideas for the third meetup, and I let them. If it goes well—yay. If it goes poorly—I'll try something else of my own.


I'm not getting that much out of these meetups, but I want to see where they will go, and I am willing to put more effort into them than I have into my other meetups.

Having a co-organizer is also super nice because if I feel down and unable to do something, I know I can rely on her. I recommend having a co-organizer or co-founder for everything you do, if your mood isn't stable. If it is—go ahead, do stuff on your own, maybe.

2019:
A Haskell meetup in Tel Aviv

I have a small Telegram channel (50–100 subscribers) where I post funnies. A reader wrote me and asked: "Hey, if you want to come to Tel Aviv, you're invited. By the way, I'm also a Haskeller".

The meetup happened during Purim, which is amazing. A bus driver dressed as a donut. A dog dressed as a Christmas present. A bunch of guys in a human-sized beer 6-pack. People just dress up weird and live like that for three days. Awesome.

I asked Vlad—my co-author and co-founder—"Wanna come?" Now there were three Haskellers scheduled to meet in Tel Aviv. Then I asked the previous guy: "Want to organize a meetup? Me and Vlad can prepare a talk each."

He did pretty much everything, though I still did some of the Reddit-posting. We came and gave talks at a 20-ish people meetup in his employer's Tel Aviv office. The rest of the time we hanged around.

I felt incredibly cozy in Tel Aviv and I want to live there for a while as soon as I can. Woo hoo.

2013–ongoing:
Traveling a bunch

When I was 18, I ran away (ish) from my parents and went to study in Russia. After half a year of studying I thought: "Okay, I'm a programmer, I can write WinRAR or something and get rich." So I dropped out, moved into the cheapest dormitory I could find, and lived there for half a year. After that I ran out of money and had to work as a furniture mover. It was okay. I was writing posts about Haskell in my free time.

Remember the bit at the beginning about "not worrying about things I should worry about"? I never once worried about "how would I survive after dropping out". It doesn't occur to me that my plans might not pan out. I often don't believe in myself—but when I do, oh boy, do I.

I did not write WinRAR, but I did eventually find a remote job. And when you have filthy programming money, a remote job, a long-distance relationship (or none at all), no school, and no attachment to your family, you can travel a lot.

Moreover, if you're afraid of commitment, like I was (never renting flats, etc), you can keep traveling a lot. I lived in Moscow and in Saint Petersburg, staying in hostels everywhere, for 1–3 months. Thanks to my job, I went to Latvia for a week and to Malta for a week; I think that helped feel at ease with going to new places.

After that, I felt that easily surviving in unfamiliar countries was one more superpower I had, and being proud of it helped travel more. It also helped that I knew that if I missed my flight, I could always book another. A six-hour layover in Singapore? Check in advance if I can leave the airport. Leave the airport. Figure out how subway works. Hi, downtown. Walk around. Go back.

In the last seven years, in addition to 15-ish European countries, I've also lived in Cyprus and Australia, and been to Japan, China, and India. Singapore doesn't count because it was a layover.

I wasn't good at meeting locals, but I was very good at other things. For instance, getting my own visas. In Belarus, most people go through a visa agency. You don't need that, you just need to fill a form and prove that you have money. Having money is not so easy, but filling a form—is.

If you want to live in a different country for a while, it's better to live with friends. I don't know how to give advice on finding friends. But here's a small SURVIVING A LONG LAYOVER guide:

  1. Check in advance if you can leave the airport. Many people think they can't leave the airport if they don't have a visa. For many countries, this isn't true. China gives visas for 3–5 days automatically if you arrive through a certain port. Sometimes you can get an express visa right at the airport. Sometimes you need a visa to visit the country, but you don't if you're doing a layover. Etc.
  2. Buy an internet-connected SIM card right in the airport (!!). Don't be greedy. $5–10 and you have INTERNET.
  3. Don't be afraid to figure out unfamiliar public transport systems. If you know you can't go anywhere unless you research how exactly public transport works there, you probably won't want to go anywhere. Figuring it out by trial and error is much simpler.

That's it. You can go out during a long layover, now. Plan flights with long layovers on purpose, and the scratch map of the world is yours.

P.S.

Right now I'm idly thinking about opening a coffee shop so that we would always have a place for the LessWrong meetups. I was walking with somebody from the meetup, and I asked them: "Do you want to open a coffee shop with me?" They said "Maybe."

I think people aren't used to strangers asking if they want to open a coffee shop together. But when you actually ask, sometimes people are excited to fall into an adventure like that—especially if they feel you are competent. Maybe looking competent is also my superpower. I'm not sure.

So maybe I will open a coffee shop after all. It won't be fun—nothing here was fun—but I think I will be satisfied when I look back at it.

P.P.S

See also: