Following DHH 's (with whom I do not agree very often) trip to Linux on desktop land, and deciding to see if "This is the year of Linux desktop" , I decided to switch to Linux full-time for development and life. First, I started my journey with an old ThinkPad, nicknamed Shitbook. While being an old and slow device, I enjoyed developing and working on it a whole bunch. That gave me the final push…
I'm proud to announce that I became RIPE NCC ambassador and that you can pick up an Atlas probe from me at this years DORS/CLUC conference . What is RIPE Atlas? RIPE Atlas is a global network of probes that measure Internet connectivity and reachability, providing an unprecedented understanding of the state of the Internet in real time. There are thousands of active probes in the RIPE Atlas…
Thank you very much for joining me at Weblica 2024 . Here are the slides from the talk and also all the links I mentioned during the talk. Slides weblica_oban.pdf Links Elixir in action, 3rd edition by Saša Jurić https://www.manning.com/books/elixir-in-action-third-edition Shannon and Parker, authors of Oban https://sorentwo.com Oban Github https://github.com/sorentwo/oban Oban Pro…
Your browser does not support the video tag. Download PDF slides Thanks Thank you to HrOpen for sponsoring my trip and the presentation. Thanks to FOSDEM for having me, and to the wonderful people I've met along the way. Hope to see you all next year! ✌️ P.S. If we've met please reach out and get in touch!
We've kind of hit a wall with the whole buying presents for each family member thing. Honestly, it's been a real drain on the bank account, and it just doesn't feel right anymore. Every year, it's the same old story – we all end up spending a bunch of money, and half the time, the stuff we buy doesn't get the love we thought it would. You know how it is, after the holidays, you find all these…
For the past month, while renovating my office space, I was reduced to a lot of café bar work. And for me, this meant meetings and music with my AirPods Pro 2. The problem AirPods, and especially the new ones, have an amazing noise-canceling feature, and the ability to remove an earphone to stop music/video is incredible. Especially when random people start talking to you while you're working. But…
The idea So everything started off with the idea that I can somehow fake uptime of a machine by updating the time against a "corrupted" NTP that will lie about the time. Since there isn't such a thing as a lying NTP server I decided to create one. This will be an exercise in reverse engineering a protocol, some Linux command line tricks, bitstring manipulation in Elixir, and some various other…
I always liked this kinds of posts, more for a "history" sake for me than for others. Here is a quick overview of tools I use on a daily basis today to do my work: Sublime Sublime Merge iTerm TablePlus RapidAPI (Paw) Fish shell (a bunch of other small utilities, check out my dotfiles ^1 ]) For my desktop productivity tools I use: Arc (browser) Raycast CleanShot X Apple Notes For hardware I use:…
If you ever needed to add an SQL function that you can use in your Elixir project you might have skipped writing tests for it. There are a couple of official ways ^1 ^2 you can write unit tests for PostgreSQL functions but having it in the same code base will make it so you actually maintain the tests. Creating a function First of all let's write an SQL function. Here is one I wrote a few days…
I had a conversation with Marko Budiselić @mbudiselicbuda , the CTO at Memgraph ^1 , during this year's DORS/CLUC conference ^2 . We discussed graph databases in detail and explored their capabilities and applications. Since I had no prior experience with graph databases, I found the discussion fascinating. As an enthusiastic user of Elixir, I was especially curious about the possibility of…
This week I got a very weird bug report - the API action was not saving an update to the record with a user with limited rights. For this example let's say that this role can only change the value of a record and not anything else. Frontend will always send all params of a record but only the value will change. The problem There are a lot of ways how you can write a helpful checking function, and…
When all you need is a quick way for validation Phoenix params (either query or body) sometimes including a library[^1] is too much, especially for smaller projects. Today I'm going to go thru a very simple way of creating a validation schema, using it in a controller, and rendering the error in the view. None of the ideas in this post are really new[^2] but I didn't find a full write up of this…
I run a couple of internal and public applications written in Phoenix on our infrastructure. While services like fly.io exist and are amazing, sometimes it's both cheaper (and more secure) to run small internal applications on your own hardware. It's certainly more fun. Thru the years I've developed my own process of deploying the application and this post will document the current procedure. I'm…
Currently elixir-ls dialyzer does not work with OTP 25 and you can either downgrade to OTP 24 and wait for the fix, or build your own version of vscode-elixir-ls . And, this is exactly what I did -- built it with OTP 25, or to be precise: $ cat .tool-versions erlang 25.0.2 elixir 1.13.4-otp-25 You can get the prebuilt version for Apple M1 right here:…
Slides to the talk I gave at Elixir Zagreb user group are here in PDF format . Thanks for coming to my ted talk and watch this space for corrections and other notes as well! See you in September!
I wanted to run my own Name server forever now. Since I've started self hosting this was on my todo list. This weekend I've decided to do just that and started with a VM on OpenBSD Amsterdam . Once you have a VM and you SSH into it you can start setting up everything. Zones and domains I had a 0x7f.hr ready for me to use so I've picked that up. Let's start by preparing our zone file. Our IP of the…
This is a simple guide on how to get Unbound running as a forwarding and local DNS server on your network. Just install a base OpenBSD installation, and drop to shell after first boot. Be sure to setup so that the VM has a static IP on your network. For me that's 10.10.0.145. I will also be using nextdns.io for AD blocking and forwarding. Setting up unbound $ rcctl enable unbound $ cat >…
A few days ago I've asked my team a trick question -- what will be logged in this code example: class User { constructor(fullName) { this.fullName = fullName; } print() { console.log(this.fullName); } } class Test { constructor() { this.fullName = 'nope'; } run(cb) { cb(); } } const t = new Test(); const u = new User('0x7f'); t.run(u.print); Devs who still don't hate JavaScript…
Enter the name of the domain here and run the following command later on you can use those files with serve like this: npx serve --ssl-cert server.crt --ssl-key server.key
installation start by brew install gpg2 and after that's done install brew install --cask gpg-suite-pinentry pinentry-mac next up just add the pinentry to gnupg config echo "pinentry-program $(which pinentry-mac)" > ~/.gnupg/gpg-agent.conf keybase import first import the public key keybase pgp export | gpg --import after that the private key keybase pgp export -s | gpg --allow-secret-key-import…
This is a very interesting today I learned about JavaScript. Let’s say you have a function friendEmail : class User { get friendEmail ( ) { const { sharedEmail } = this . data ; return sharedEmail ? this . data . email : undefined ; } } Reviewing this, as I did, you might leave a comment saying: Should we return null here instead of undefined? And you would we wrong! As per TC39 documentation…
When I first started with JavaScript I made my own DNS server in nodejs. This was a long time ago and unfortunately, that code is now lost (for better or for worse). I needed a few hours to wind down from work and I remembered having fun doing this all these years ago. This blog post will explain, in detail, how I made my own DNS server in 2020. Requirements You will need a few things. Some are…
We are going to be using typescript for this demonstration since I think it conveys the idea the best. In order to do so we have to define two types used in this example. First one is a function that returns a promise with a type T , and the other is an array of arrays of T (think 2D matrix). type CurriedPromise < T > = () => Promise < T > ; type ChunkedArray < T > = Array < Array < T > > ; First…
Hi! Hello! So what's been happening with me? Well I started uni this fall and it's been going great. It's a bit taxing on the free time side but it's working out just fine. I've been working hard on some school tasks but I took up learning Haskell. It's great but hard at the same time. As a lot of you already know I am getting ready for my trip to Zürich in November. Writing pack lists, shopping…
I saw and ad for tile on feedly just hours ago and I fell in love at first sight. When I was a small boy I had a key chain that when you whistled for it the key chain responded with beeping. This is very similar to my childhood item. Only that this is better. When you start searching for your stuff that you lost or misplaced you just pull out your smartphone and start looking with a special app.…
Need for this came with the need for a new school laptop. In November this year I am traveling to Zürich, Switzerland and I will be buying my girlfriend an myself a new MacBook Airs for school. Now we all know that "third" world countries like Croatia tend to price up all products known to people so we decided to save up some money for future use and buy our laptops there. Even with an airplane…
Setting up Hubot should be a piece of cake, but sometimes it can be time consuming. But after spending my day in trial and error I finally did it without much problems after all. First things first, this is what you will need in advance: Campfire account (free or paid) for you and for your bot Heroku account (enter payment information up front in settings) Dependencies You will need installed:…
Surfing Reddit I found a nice little animation of popular search terms on Google. Looking at it how pretty it was I wanted it as a screensaver. There is a tutorial on how to do this on Windows too, just Google for it. This uses Google Trends . Click on the visualization image to get started. An animation will start with just one field. You can have more of them on the screen by clicking the little…
With help from Čedo, I managed to buy equipment needed to get my lab up and running. With equipment I also bought some components and started tinkering on this project that I was looking forward since May. TeaBot will be an ice cream box robot with wheels. Its purpose is to teach my self about robotics and electronics. 1st milestone - "Eyes" and LCD Using this sonar like contraption and some code…
I managed to get some work done in my workshop. I hooked up all the power to one big power strip, installed a new wooden desk and started to accumulate tools that I need.
I may be late with this one but I found about Bandcamp this morning in search for some new albums to listen. Ever since I invested in some serious music listening "tools" I have been searching high and lo for FLAC music on the internet. I have been using torrents for my music appetite before. But now for a meere $15 I picked up an album by Sarah Williams on Bandcamp. The actual process of purchase…
In the month of June I will be renovating my workshop. Upon completion you can expect much more tutorials, projects and videos. I have a few projects that I want to work on so I will list them here in the order that you can expect them appearing on the site and the channel. Projects for summer of 2013: Remote controlled power sockets (complete with source code, packaging and schematics) DONE…
Welcome to andreicek.eu! My name is Andrei and I am your hobby electronics host. I am 18 years old and always wanted my YouTube series but I never got to it. Since last few years I have taken an interest in electronics and microcontrollers so this will be the main theme throughout the website and the YouTube channel. (UPDATE: No it wont.) Currently I am still in high school (UPDATE: Still no.) but…