With the open source community growing fast recently, pretty much due to the influence of github and similar services that make opensourcing our
applications cool, less and less people are encouraged to hide what they are cooking in their cauldrons.
Github is basically a place where you can show off what you know. Pet projects are always a good way to show off. Look, I made this, to turn a refrigerator into a penguin! How cool is that, right? Even better, it’s open-source!
There are some people though, who are still convinced that sharing code is a bad thing. They invented it, and it has neat algorithms, so it must be valuable, and they’re probably planning on monetizing it. They just couldn’t be more wrong.
When you have a long-term pet project there’s basically no point in hiding it from the public eye. If you’re planning to be the next Instagram, it might not be the best idea ever, but should be completely doable in an open-source manner. There are a couple of businesses that build on either open-source stack, or a software that is open-source itself: Twitter and Facebook are both great contributors to open-source stack and application components, while Hackernews’ and Reddit’s engine are on GitHub, the latter complete with server configuration details.
The other concern I’ve come across when talking about releasing source code was attribution. The guy didn’t even want to make money off of it, just have his name noted somewhere. I could go on about the different licenses, but this is much simpler: once something’s on the Internet, it stays on the Internet. Once you share something with your name on it, your name stays on it until the end of the Internet, which is not anywhere in the near future.
I would’ve never learned the name of Avery Pennarun, had he not shared his projects on github. SShuttle and bup are wonderful tools that I now use daily, while git-subtree has gained much attention among the git community, because some claim it is superior to git submodules. I could go on about his projects, but I guess you already have the idea. I could also go on about other profiles I’ve found on github, and discovered that not one, but many of their projects are exteremely useful.
You can go ahead, and keep your pet projects under the shade for as long as you want, in high hopes of making a fortune. In reality, it is very unprobable. You can, on the other hand, use the Internet, and the community to help your project mature, and if people like it, you may even build a company out of it. I, too, went ahead, and made my latest side-project open source. It is my code, not the client’s.[.] More
I’m not a big fan of sleeping through the day. Another day lost from my life, which could have been spent on a beach, in a park, with family, or coding away. I’ve had different sleeping schedules during the past few years, much to the influence of university life, and a couple of weeks ago I started a biphasic sleeping schedule. Turns out, I’m not the only one who’s doing it this way.
In university, spending several evenings a week in a pub or at someone’s place was not unusual and the fact that most of our bunch lived within 10 minutes walk from the campus didn’t help much either. This kind of lifestyle distorted my sleeping schedule, if I can even call it so. I guess most people are familiar with this.
Working besides university and then full time made it impossible to sleep whenever and however long I wish. This resulted in considerably less time I could spend on my own stuff in a productive state of mind. Having a night out also got harder, and the day after was usually horrible in every way possible.
Two months ago, one day I messed up my alarm, and a power nap lasted four hours. I stayed up until I was too afraid to stay up any longer, and realized, that this works great. After a bit of consideration, I started experimenting with different sleeping schedules, and observed how they worked out. For the last 3 weeks I’ve been sleeping from 8 PM to 10 PM, and from 4 AM to 8.30, and it works surprisingly well.
The transitional phase was virtually non-existent. My morning boot-up time doubled in the first days, but eventually I managed to reduce it back to the regular. The benefits were obvious from the very beginning, and I haven’t yet experienced any real drawbacks.
I can easily have a night out and not be a zombie the day after (well, during the next period of sunlight). Staying longer at work occasionally also got easier, because I am productive longer. This also means that I can leave early some other time, so that I don’t have to piss off people who are following the standard schedule.
Missing out on an evening-sleep is not much of a trouble either. The next day I’m a bit dizzy, but caffeine helps a lot. 6 hours of continuous sleep can make up for the missed out evening-sleep, though. I’ve also had several nights out in a row, and it worked better than expected. During the weekend I make the second phase 8 or 10 hours, if possible, anyway.
Caffeine is a good thing during the day. One or two cappuccinos make work glorious. Black tea, green tea, or mate are also great boosters, and I actually prefer these over coffee: if I hold a tea-day, I drink roughly 1l of tea. During the night, I try to avoid drinking much caffeine, but then again, I’m drinking mate right now.
I’ll see how far I can get with this experiment, and for how long I’ll able to sustain this routine, but so far I haven’t had any serious issues with biphasic sleep. It was much easier to adapt than I thought it would be, and missing out a sleep can be exchanged for a longer monophasic sleep whenever I wish, which makes it easy to plan ahead. The beers tomorrow, for example, will be compensated for by a longer sleep. Totally worth it.[.] More
I have been a long time Google user. I was really a kid when I set up my first Google account, then others followed. Throughout the years I have managed my whole online life around two accounts at the same company, with a couple of other email accounts that I did not really communicate to everyone for various reasons.
These accounts held my personal calendar, my feed reader, and most importantly, my emails, both personal, and different spam I receive, although I try to keep regular email subscriptions down to a minimum.
While Google’s services try to comply with the needs of a geek, like being able to navigate using keyboard, all of these services have some shortcomings.
GMail, the most popular webmail interface, is indeed great, but doesn’t really work together with Pentadactyl, a Firefox plugin which provides me with Vim key bindings in my browser. Other than that, I became kind of tired of the interface and how I can’t customize it enough. I know I could have used mutt from the very beginning, yes. I was lazy. I’m not even starting up on ads and such.
Google Reader is also a wonderful service, but it’s not really friendly towards Pentadactyl either. It also provided me with functionality I did not want to use, but ended up using anyway, making me develop a custom of starring feed items to read later — just to delete from the starred folder a couple of months later, when they piled up by the hundreds.
Google Calendar was the least-often used of the bunch, so I can’t really criticize the user interface — I checked it once in a month, maybe, since I use my calendar from my phone mainly.
To top it all off, I use an Android device which is then linked to my Google accounts. Through my device I use Google Maps, Google Play to download some applications, and naturally, synchronize all my contacts and emails and calendars and Google knows what with the Cloud. With a capital C.
It bugged me, that all my personal data are stored on the servers of a company, and I have no control over what I delete and what I keep — and what others may see.
After having customized my desktop system to a point which some call insanity, I’ve decided I’m still not quite where I want to be with my environment. I want my own domain name, so that I have a cool email address, and, naturally, want to tinker with something. I subscribed to a VPS service at a friend’s hosting company, and started my exodus.
First off, I wanted a service that is secure. TLS only, with CACert certifications and a sophisticated authentication layer, that is unified across services for the ease of use and maintenance. Notice, that it is a single point of failure, so I have to make my choice carefully. Then again, the whole concept of my own personal cloud is a single point of failure.
What I wanted to create was a messaging centre. I needed IRC (and other IM services I use through Bitlbee) and email to be accessible from the same place, while having everything synchronized to my desktop as a backup, and available from my phone when on the go and/or without two hands.
I also wanted a webserver for my blog and whatnot, but that is secondary. Since some members of my family would be using it as well, I might need a webmail, but that is tertiary.
And I definitely don’t want to use SSH and tmux from a touch-screen device. That is just completely bollocks. I need the integration with the experience! (I actually like how companies bullshit like that. Nevertheless, I need the integration with the experience.)
The Base System
I had to decide which software I will use. I wanted something modern, stable and reliable, with a focus on security and resource usage, because I only have 256MiB of RAM to fill.
Since I use Debian Sid on my laptop and am mostly happy with it, and since I use LTS Ubuntu systems at work, I was thinking hard which OS to install. Debian Stable is always old, but is reliable and proven. Ubuntu is usually near the bleeding edge, has a great support and regular updates, but it is controlled by a company and doesn’t have the sick policies Debian has, which are usually pain in the ass on the desktop, but suddenly seem rather sane when dealing with a server that accesses the Internet. Debian Stable was pre-installed on the VPS, so that kind of solved my problem.
I knew that for IMAP I have to use either Dovecot or Courier. I have already used Dovecot, which is lightweight, easy to configure, very secure, has a good documentation, so it became my IMAP server.
Lamson, Exim and Postfix were my choices for the MTA. Lamson is an obvious overkill for just about anything that I wanted to do. I have spent long hours looking for clues whether Exim or Postfix would be more suitable for me, though. Consulting with Wikipedia and friends did not make my life easier: both are secure and performant. After reading the docs of Postfix, I could come up with a suitable configuration in a couple of hours as a complete noob, and I considered that a success.
For fighting with spam I chose BogoFilter, which needs to be trained to work at all, but after a couple of weeks I stopped receiving spam to my INBOX. The decision to use BogoFilter was pretty much like the one of Postfix. It is trivial to configure, and to script up, while does what I want it to do, and only that. I could have used SpamAssassin instead. Oh well.
I tried to keep configuration to the minimum. These tools have sane defaults, and there won’t be big load on the server, so I didn’t fine-tune for performance. I did go full-on nazi for encryption, where I saw the point.
Sadly, there are a couple of gotchas with email security. You basically can’t set always-on SSL/TLS for the SMTP client (note that an MTA is both a client and a server) because there are other SMTP servers that don’t support that, including huge multi-national companies. Google fortunately supports STARTTLS when delivering and receiving mail to or from another SMTP hosts.
I hooked up Dovecot’s SASL authenticator with Postfix’s SMTP server, keeping user management in one place. My SMTP can’t be used to send mails unless you authenticate, and use the dedicated port for this purpose. This is a logical move, of course, since spammers regularly test my box for such a “functionality”.
I also configured Postfix to be grumpy about receiving mail from others. I did not instanly enable BogoFilter. For a couple of weeks, the only trace of spam was in the syslog: Postfix rejected even the connection itself. I also received some HTTP GET requests to port 23. That, I do not understand.
From the very beginning I used the dropper of Dovecot to deliver mail to my virtual users. Installing BogoFilter made it necessary to either pimp up the dropper configuration or switch to maildrop or procmail. Since I did not want to dig into a new kind of obscure syntax for configuring something trivial, I opted for using Sieve that is supported by Dovecot.
Sieve is a language designed to filter emails. It can be complex, but it runs in a sandbox, and is not a general-purpose language, so I suppose I have nothing to be afraid of. Postfix uses BogoFilter to label the mails as either spam or ham and bounce them back to Postfix, which gives it to Dovecot’s dropper, which has a Sieve plugin. The Sieve script is then executed, and sorts the mail into place.
Thunderbird or Roundcube can manage Sieve scripts on the server using the ManageSieve protocol. A ManageSieve server can be enabled in Dovecot. I have shell access, so I prefer to write and place my scripts myself.
I prefer command line tools, so I chose mutt as a mail client. I synchronize my mail from the server using offlineimap to my laptop, but I also sometimes run mutt when I’m SSH’d into the server. On Android, K9Mail is a kick-ass mail client, with IMAP push support, so my phone beeps instantly when I hit the ‘Forgot my password’ button. It can’t do IMAP search, but support should be on its way. I’m planning index my mail locally using notmuch, which can be integrated into mutt pretty easily, and trivial to hook up with offlineimap.
It’s been a couple of months that I’ve been using this mail setup, and it is pretty damn convenient. People say that running your own mail server is a PITA, but honestly, I had no problem whatsoever.
On the first stage of the transition, I set up the mail forwards from my Google accounts to the email addresses provided by my new shiny toy. After two weeks, on an over-caffeinated night I deleted one of my Google accounts, and the only thing that’s keeping me from deleting the other is the lack of time: lots of services use your email address, that you may seldom use, but they’re important when you need them. I really need to sort out the ones I need and the ones I don’t.
Next on: sync your contacts and calendars[.] More
The personal computer itself is in a trouble these days, that must not be a question to anyone. With the rise of smartphones and tablets, fewer and fewer people use a PC as their primary computer. You can write notes on an iPad just fine, and you can read your mail and have your photos and manage your calendar, and you can facebook. Yes, this a verb.
Power users, such as developers and designers are a different breed, though. I’ve recently read a rant about the condescending UI of the very personal computers that we, developers, just can’t ignore yet. I have to admit: I’m an outsider from the UI hell of today’s desktops. I used to use all kinds of desktop environments, from a brief couple of months with OS X to extensive use of Windows, Gnome, XFCE, KDE and whatnot. I like to think of myself as a connoisseur, and as such, I have settled on something that may seem rather perverted when first introduced to.
When I was first shown a tiling window manager, it seemed something brain-damaging like Haskell. Then it turned out to be written in Haskell. To be honest, I did not like it. It seemed way too complex and hard to learn, so I dismissed it as some geeks’ toy, that even I did not get.
I was using E17 that time. It was nice, beautiful, fast, and small. One of the cool things about it is its extensibility. I could not rest. I grabbed a tiling plugin.
Contrary to what most people are used to, windows in a tiling window manager do not overlap and move freely on your desktop. You cannot just resize a window as you’d do in Windows. The open windows on your desktop lay out on your desktop, covering your background, and getting away with distractions.
What it basically does, is laying out the windows on your screen according to a specified ruleset. You may want columns and rows — a screen filled with terminals, chat windows, and whatever you may think of. It’s nice to see all of them at once. They’re pretty, black, and translucent. Or, you may want your windows tabbed, or stacked in a column, while the rest of the screen is filled with one big window: a browser, or music management application maybe.
Windows 1.0 had a tiling window manager, and the Metro experience in Windows 8 is going to have something alike. While these are operated with a mouse, and are for regular people, most of the hard-on tiling WMs are primarily operated through keyboard with only a few exceptions made for human beings.
Window management with keyboard, though, is something you have to learn. I can’t remember how I got used to it, but now I can’t imagine using a mouse for this kind of stuff. I’ve also made my life considerably less painful by using a fixed window layout: feed reader and articles to read are open in the browser on my first virtual desktop. My second holds the work-related browsers. Third one goes to email and chats. And so it goes.
Using virtual desktops gives you the way to keep the arrangement of windows that you currently have, and start a fresh one, with different applications and gadgets, while always having the ability to go back to the previous task. Using a fixed virtual desktop setup ensures everything is in its usual place. I can rely on where the Firefox I need is, and where I will find my Thunderbird.
This is not only some geeks’ toy, though. KDE has this option built-in, and Gnome Shell seems to have an extension for this purpose. There is also a window manager designed to work with older Gnome releases, and Unity 3D also has some limited tiling features.
The extensions for desktop environments, however, do not really reflect the real world of perversion from your inner geek’s perspective. New projects are announced just about every year at Chaos Communication Congress, because, well, all the others suck. Therefore, you can get your window manager in every flavour you can possibly imagine: If you’re really into Lisp, you can find one written entirely in CL. If you’re obsessed with GNU Screen, there’s another that may float your boat! Plan9 architecture? Here you go.
Jokes aside, apart from the trusted old players I mentioned above, Herbstluftwm, a new kid on the block, does seem promising, while i3 has evolved very nicely during the last year, and has good defaults for tiling virgins.More