Clicky

Computable Multiverse

Hi, I'm Rakhim. I teach, program, make podcasts, comics and videos on computer science at Codexpanse.com. You can learn more about my work and even support me via Patreon.


Office hours

As an experiment, I am holding paid office hours for several weeks. I’d love to share whatever limited experience I’ve gained so far. You can schedule a 30 or 60 minute audio call to talk (in English or Russian) about any of the following topics:

  1. Computer science and programming.

    • Discuss a fascinating idea.
    • Feeling lost and want to understand something.
    • No code review or debugging. Consider hiring a private mentor (on sites like codementor.io) for that.
  2. Software development career. I have experience being hired and hiring developers, being managed and managing teams, working on client projects, freelancing and on my own private businesses.

    • How to chose what to learn and where to work.
    • Freelancing vs. full time work.
    • How to grow professionally.
    • How to get promoted.
  3. Professional immigration. I’ve been through several work-, education- and entrepreneurship-based immigration processes in Canada (Federal and Quebec) and Finland.

    • How to chose a country that suits you and your family.
    • North America vs. Europe
    • English exams
    • Preparation, process, first steps after landing.
  4. Entrepreneurship and startups.

    • Starting your own business.
    • Raising funds.
    • Growth, goals and metrics.
  5. Education and/or immigration.

    • Learning English.
    • What to study in college.
    • How to study abroad. Scholarships, immigration, work after graduation.
  6. Self management.

    • Getting things done
    • Focusing on hard tasks
    • Managing distractions
    • Reducing mindless browsing, social media influence, digital addictions
  7. Other:

    • simplifying life
    • digital essentialism
    • managing complexity in life
    • public speaking
    • podcasting
    • blogging
    • … and almost anything else :)

Book your meeting at calendly.com/rakhim. Payment is processed there, along with the booking. Email me at contact@rakhim.org if you have any questions.

UPD (2.7.2019): the office hours experiments is concluded. Thank you!

Testimonials

I had a chat with Rakhim about education and mindfulness. His broad vision and aspiration to immerse in the asked questions helped me validate my current knowledge and gave me the direction for further growth. I recommend office hours if you feel kind of lost in a topic and want to know where to move on.Andrew R.

One hour Q&A session had helped me to better determine my career goals and new ways to fulfill my interests in different areas of software engineering. Thanks to Rakhim, I’ve found new opportunities and ideas on how to improve my computer science knowledge, English, and other things. Thank you bro!Rustem Z.

Me and Rakhim were talking about doing business in Finland. We had just 30 minutes, but we managed to discuss visa, tax and legal aspects of working in Finland. Rakhim also sent me a bunch of useful links after the chat. It was a nice experience overall, can totally recommend.Dmitry N.

May 21, 2019 | permalink

Rethinking Twitter

Good old days

Twitter is the only social media I’ve ever used. Sure, I had accounts on other sites, but was never really engaged elsewhere. I couldn’t understand all those “facebook addiction” stories, honestly. Facebook was always extremely boring, while Twitter was always exciting.

From the beginning, it was a perfect, geeky, simple thing that is kind of hard to explain. Just a stream of short thoughts. Cool links. One liners. A public chat room.

I joined Twitter in 2007. Woah, 12 years ago! I was studying in a university, and smartphones weren’t really a thing yet. This is totally a “back in my days” kind of rhetoric, but hell, that Twitter was nice.

Most people didn’t have a Twitter account. Because it’s weird, what’s the point? So, like other internet communities, Twitter started as a selected group of weirdos, acting constantly amazed about the fact that they’re all here. Tweeting.

The timeline was chronological, and the world seemed ordered. It was more like RSS than like Facebook or TV: you could only see the people you explicitly subscribed to. Never an unknown face in your timeline. Retweets weren’t a feature, it was just a thing people did: copying a tweet and putting “RT” in front of it. I think it’s a better strategy overall: if you retweet something this way, you put your face on the message, you own it now. So, the value of retweets was higher, nobody wanted to copy every mildly interesting thing.

There were no likes, this added sugar of engagement and interaction. You like something? Well, say it. Tell it to the author, do a retweet with an encouraging comment. Do something you’d do in real life.

Twitter was allowing people to communicate via a digital medium. Not communicate in a new digital way.

And Twitter wasn’t like TV.

Outsourced schizophrenia

A HackerNews user had put it nicely:

I think the problem is that Twitter is a platform for evolutionary selection of slogan-based-dialog. I kind of imagine two armies standing across a battlefield from one another carefully deciding which volley of pithy digs to throw at one another.

Yeah. It’s like switching TV channels every 5 seconds.

This article had hit home hard for me. I’ll just include a few quotes:

There are people you know whose voice you can hear in your head […], or people who you even consult with in your head for wisdom (“What advice would my dad give here?”) […]

…it can be a huge mental lease we’re signing when we invite a few hundred people into our Twitter life. To some degree, it is choosing to subject ourselves to thousands of ads throughout the day, but ones that come from trusted sources we care about, so they’re actually impactful.

Yes! And especially today, thanks to both natural and artificial (algorithmic) selection, these short ads are hyper-optimized for stickiness and virality.

We’ve surrendered a massive amount of mental and emotional energy without making the explicit choice to do so–it’s simply imposed on us by subscribing to the channel and checking it.

The worst part is that nowadays you see a chaotic stream from people you haven’t explicitly subscribed to: retweets, liked and promoted tweets, ads, etc.

Mentally, we just aren’t capable of simultaneously empathizing with hundreds of people–let alone thousands or millions. The result is we either build up a calloused, jaded, or cynical defense against empathy or find a way to block out more.

I can hardly manage interacting with a single person for more than a few hours, let alone with hundreds, even via virtual channels.

This one describes me very well too:

I’ll admit: I’m an annoyingly oversensitive person. I do believe this is both a strength and a weakeness. […] I also have a tendency to listen carefully to any criticism or disagreement I hear, internalize it, reflect on it, and evaluate it, then conclude some thought on it. Until I do that, it just sort of hangs there in my head. The degree to which it dominates my headspace is largely a question of how much it impacts me.

If nothing else, I want you to consider this quote:

[…] Twitter is outsourced schizophrenia. I have a couple hundred voices I have consensually agreed to allow residence inside my brain.

I assume not everyone is like that, and not everyone experiences social media this way. But Adam, the author of that post, does. I do too.

His essay is fantastic, really:

I’ve realized how Twitter has made me break up my thoughts into tiny, incomplete, pieces–lots of hanging ideas, lots of incomplete relationships, punctuated by all manner of hanging threads and half-forked paths.

Change

But Twitter has been very beneficial to my career. With a few thousand followers, links to my projects had consistently brought me hundreds of hits, readers, clients. This is my strategic failure: I haven’t been working on maintaining an independent outlet for my audience, a newsletter or a consistent blog. For more than a decade, Twitter has been the main channel of distributing my work.

So, I decided to make a few changes and conduct an experiment.

  1. Unfollow everybody. No more timeline.
  2. Tweet via an app like Buffer, without opening Twitter itself.
  3. Open Twitter and reply to mentions only on weekends.
  4. Invest energy into maintaining a consistent blog and a personal newsletter. You can subscribe to the newsletter here or with a form below:

I will maintain this system at least until the end of 2019 and we’ll see how it goes.

TWEET THIS NOW!

May 15, 2019 | permalink

Easy slides (for me)

As a software developer, at some point you discover simple slides and presentation generators: Markdown-to-PDF/HTML converters, Emacs extensions, LaTeX exporters, VIM plugins, etc. The idea makes perfect sense, because:

  1. I don’t want to use PowerPoint or Keynote.
  2. I don’t want to use the mouse.
  3. I want plain text.
  4. I want simplicity.

You can create presentations without leaving your favourite editor or command line. But unfortunately, the majority of the results are just text with an occasional poorly positioned funny GIF (that didn’t load because wifi is down).

I completely understand the desire to make things as simple as possible and forget about clunky GUI-based presentation software. I don’t like them either, and yeah, I’d love to be able to do things from the comfort of my text editor. You might say that text is mostly enough, animations and other flashy effects don’t contribute to the value.

But I argue that animations, visualizations and transitions are tools, and like any other tool, they add value when used correctly. By sticking to text-only slide generators, you disregard a whole set of tools and potentially a whole set of problems they might help solve.

A title flying out from the corner probably doesn’t do any good, the effect has no meaning. But if you want to explain something non-trivial (not to you, but to your audience), consider using something to illustrate your point or even just to focus viewer’s attention. It’s not about animation or burning flames effect, it’s about anything above the typewriter in the pyramid of technology.

Dimming. Colors. Shapes. Transparency.

Computer science is full of complex ideas, multiple levels of abstraction, non-obvious connections and relations. It pains me to see whole presentations, thick books and long manuals with essentially zero visuals, zero attempt to convey an idea with something other than text.

Your slim Markdown-to-PDF converter serves one purpose: make your life easier. Nothing wrong with that. But there are also viewers who might benefit from a more detailed visual presentation. Of course, not all viewers would. For many, text and your speech are more than enough, after all, many of us became programmers because of the ability to understand complex, abstract, non-visual ideas to begin with. This is where lack of diversity starts from, I believe. We filter out people by their adaptability to certain styles and formats of explanations. We filter out people by their learning medium.

You need a cartoon to understand closures? Good luck. Maybe, programming isn’t for you?..

Now, I understand that it takes time, and you might just not have enough of it. I am not bashing these wonderful tools and not saying you must produce visuals and animations. I just wanted to remind you that plain-text presentations are compromises. It’s absolutely fine to mindfully and intentionally make compromises.

April 21, 2019 | permalink

How to podcast

Here is a TL;DR version:

  1. Record using whatever. Even smartphones produce decent sound nowadays. Just make sure to have a consistent volume, i.e. maintain constant distance between your mouth and the phone.
  2. Compress to 96kbps mp3 constant bitrate. Or use an online encoder like Pinecoder.
  3. Pick a podcast hosting provider:
    1. pinecast.com: starts at $5/month with unlimited storage, unlimited shows, basic analytics and website generator.
    2. simplecast.com: starts at $15/month per show. Cool player, website generator.
    3. transistor.fm: starts at $19/month with unlimited storage, unlimited shows. Limited at 5k downloads per month.
    4. Or one of many others, including podbean, libsyn, fireside or even soundcloud (probably not the best idea, since the company’s finances aren’t great)
  4. Add your podcast to public catalogs:

    1. Apple Podcasts (iTunes)
    2. Spotify
    3. PocketCasts
    4. Google Podcasts
    5. Player FM
    6. TuneIn

    Some podcast hosting providers can submit your feed to those catalogs on your behalf, but I suggest you do everything manually to keep 100% control over your content.

Preparation

This part is very subjective, so I’ll just describe my own process.

Since each of my episodes follows a specific topic, I start thinking about it weeks before, just allowing ideas, thoughts and just random pieces of info simmer in my head for hours. I do my best to write down these things, but often just forget them. It’s okay. I have learned to let go of “obviously genius” ideas.

I never hesitate to write down whatever comes to mind though. It could be an analogy, a funny phrase, a weird comparison.

At some point I feel ready to jot down the structure. I’ve been using a large notepad and iPad pro with Apple Pencil, but lately have been enjoying MindNode on the desktop. Having a large, tree-like structure fits my way of thinking very well. I just “walk” the tree during recording, trying to visit all the nodes.

Recording

There are different levels here.

Level 1: Just use whatever.

Your phone or internal microphone of your laptop are okay. Not great by any means, but keep these in mind and you’ll be fine:

  • Pick a quiet spot. Humming noises are the worst (loud fridge, AC, etc.)
  • Maintain constant distance between your mouth and the mic
  • If possible, record in a smaller room with lots of soft objects to minimize echo. Books, blankets, pillows, curtains reduce echo significantly.

Level 2: USB headset

A good and cheap way to improve your sound significantly is using almost any good USB headset. But it must be USB. Those headsets that connect via jack cables are simply using your computer’s audio card and the sound might not be much better than with an internal mic.

Level 3: USB microphone

USB mics are the combination of “real” microphones and the convenience of USB. You usually don’t need anything else, just plug and play.

There are several good choices in this category:

  1. Rode Podcaster (my only mic for 10+ years, produced hundreds of podcasts and videos with it)
  2. Blue Yeti
  3. Audio-Technica ATR2100-USB
  4. Shure PG42-USB
  5. Audio-Technica AT2020USB+

Level 4: XLR microphone

When you’re ready to go “full podcaster”, go read Marco Arment’s Podcasting Microphones Mega-Review. There are audio samples, too.

Editing

I edit my podcasts heavily. 60 minutes of recording usually result in about 35-45 minutes of end result. Marco Arment wrote about this in Easy listening and I agree: “you just need to care”.

Free and open source Audacity is more than capable for both recording and editing, but, to be honest, I find it extremely cumbersome and ugly. Once you’re serious, I think it’s worth to invest into buying and learning a tool like Adobe Audition (my choice) or Apple Logic Pro X.

Publishing

Podcast is basically an RSS feed with media files. You can generate it yourself and host mp3 files wherever. If you already have a blog running on Wordpress, it makes sense to just continue using it. On wordpress.com they have a special feature for podcasting, and if you run your own wordpress instance, this plugin will help you.

It is much easier to use one of the specialized hosting providers:

  1. pinecast.com: starts at $5/month with unlimited storage, unlimited shows, basic analytics and website generator.
  2. simplecast.com: starts at $15/month per show. Cool player, website generator.
  3. transistor.fm: starts at $19/month with unlimited storage, unlimited shows. Limited at 5k downloads per month.
  4. Or one of many others, including podbean, libsyn, fireside or even soundcloud (probably not the best idea, since the company’s finances aren’t great)

Most of them can even generate websites for your shows, although, their design choices are questionable at times.

All of my shows are hosted by pinecast: it’s a fantastic value for the money and everything works perfectly fine. Here is my referral coupon code for 40% off for 4 months: r-a6562b. Use it at checkout.

Questions?

Feel free to email me at contact@rakhim.org, and I’ll try to add more info to this guide.

April 15, 2019 | permalink

Frontend vs. Functional Programming Conferences

February 27, 2019 | permalink

Christmas Wish

December 17, 2018 | permalink

If real life were as buggy as software

November 30, 2018 | permalink

Evolution of Frontend vs. Backend

November 16, 2018 | permalink

The Ultimate AI answers the Ultimate Question

November 7, 2018 | permalink

Dazed, depressed, defunct

I’ve been journaling daily for 6+ years, but stopped this summer. There are many reasons, but one stands out: it makes me sad to read my journal.

DayOne app has a nice feature: show entries for “this day over the past years”. I used to start each morning by reading 5-6 journal entries from the previous years. This routine has been more or less automatic, and it didn’t feel like it was in any way affecting me. It took me an unreasonable amount of time to realize how disturbingly repetitive my journal entries are. Most of the time I was “temporarily sad” or “feeling depressed” or “tired and frustrated, whatever”.

It goes on and on…

Getting lonely

I felt lonely most of my life. I can’t say I had ever had long, true friendships or partners. I remember tolerating most of the circumstances and people, at best. But, being a young university student around 10 years ago, it wasn’t an issue: there were too many things to worry about, and there were ways to relax and dumb down the brain, if you know what I mean. The body can really take a beating so that the mind is spared.

Closer to graduation, I found myself frustrated with everyone and everything around me. I deliberately made myself completely alone and isolated, in a foreign country, working in a different town, so that I can “leave” multiple times a day: leave home, leave the town to commute, then leave the office, leave the group. I didn’t talk to anyone except colleagues during weekdays and the person who became my girlfriend and life partner several years down the road. She eventually became the only person I could discuss these issues with.

For almost 8 months I had a bizarre groundhog day experience every day. It didn’t do good.

In 2012 I left the country, changed jobs, got back into public speaking, finally met that girl. It felt like things are changing for the better.

Turned out, those external events had nothing to do with the way I felt inside. It’s hard to fathom: even a 100% change in circumstances and environment could theoretically contribute exactly 0% to the internal feeling.

I didn’t take notice and kept chasing. Another city, another job, another side project. 10 months in — no, back to the other city, another job. No, working for the man is not for me, I want my own business. Attempt one, attempt two, attempt three… I have no idea what I’m doing. I know! Startup! Investors! Rounds! Yes, this is what I was missing!

I went all in. Quit my job, started learning about startups, lean and customer development. Pitching like crazy, applying to bootcamps and “accelerators”. Dreaming of Round C. It was an efficient, but costly life-filler.

As you can imagine, that didn’t do good either.

Getting frustrated

Co-founding a startup when you’re not right mentally and when you have no idea what you want is a bad, bad idea. Almost hitting rock bottom money-wise, risking the livelihoods of multiple people and your own legal status in a country you’re trying to make your home is a fucking shit show of emotions and, surprisingly, numbness.

I guess, statistically I was numb most of the time, not frustrated or tired or depressed. Just numb, slowly moving towards that dark and moist sweet spot of groundhog-day-like existence. Daily routines became the refuge. Weekends became wanted again, not because I could relax, but because I could ignore.

I remember washing dishes being the best thing to do some days. Yeah, washing dishes for an hour, slowly going through a pile, seeing definite progress, having my hands in nice, warm water, having a feeling of accomplishment in the end.

Surprise! Investors don’t really like it when you’re stalling. Or have no plans for the next quarter. Surprise! You’re not CEO material. Not leader material, really. Surprise! You still have no idea what you want.

Self-hatred-driven personal development is a promising area of self-help literature, I think.

Surprise! You suck! Go, write that in your dreary sobbing journal.

Getting defunct

While external positive circumstances don’t really change much, external negative circumstances do work as advertised. Feeling depressed? How about feeling depressed and broken? There you go!

As an example of things piling up on top of all this: the government retroactively stripped me of the scholarship they awarded me with 12 years ago for “violating” a condition that is not in my contract, but exists in their internal documents which they failed to provide after numerous requests. Seven years after graduation, I was handed a large, unexpected student debt. Suing the government doesn’t really work there, so, yeah…

Or a business partner threatening us (co-founders) with “legal action” for not taking the canonical growth startup path, but rather deliberately deciding to stay small-ish.

After multiple roller coasters, after months of not being able to do any meaningful work, after a personal trip that didn’t go well, I found myself broken. I didn’t have suicidal thoughts, don’t worry, but I remember feeling that it doesn’t matter if I die. I mean, I don’t want to, and it won’t be good for my partner and parents, but, you know… it’s not… yeah. It’s just “whatever”.

It made me shiver when my mother, whom I see about once a year since I left home at 18, told me “your eyes seem faded”. Before that I used to think I’m pretty good at hiding this shit inside.

Last week I decided to step down as CEO of Hexlet, the company I co-founded in 2015 with Kirill Mokevnin. I started it as a hobby project in 2008 and it grew to a profitable educational business with 200 000 users and 7 employees. It has great potential, but it needs a real leader.

What now?

I don’t know.

I guess, first things first, I need to fix myself at least to the point of making money to pay off the unexpected debt. I know intellectually this is possible. And maybe this is the kick in the butt that’ll do good. Or not.

Sometimes I am able to force myself to work creatively and produce something like an article for this blog or a video for my channel or a podcast. The moment of publishing and getting any sort of feedback brings a fleeting feeling of hope, but inevitably leads to a period of numb emptiness, followed by self-deprecation for feeling that way. Sustainable creative work is the hardest thing to achieve.

There are things that definitely contribute positively: I started working out and taking care of sleep, I’m trying to cut on bad food and understand nutrition better. Again, intellectually it all makes sense, but for now, I am as lost as ever, dazed and uncertain.

I don’t know why I’m writing all this. It promised to be cathartic, but maybe I should stop listening to external promises…

October 31, 2018 | permalink