HN user

danpetrov

400 karma

I am a software engineer working in social game development. Have a background in software testing and computer vision, mostly work with Erlang and Elixir these days for work and personal projects.

Posts8
Comments14
View on HN

Telegram is great if you like shiny native features like stickers and having lightweight native clients, but at everything else Telegram is at risk of losing in the long-term.

The big reason for this is that Telegram decided to roll everything mostly on their own (including e.g. MTProto), Telegram is not compatible with Matrix unless you use a bridge, it is not e2e encrypted (unless you use mobile 1-to-1 secret chats. The server side code is proprietary, and the builds of the clients that are published to the app stores could be anything.

While I love using Telegram right now for talking to some groups of friends, I would look at supporting https://matrix.org , since it will likely become the de-facto standard of building messaging platforms.

Emacs Lisp is totally usable as a minimal scripting language outside of the regular Emacs context.

You can compile Emacs without any GUI toolkit support and run it heedlessly as a lisp interpreter. You can even make Emacs packages behave like CLIs with a few lines of code.

That's the thing, ideally you would perform a test for every single service that you use directly to their network.

In my previous company where we were doing live broadcast, we would have speed testers pre-installed on all the hub and edge servers, so we could get realistic numbers for a specific use case (for example, requesting. a video stream from Germany).

I have been studying programming since my early childhood years, because apparently I had decent logic skills and parents in the city would sign up kids for this private math and programming evening school.

Later though I originally picked to pursue an aerospace engineering degree and was working as a live dealer at a live casino company while studying, but the same company also had a large engineering department, and it was very tempting. So I went back to my roots, started out as a manual tester to get the foot in the door, and later slowly transitioned to automation QA and then to a backend developer. Now I switched universities and am doing a Bachelor's in Computer Science, mostly for fun and to fill in any knowledge gaps.

Really the new company didn't care about a degree, and I honestly learned way more from independent study and my work than I did at university so far. Blogs, conference talks and books are really what helped me a ton. While the new job is quite difficult, my colleagues are great, and we take very relaxing breaks and do lots of activities outside of work. Knowing that my work impacts millions of people around the world is quite inspiring.

The Elixir core team has been knocking it out of the park recently with features that developers actually care about, especially the developer experience like the IEx shell and error reporting. These things might not impact existing projects much per se, but this is a huge deal when new developers are learning the language and the ecosystem.

Erlang already comes with a distributed DBMS called Mnesia https://erlang.org/doc/man/mnesia.html , which under the hood uses ETS/DETS depending on the configuration. In distributed Erlang projects you'll find that or abstractions over it. Mne sia makes the most sense in mu opinion when you only have 1-2 relations or just need some kind of distributed cache.

In Elixir apps you'll frequently find the aforementioned Ecto "ORM", which has adapters to different DBMSs like MySQL, PostgreSQL, and even Mnesia.

Heh, never thought about it that way! But good question. Yes, it can translate on 2 axes at the same time, since the control loops for each axis run in separate threads, so there is no control locking. The same is with rotation - it can e.g. pitch, roll and yaw at the same time.