Home » Archive by category "Linux" (Page 4)

Why I won’t develop a Maximus for Monkey

I had originally planned for this post to be a bit different, but due to recent events the idea of a (or my) module manager for Monkey has become obsolete.

Not too long ago I asked around Twitter, the BlitzMax and Monkey forums to see if there was any interest in a module manager for Monkey. I’ve had some positive responses and so I decided to start a IndieGogo crowdfunding campaign for a Monkey Module Manager. I started to write down things I would want to do for this module manager and made a cost estimate. Setting up a decent looking crowdfunding campaign takes quite some time and I had originally planned on launching the campaign 1st of June.

20130609-150012.jpg

But then BRL released a simple module manager with a recent Monkey release. Though very different from what I had in mind it’s capable of installing modules from 3rd party developers. Although I haven’t tried it out yet and am unsure of how useful it is the fact is that there’s now a module manager for Monkey.

So what’s going to happen to the IndieGogo campaign? I’ve decided not to launch it. There now is a BRL supported way to manage and install 3rd party modules. And while I think having the option to choose which solution to use would be better (competition is always good for innovation) I have little faith in the Monkey community supporting another solution. Yes, I would’ve loved to develop a Monkey Module Manager but as it is now it’s not going to happen.

Installing HiPi on Raspberry Pi – Beware the date and time!

I’m currently in a small research group to see what the Raspberry Pi can mean for my school. Basically we’re checking out its features and capabilities. Our eventual goal is to create a remote controlled boat with a tracking camera on top of it.

Since Perl is my language of choice I decided to see what’s available already for programming the Raspberry Pi with Perl. It turns out there’s a distribution called HiPi (website) which seems to cover every possible interface the Raspberry Pi has.

Sadly I was having some issues in getting HiPi to install. When compiling the bcm2835 library the build process would fail. It turned out that the configure-process for bcm2835 detected that the files were newer than the date and time of the Raspberry Pi I was installing it to. This is something you’ll only find out if you try to install HiPi manually. When I was running the automated install script it wouldn’t give these details.

Luckily this can be fixed without any trouble. Just issue a date command like this:

$ date --set="2013-06-01T15:00"

Because the Raspberry Pi doesn’t come with a real-time clock it needs some help setting the time. You can also use NTP to keep the date and time of your Raspberry Pi updated, but this requires a network connection.

The future of Maximus, the BlitzMax Module Manager

Lately I’ve been thinking of Maximus‘ future. I’ve had a draft blog post with the title ‘Pulling the plug on Maximus’ poking me in the face for at least 6 months now and I’m still not sure if I should be writing it or not. I’ve got a number of reasons to end the project but also to continue it.

Reasons to pull the plug would be that I no longer use BlitzMax and thus it’s wasting precious server resources. I’ve also got little time for maintaining the codebase (it’s stable software, so not much going on there though) and keeping the service running. Furthermore I’ve got no clue on how big the Maximus user base is. I know a couple of BlitzMaxers (though it seems they’ve moved on from BlitzMax) who use Maximus, but that’s about it. As far as I know it could be 5, 10, 100 or 0 users. Aside from the users there has also been little participation from module authors.

There are also reasons to keep the project alive. It’s still one of the coolest things available for BlitzMax. It’s a big central repository with almost all available BlitzMax modules and currently there’s no other solution for easily installing your desired BlitzMax modules and their dependencies. It’s also a stable code base and the way it’s running now doesn’t require much maintenance. I’ve still got plenty of ideas to implement and improve Maximus as well. It can also be a nice playground for trying out new technologies. One such example was adding Vagrant support which is something I now use on a daily basis.

Still, I’m more and more feeling like ending the Maximus project. It no longer scratches an itch of mine since I’m not using BlitzMax anymore and like I’ve said I’ve got no clue if other people actually use it. Sure, from time to time I can find an entry in my log files that shows a module has been downloaded, but that’s about it.

For the time being I’m going to think about what my decision is going to be. Once one has been made I’ll inform you again on my blog. In case of termination I’ll inform ahead of it. Comments and suggestions are more than welcome.

Tmux scripting

I’ve been using tmux for a while no to manage my terminal sessions. One thing I kept on doing was after starting tmux that I would be manually adding windows, splitting them and issuing commands in each pane such as echoing the contents of log files with tail -f.

I had heard about scripting tmux before but never really looked into it yet, until now. Since I solely use the key bindings I had to figure out how to issue these commands without them. Turns out this is pretty easy and it’s documented in the man page.

Here’s an example of a tmux script I just added to Maximus-Web.

#!/bin/bash
SESSION=$USER

tmux -2 new-session -d -s $SESSION

# Setup a window for tailing log files
tmux new-window -t $SESSION:1 -n 'Logs'
tmux split-window -h
tmux select-pane -t 0
tmux send-keys "tail -f /vagrant/maximus.log" C-m
tmux select-pane -t 1
tmux send-keys "tail -f /vagrant/maximus-worker.log" C-m
tmux split-window -v
tmux resize-pane -D 20
tmux send-keys "tail -f /vagrant/maximus-mojo.log" C-m
# Setup a CoffeeScript compiler/watchdog pane
tmux select-pane -t 0
tmux split-window -v
tmux resize-pane -D 20
tmux send-keys "coffee -o /vagrant/root/static/js/ -cw /vagrant/root/coffee/" C-m

# Setup a MySQL window
tmux new-window -t $SESSION:2 -n 'MySQL' 'mysql -uroot'

# Set default window
tmux select-window -t $SESSION:1

# Attach to session
tmux -2 attach-session -t $SESSION

You can view the (up to date) origin of this script at GitHub.

So what exactly does this script do?

  1. It creates a new tmux session.
  2. It creates a new window called ‘Logs’ which is split into a grid of 2×2 with the bottom 2 panes being smaller in size (height). In every pane a command is executed. For example in pane 0 the command tail -f /vagrant/maximus.log gets executed.
  3. A second window called ‘MySQL’ is created which runs the mysql -uroot command.
  4. Then we switch back to the first window (actually second, as tmux pane numbers start with 0) which is the window that shows us the contents of these log files.
  5. Finally we attach to the tmux session.

The added benefit of this small script is that from now on all I have to do is run it and my tmux session will be configured for this specific project (Maximus in this case).

I’ve also found some other useful tmux resources as well which are listed below:

HTML2PDF Web Service - Convert HTML to PDFUsing HTML2PDF Web Service you can design in HTML and CSS, and convert the resulting page to PDF. Free trial available!

Vim essentials: Ack

Ack is a tool for searching your (code)files, much like grep already does, but better. Ack is written in Perl and works on all major platforms, including Windows. To use Ack with Vim there’s this nice plugin called ack.vim. Install it together with App::Ack and you’re set to go.

With a single command (:Ack [options] {pattern} [{directory}]) you can recursively search for files matching {pattern}. The results returned from Ack will be visible in a newly opened pane in which you can navigate and open the file to start working with it. Every result line contains the file path, position of the matched search and the contents of that line.

ackvim