Elixir

Managing multiple elixir versions on per Project basis

If you don’t use Docker and want to easily switch between different Elixir, Erlang or other packages on your system, I recommend you to use adsf. Once you have asdf installed, put .tool-versions to your project’s directory: .tool-versions erlang 22.0.7 elixir 1.9.1-otp-22 And run: asdf install That should do the job.

Continue reading

Recommended books about elixir and phoenix

As probably I own all popular books about Elixir, I decided to give some rating to them. My criteria: no waffling complete code samples (easy to follow, complete code without assumptions that reader aleady added some parts of the code) readable font Programming Elixir by Dave Thomas Everything you need to know to start working with Elixir. No boring intrussions. Focused. I’m still getting updates for my ebook from The Pragmatic Programmers.

Continue reading

Pair programming with vscode

I recently started using LiveShare extension to VSCode and must say it works like a charm. I’ve always been a linux user and didn’t like Microsoft for its opinion about open source but that has changed in the last years and must admit: they’re doing great job building the best IDEs for developers. Visual Studio has been always ahead of other IDEs in terms of features and developer-friendly interface. VSCode gained popularity among web developers and probably is one of the most popular IDEs these days.

Continue reading

Very good books I read in 2018

Top books I’ve read this year: Eat That Frog! 21 Great Ways to Stop Procrastinating and Get More Done in Less Time by Brian Tracy What’s remarable about this book …is that it’s telling you nothing you wouldn’t know already but it actually helps yout to turn this knowledge into action. Even the book is written the way that keeps you focused on the topic (only 144 pages, no long chapters).

Continue reading

Sample gitlab ci pipeline for elixir projects

One of the very thing I like to do when starting a project is having a CI pipeline running. It’s really worth to invest some time at the begining of the project and that will pay off in the future when more people join the project and you want to track history of changes or ensure that builds meet restrictions. I think gitlab is offering the best CI integration at the moment.

Continue reading

What are Goroutines

How does your OS see goroutines? If you’re beginning your advanture with Go, you’re probably attracted by Go’s support of concurrency. That’s the main selling point of this language. If you know some Go, you probably tell your friends that Go’s model of concurrecy is based on CSP (Communicating Sequential Processes). But how does it look under the hood? Does it use threads, green threads? If someone asked you to explain it how does it look from an OS perspective, what would you say?

Continue reading

Docker Security

Have you actually ever verified it? If you are a developer, you probably deal with already set up environment and your only job is to write a Dockerfile and push an image to a registry (or even less work if use Continues Integration). Altough I’m going to focus on production environment where Docker images are pulled and running, which is set up by DevOps or sysAdmiss, there’s still a good few things to check on your end to increase the level of security:

Continue reading

Add libGDX to existing Android (Kotlin) project

LibGDX and Kotlin Current libGDX version (night build v1.9.8) has issues with generating the boilerplate code when ‘Use Kotlin as the main language’ option is selected. the error: You can try generate the code for Java but the gradle scripts generated by libGDX are built for older versions of Gradle than the one used by the newest Android Studio 3.1.2 (stable) and the build process of your Android project may fail.

Continue reading

RabbitMQ essentials with Go examples

What is RabbitMQ? RabbitMQ is an Erlang-based implementation of AMQP (Advanced Message Queuing Protocol) which is an open standard that defines a protocol for systems to exchange messages. RabbitMQ provides support for the STOMP, MQTT, and HTTP protocols by the means of RabbitMQ plug-ins. Ok, simply speaking it’s a message broker (it accepts and forwards messages). Core Concepts Publishers (Producers) create messages and publish (send) them to a broker server (RabbitMQ).

Continue reading

Bonding wifi and ethernet interfaces

How to aggregate multiple network interfaces into a single logical interface? If you haven’t heard about network bonding - it’s a network setup that allows you to use two or more network devices to act as one interface, giving you expanded bandwidth and some redundancy. Basically you can turn a 1 GiB link into a 2 GiB link for the one virtual interface. Usually it’s used to bond ethernet devices, but let’s try to mix wifi and ethernet.

Continue reading