Recently I have upgraded my good old Synology DS411slim to newer, bigger model - DS918+. I kinda started to run out of free space (1TB 2.5” x4) and decided to invest some money into new box and new drives. There is an official guide how you can do migration with disk swipe, but as I wanted to move my data to new drives I just decided I would try to rsync everything. And BTW there is a screen command if you would like to run in the background that can be found on synocommunity.
So it’s been a while since I finished prototyping my very first app in Crystal. I decided to dust if off a little bit around a week ago. It’s not available under moviestowatch.app domain, but aside that I got yet another idea based on the original concept.
How can you sleep when people are building serverless application in the cloud with blockchain while sitting in a self-driving car powered by AI and machine learning? Don’t get me wrong - behind some of those words are hidden really interesting things and problems, but as an average Joe that is doing mostly web-related stuff how do you deal with such noise? I think the answer to this is the same principle you might apply to different problems - keep it simple.
Few weeks ago I was upgrading legacy infrastructure for small sized project and decided to go with systemd for service management as I had quite good experience with it while tinkering with my toy apps written in Crystal. If you want to use systemd for rails/ruby project - there is a great news everyone! capistrano-systemd-multiservice will basically do the work for you and it I must say - it works just great.
Fortunately thanks to very smart people in the community - yes there is! So worry not, warrior of legacy code, protector of good practices. Now you have tools that will help you lead the way into the clean and solid code, where tests are always green and developers are happy. Ok, maybe I got carried a way a little bit here, let’s get down to the business ;). Rspec 3.3 introduced bisect command which is truly awesome, from docs:
I was still tinkering with my pet project a little bit - connecting it to social media was an interesting learning experience as I had to create tiny service in Node.js due to fact Crystal lacked proper libraries (and that is ok, you don’t have to duplicate everything in every language). Below are some short notes that might help you a little bit if you’re trying to do similar thing.
It was middle of a week, around noon I think. I thought to myself “I should write a yet-another NES emulator, that would be awesome!”. Few minutes later I am reading blogposts, articles, browsing repositories. And I am like “Damn it looks complicated”.
I noticed funny thing happening in my most recent pet project. All of the sudden (auto incremented) primary key was out of range for my smallint column. But how come? I had like 15 records in that particular table. It turns out it was all by design and completely makes sense when you think about it, but I managed to miss that anyway. The problem is when you do an upsert sequence on your primary key will be incremented anyway - it had to be obtained before actual insert so when you take a step back it’s like pretty obvious ;).
So I wrote my first smallish web app in Crystal and it’s been running for over two months now without much of supervision (thanks to monit and systemd). It basically, um, collects some metadata from IMDB every week or so. Based on that data I’m trying to find underrated movies worth watching. Some general thoughts for future-me: