BitTorrent Sync
A month ago I wrote about File Transfer for mobile phones. There I wrote how I think a solution for file transfer should work. A few days later I found Bittorrent Sync. Problem solved!
Use ZeroMQ to control a receipt printer
A customer needed a solution to the following problem. There are multiple web POS systems that need to print to a receipt printer. The web server is not in the same place as the POS terminals, but they are connected to a network. To solve the problem I used ZeroMQ to connect the web server to the receipt printers. The current solution consists of four parts. Web app Web server (connects a PUSH socket to a PULL socket) ZeroMQ device (a multiplexer receives from a PULL socket and sends these to a PUB socket) Computer with receipt printer (a sink that receives on a SUB socket subscribed to its own address) First a user in a browser clicks the button to print a receipt....
File transfers for mobile phones
Sometimes I need to copy a file from my computer to my phone. That’s should be really easy. But it’s not. I would like it to work like this: I put a file in a folder. If my phone is on the same network, the file should be copied from the computer to my phone, without further actions from me. And that’s it. The file shouldn’t be copied to a server somewhere else....
Redis queue design choices
In a previous post I wrote about simple job queue in Redis. In this post I like to write a bit about the design choices. I think these choices illustrate a point about design. Job handle The job handle in the code is create by the client (with help from the Redis server). This job handle is passed to the queue in Redis and picked up on the other side by the worker....
I rewrote my blog software in Perl
In the last few weeks I have rewritten my blog software in Perl. The old version used Ruby. I wrote that version, because I wanted to try out Ruby. The software is about as old as the blog itself. The new software is written Perl. I use many new modules in Perl. For example Moo, Path::Tiny and Carton. Moo is an OO library for Perl. It allows me to write OO code in Perl without any boilerplate....
Simple queue in Redis with Perl
Sometimes you need to have a asynchronous worker written in Perl. The small script here takes a job from the queue and executes the code. It only takes a few lines of Perl. use Redis; my $redis = Redis->new(encoding => undef); my $queue_name = 'q'; my $timeout = 10; for (;;) { my ($queue, $job_id) = $redis->blpop(join(':', $queue_name, 'queue'), $timeout); if ($job_id) { my %data = $redis->hgetall($job_id); # do something with data....
Dockerfile for Pinto server
Yesterday I created Pinto server on a server with Debian. Today I did the same but with Docker. Docker is way to run processes in their own sandbox. Docker uses a Dockerfile to create an image that run a certain process. The Dockerfile that I used to run pintod looks like this: FROM ubuntu RUN apt-get -y install curl perl build-essential RUN curl -L http://getpinto.stratopan.com | bash RUN mkdir /var/pinto VOLUME /var/pinto EXPOSE 3111 RUN adduser --system --home /opt/local/pinto --shell /bin/false --disabled-login --group pinto ENV PINTO_HOME /opt/local/pinto ENV PINTO_REPOSITORY_ROOT /var/pinto RUN /opt/local/pinto/bin/pinto init CMD /opt/local/pinto/bin/pintod I created a volume for /var/pinto that contains the repository....
Dist Milla and Pinto
Today I was working on a private module that I use to write web applications. A few weeks ago I found out about Milla. Milla is a plugin bundle for Dist::Zilla, which makes it easy to create Perl modules. When you’re ready Milla automatically releases your new module to PAUSE. This is really useful for public modules, but not that useful for private modules. Pinto is like CPAN in a way....
Create your own YouTube playlists
A few days ago Mindcrack Ultra Hardcore season 11 started. In Ultra Hardcore the play by special rules, that are different from vanilla Minecraft. The biggest difference is that players don’t regenerate health automatically. They need to eat golden apples to increaes their health. These apples are harder to make, because you need golden ingots instead of golden nuggets. Each season players record videos of their perspective of the match and post these videos to their YouTube channel....