Freelancing; TopTal application

I have recently applied to TopTal.

It is a milestone in my personal development, as I want to transition from a typical 9-to-5 job to a more independent freelancing lifestyle.
While it is certainly riskier – a freelancer may go from time to time without stable income – I am capable of managing that risk, and I can’t wait to get the benefits that outweigh that risk for me: more freedom.

The types of freedom that TopTal offers:
  • Economic freedom, because I will be rewarded according to my skills, and not based on arbitrary fluctuations of the national economy
  • Freedom of time – I will no longer spend time on a commute, and I will be able to work at the times of day I am most effective
  • Freedom of space – I do not need to physically locate myself to an expensive office, in order to be able to work

What I have to offer in exchange:
  • An on-demand work model; your organization can assign me to projects as needed; there is no requirement to commit to an employment contract
  • A variety of proven skills to offer – from web development in Python or Ruby to testing to data processing and analysis in Pandas. I believe such variety is required of a freelancer, who should be able to take various roles for different clients.
  • Great communication skills. I have a C2-level proficiency in English, I enjoy both listening and expressing myself, and I respect other people.

I appreciate that TopTal has a vetting procedure. This way, I can prove myself, and my potential clients can trust that I have the skills required. I am looking forward to the examination.


Intro to electronics: Making a capacitor

Watching other people build cool stuff made me want to get into hardware hacking.

I was most inspired by the following YouTube channels, to which I link some videos:

  • AvE - opens up a diaphragm pump (a very robust kind of pump), and explains how it works
  • bigclivedotcom - review of a "suicide shower" (electrically heated shower head)
  • EEVBlog - teardown of cheap Chinese Apple chargers
  • Practical Engineering - this guy built an automated Arduino solution that waters his plants
  • How To Mechatronics - many more awesome Arduino contraptions and tutorials
  • ElectroBOOM - guy knows how to show you what not to do
My favorite idea right now is the automated plant watering. I want to replicate this, so stay tuned for more.

I ordered an Arduino-compatible board and some electronic components yesterday, I expect them to arrive tomorrow.


I had found and ordered a multimeter 3 days ago; it's a "UNI-T UT139C" on Vexio, and it seems good. It arrived today. I found this "Vexio" site on Price.ro.
It was 190 RON including delivery; which might be a bit expensive for a hobbyist just starting up.

You can get cheaper ones, but do check reviews of them and their certifications first.

Input protection

If they're not certified for at least 240V household current (at least CAT II), don't use them for household current, only for low power applications (like signals from an Arduino).

I even opened mine to see the circuits:
The thick white fuses burn out when there's too much current (Ampere) flowing through them. These are ceramic types (opaque), and they likely have sand inside them, that absorbs the heat and prevents an explosion. If they were just glass ones, they would explode and possibly burn the PCB or even the user.

The red, green and blue bubbly bits are for voltage protection.

Red rectangle: 103J 100V (a capacitor)
Blue bubbles: CNR 07D681K (a MOV or metal-oxide varistor; strongly resists current after heating up)
Green bubbles: WMZ12A (varistor; works similar to the MOV)

In case you want more details, here is a video from EEVblog about multimeter input protection.

Look for the CE mark - "Conformité Européenne". If such a mark is present on a device, it is either compliant with EU legislation, or the manufacturer is lying :)

Measuring stuff

I want to get used to my multimeter; so I measured stuff:
  • voltage of some batteries I had
  • the resistance of various materials (hint: metal conducts, and paper doesn't; who knew!)
  • the continuity beeper (of which the response time is quite important)
  • the temperature sensor (wow! I didn't know many multimeters have temperature sensors also).
  • a Non-Contact Voltage sensor (which can sense the changing electromagnetic field of AC wires, even through walls! useful when you're tearing walls down)
I think it works great so far, but I wanted to try out some more stuff. Say, measuring capacitance.
But I don't have any capacitors anywhere. So I decided to build one, for fun.

Building a capacitor

By sandwiching together aluminium foil and cling wrap, you get two large-area conductors (the foil) separated by a very thin non-conductor (the wrap).
If you build up electrical charge between the foils, positive on one and negative on the other, then the capacitor can stay that way - since opposite charges attract, and they like it really close together. 

However, they can't touch, because the cling wrap insulates them. Touching them would mean discharging the capacitor (and let the charges mingle back together and even out to zero).

This is the diagram from the side:

Wrapping the aluminum:

Rolling up the capacitor:
Note: When rolling up the capacitor, you should constantly test that the two foils are still isolated (very useful to have a multimeter with a beeping continuity test).
The first time I did this, I didn't check, and found out that a sharp corner where I bent foil cut through in a tiny spot, and then the foils touched (they can't hold a charge in that case).

Just in case it was statically charged from making it, I decide to short it out (so that it doesn't discharge into my multimeter instead):

I squish it together, tighten it with a wire, then measure the capacitance across the two leads:

Voilà! We have 37.08 nanoFarads! 

If we could somehow coerce the capacitor to output 5 volts, we could give out 189nAs, or 52.5 pAh out of it!

If your phone has a battery of 2000mAh, then we could charge it a whopping 0.000000002625%!


Hacking Lenovo SK-8821

I recently found an old Lenovo keyboard, called SK-8821, which came with a laptop. It felt better to the touch than a Genius KB-M200 which I was using, whose keys I found too hard to press.

Both of those keyboards have an awkward "compact" Home/End/Page Up/Page Down block, but I can get used to it.

What I can't get used to, however, is that Lenovo replaces the F1-F12 keys, by default, with random multimedia keys. So, in order to press F5, you'd have to hold the "Fn" button which is placed above Backspace, and press the key where F5 usually sits.

I am a programmer, however, and I need the F1-F12 keys by default.

There were some software options, and even a Windows "driver" from the manufacturer which lets you toggle the Fn switch, but none were attractive.

I found a better answer after some more searching, however:



Examen de conducere: Tips & Tricks

Ce sfaturi am eu, după ce am luat examenul teoretic, dar picat examenul de conducere în Cluj-Napoca?
  1. Învață la perfecție regulile de prioritate. Trebuie să știi unde trebuie să te uiți dacă vin mașini cărora trebuie să le dai voie.
    • Aici am greșit din cauză că voiam să dau voie și unora ce nu aveau prioritate într-o intersecție. 6 puncte
  2. Nu lăsa polițistul să te încurce. Când spune ceva neclar sau aparent contradictoriu, nu executa, ci oprește (pune avariile dacă e necesar) și întreabă-l.
    • Aici am greșit iarăși. Polițistul mi-a ordonat: "Continuă în față, conform indicatorului", indicator pe care eu mi-l amintesc să arate cam așa:
      • Am mers în față, spre drumul fără ieșire. Asta s-a considerat "încadrarea necorespunzătoare în raport cu direcția de mers indicată", și am pierdut încă 6 puncte. Poate că trebuia să contest acest lucru, de vreme ce eu am mers în față conform hărții de pe indicator; sau măcar să îl întreb pe dl. polițist: "Sunteți sigur? Să mergem în fundătură?". Dar nu mi-a venit pe loc acest comentariu.
      • Acest mic regret mă face să vă sfătuiesc să comentați cu dl. polițist. Și el e om, și dacă face astfel de capcane ca să scape de voi, atunci și voi meritați cel puțin același nivel de respect, adică aveți dreptul de a-l întreba.
      • Nu am găsit acest indicator pe Google Maps (e mai nou decât Street View din 2011); poate că o să îi fac poză într-o zi.
    • O altă zonă dubioasă, la care a fost depunctat altcineva, a fost următorul sens giratoriu:
      • În acest sens giratoriu există o bifurcație înspre Nord-Vest. Aceste două drumuri sunt considerate de către polițistul meu ca fiind două ieșiri din sens; dar acest lucru nu e clar; de exemplu, în acest moment, pe Google Maps e doar o ieșire din sens, iar drumul se bifurcă ulterior (marcat ca o intersecție în exteriorul sensului).
      • Iarăși, e obligația voastră să întrebați dacă aceste ieșiri se numără ca una sau două. 
    • Colegul meu a întrebat "Aici?" - dar polițistul a repetat doar "A treia ieșire". În acel moment, colegul a continuat prin sensul giratoriu (și dl. polițist i-a dat 6 puncte și lui).
      • Trebuie să insistați cu întrebările, dacă răspunsul nu e deloc util. La acest răspuns, mă îndoiesc de sinceritatea dlui. polițist. Ce trebuia să facă elevul? să oprească în sens și să îl întrebe dacă astea sunt două ieșiri sau una? Sau să se învârtă în sens până lămurește?
  3. Nu lăsa motorul să moară, în special când ești emoționat. Orice ar fi, accident, incendiu, dezastru - pornirea se face într-un anumit ritm, și nu trebuie să lași ambreiajul prea rapid, altfel rămâi tot pe loc, dar cu 5 puncte mai mult. Consider că e într-adevăr periculos să îți moară motorul, și că trebuie să înveți să îți controlezi emoțiile. 
    • Aici, am greșit de două ori. Prima dată eram în intersecția menționată 1. și trebuia să pornesc; a doua oară dădeam cu spatele (întorcând dintr-o fundătură de la punctul 2.). Când dai cu spatele, ascultă atent motorul, și dacă merge greu, fie ușurează-i sarcina (ambreiaj), fie dă-i mai mult combustibil (accelerație). 2 x 5 = 10 puncte
Totalul meu: 22 de puncte.


A review of Kialo

Kialo is a website for having debates.

You can browse "theses" to discuss and click. On each "thesis", you can see claims, Pros and Cons, which you can give "thanks" to, using a small heart emoticon, and which you can vote on according to "impact".

I admire their apparent intention to make tools enabling people to discuss ideas and to learn from each other.

But the good part ends here. Let me get to the bad part. I have not even linked to the website, due to the bad part being really bad.

The bad part

  • You can't participate in debates.
    • In order to add claims about a thesis, you have to either be a "Writer", or to "mark [a claim] for review"  for an "Editor" to check.
      • Believe it or not, but in order to "mark for review" you still have to be a Writer.
      • Limited expression. You can only point out the following issues with a claim:
        • Unsupported, though there is no place on the site for adding references to support your claim
        • Not a claim
        • Unclear
        • Vulgar/Abusive
        • Duplicate claim
        • Unrelated
        • Not sincere
    • You can not comment. In order to comment, you also have to be a Writer.
    • You can create a claim. But it's only "Suggested", and only Admins can see it, which can decide to accept it.
  • There is oppressive JavaScript on the site, taking control over your browser, and giving it to the website owners. There's no better example of what Richard Stallman keeps blabbering about
    • This has several symptoms:
      • Your browser's right-click menu is replaced. This is common on many sites, but bad, regardless.
      • You can not Copy. That is correct, they have disabled your clipboard, and replaced it with THEIR OWN CLIPBOARD, which only works on their site.
        • This makes commenting about content on the site very inconvenient (outside of the site).
      • You can not select on the site. Dragging your cursor across text does nothing at best, and something you don't want at worst.
      • Even scrolling on the site stutters.
I urge you not to use this nor similar websites. Nor others which interfere with your basic browser features through Javascript. They are:

  • patronizing, because they don't trust you as a human being, and hide features away from you
  • kafkaesque, because you have to go through the klunky interface to do what you want, and you realize you can't do anything in the end
  • orwellian, because they surveil everything, and have complete control over what they show each person (well, technically, all websites do, but this one tracks you via an account, to make sure)
Compare with Wikipedia:
  • you can use it without having to execute closed-source Javascript
  • they just let random people edit stuff on the site
  • but SOMEHOW, it is the go-to encyclopedia and one of the most trafficked websites on the web.
To me, Kialo looks more like a breakthrough in making Admin-approved spoon-fed "debates" appear more like fair debates, than a place where you can actually debate.

I claim that a better sorting algorithm for debates is 4chan's primitive "latest comment". This means people speaking more often get the spotlight, rather than the majority opinion. And that is how you find real claims, from people who dedicate time to what they speak, instead of mainstream beliefs only backed by a click.

Oh well. At least we can vote with <OUR_DEAR_LEADER>'s claim.


New Phone Part 2: Installing LineageOS

As promised, here is my walkthrough on installing LineageOS on the Lenovo (which bought Motorola) Moto Z.

  1. Get a USB -> USB-C cable. The one I received (from QuickMobile.ro) seems to be USB -> MicroUSB, and it was most likely by accident. The charger does not have the pluggable USB cable like most phones nowadays.
  2. Read through the entire installation guide, to get an idea of what's expected of you.
  3. Make sure you download all the software, and that the software you downloaded is at least showing its version when you ask it to.
    • There may be trouble still. I installed LOS on a friend's Galaxy S5; and it required "Heimdall". The version coming with Debian did not work (1.4.0), because Samsung updated something (even for such an old phone). I needed to compile the latest version from source (1.4.1), and then it worked.
  4. Make sure the website where you beg your manufacturer to unlock your bootloader works. In the case of Motorola, it sends you the unlock key via e-mail (even though you are logged in).

Unlocking the bootloader

When I started performing the guide, I was worried about the following error:

(bootloader) 'device-info' is not a supported oem command
(bootloader) See 'fastboot oem help'
But it turns out it was no big deal.

After I performed the steps on Motorola's website to unlock my phone, I got a very strange response via fastboot:

dan@debian:~$ fastboot oem unlock <key here> 
(bootloader) invalid boot state
OKAY [  0.002s]
finished. total time: 0.002s

I thought it's not unlocked, but then I found a forum post; it said the device should show "Flashing unlocked: Yes". For me, it shows "flashing_unlocked", as you can see here:

Pretty, isn't it? :D

However, the device did not restart by itself, as it said on the website and the guide. However, it did reset the USB debugging to off, as said in the LOS guide.

Flashing the recovery firmware

Continuing the guide, I encountered another obstacle at the following step:

6. Now reboot into recovery to verify the installation:
  • With the device powered off, hold Volume Up + Power.

You should NOT press the power key when you see the "START" option (blue speech bubble). You should NOT attempt to turn off the device either. This is because, when you start holding the power key to try to turn it off, it INSTANTLY continues booting. This step DELETES the recovery firmware you just flashed (called TWRP), because the phone wants to forget the trauma =)

What you SHOULD do after flashing recovery is press the DOWN ARROW two times, so that the option shown is the RECOVERY MODE one. 

Only THEN click the power button to confirm it, and you get TWRP :)

Sweet success!

It takes about 30 seconds to load, then you can continue with the guide from "Installing LineageOS from recovery".


I finished installing.
It seems I am not allowed to install APKs (including F-Droid).

Addressing this problem: I found out about this privileged F-Droid. Thankfully installing it is not that hard anymore:
  1. Reboot to recovery again:
    • adb reboot recovery
  2. Copy the F-Droid package to the phone:
    • adb push org.fdroid.fdroid.privileged.ota_2070.zip /sdcard/
  3. Use TWRP to install that package (DO NOT WIPE THIS TIME!).
  4. Reboot to System.
I then had F-Droid installed and ready to update itself.

Fun fact: You can avoid installing Google Services completely; you can use YALP Store. There are some caveats however.


It seems that the GPS is getting a location fix quite slowly. This could be due to missing Wifi/network-based location servers. Will update this post later about this issue; and will also update about what else I test. I couldn't make a phone call yet, because my Romanian SIM card is too big. But the Ukrainian one seems to be working and connecting to the network :)

Also, I am amazed that the files were left mostly intact (photos, videos and documents). But you should back them up just in case. Also, sharing contacts via Bluetooth worked!

Hope you enjoyed this walkthrough! Here are two screenshots from the phone.


The GPS works (but still takes about 30 seconds to load; I tried the "GPS Status & Toolbox" app.
What I tested and also works: taking photos, video recording in 1080p, calls, browsing via mobile data, NewPipe (unofficial YouTube client, supporting background playback), gestures, fingerprint reader. If you want anything else tested, leave me a comment.

What does not work: Recording 4K videos (says "Video Failed"); "High-framerate recording" (option is greyed out), and the video stabilization option doesn't seem to do much (I can see motion blur when pausing on a shaken frame).
Also, the Clever Taxi app requires Google Play services, which I did not install. It might work if you install microG.

Even newer update 

The phone broke 8 months in, because it overheated. The service contractor claimed it was because of LineageOS.
This made me start boycotting new smartphones. My current one is a second-hand phone running Android 5; I never use it with my security-sensitive logins.