The Future is Erlang
For quite a while I've been using my spare cycles to chew over a problem. This problem is not one that hasn't been solved before, but one that I feel can be solved in a much better way. From the bit of research that I've done, I can see at least three areas which can be improved on dramatically. So I've decided, after a long period of deliberation, to go ahead and build my solution and release it to the world as a service!
I know, this kind of thing happens thousands of times a day. Some arbitrary geek decided to build the next killer app and expects to make a crapload of cash out of it. While that would be nice, the ultimate goal isn't the cash. The goal for me is to build something that gets used, and for me to begin to master an area of technology that I've had a quiet passion for for a long period of time now.
My plan is simple. While learning the technologies that I will be using I'll be building another application and blogging about it so that all of you can learn with me. Meanwhile, I shall use my learnings to build this other application at the same time.
The final result should be a series of posts which help other people learn the technology stack, give better coverage and visibility to languages and technologies that a lot of the geek world doesn't know about (and really should!), and for me to carve myself a bit of a niche here on the East coast of Ozland. I am hoping to be able to consult my services out to other businesses as a result.
For those that are interested in following along, here is the full tech stack and toolset that I'll be using:
- Erlang - A fantastic cross-platform functional programming language that has some amazing features.
- Webmachine - A HTTP toolkit which sits on top of Mochiweb that makes it easy to build well-behaved HTTP applications.
- Nitrogen - An Erlang-based framework that makes it easy to build websites.
- Riak or CouchDB - Both of these amazing pieces of tech are potential candidates for the back-end storage. I'm not yet sure which one I'll go with.
- jQuery - A great JavaScript library for the front-end.
- VIM - My favourite text editor
- Xubuntu - Ubuntu Karmic Koala with XFCE as the window manager.
- Mercurial - My favourite version control system.
- Trac - A project tracking tool.
- VirtualBox - My choice for virtualisation. I tend to run Windows 7 as my primary OS, so most of my dev will be in a VM. When I get my desktop machine back up and running (with all three monitors!) it'll most likely multiboot Win 7 and Xubuntu.
- Google Wave - I'll be using this for communications with some really switched on people in the Erlang community who have kindly offered to help me with questions and whatnot specific to some of the areas of tech I've mentioned above.
During the course of my blogging/learning I'll be focussing on Webmachine, Riak/CouchDB, Erlang and Nitrogen. All the other tools will probably get mentioned along the way, but the primary goal is to focus on these things.
I'm really excited! I'm currently in the process of documenting my goals and the design for the main application. Once that's done, I'll get started with the fun stuff. I've got a lot to do and it should be a fun ride. I hope you enjoy following along!
An Interesting Little Problem
This post was inspired by a recent interview question that was posted over at fsharp.it. It's one of those neat little questions which looks really simple on the surface but is quite tricky.
Preview Feeds in Google Reader
Here's another reason why I find Google Reader a excellent choice for reading your RSS feeds.
Most of us have a collection of feeds that contain similar subject matter. As a geek, most of my feeds are geek-related. As a geek who likes to stay up to speed, I also like to know what other blogs and feeds are good to read.
This is where Google Reader's Top Recommendations come in. Google do a great job of throwing other feeds in your face that you might like to read based on the kind of stuff that you've already subscribed to.
A Google App that Sucks
Google Labs has a history of releasing some pretty amazing bits of software. Google Earth, Google Mail, Google Reader, Google Analytics, Google Maps and Google Docs are just a few of the graduates! It's an impressive list to say the least. All of those applications do a fantastic job. I'm a huge fan of all of them and use them all regularly. So, Google, WTF happened to Google Talk?!
Moving to Google Apps
As you all know, I recently moved the Blackapache site to a new server. We had some teething issues, as ya do when making the move, but all is now well. One of the things that I hadn't got round to fixing was my SpamAssassin installation.
I'd already gone through the fun times of setting up email (POP3s, IMAP4s) with Qmail, which after a bit of time (and a learning curve) was working fine (with SSL, hence the 's' at the end of the names
) and all my users were able to send/receive without an issues. While trying to set it up, I was having issues getting both SpamAssassin and Clam AntiVirus working. Both of the daemons would run fine, but I just couldn't quite get the configuration right.
Thankfully, AV isn't so much of an issue as my users all have AV protection on their local machines. Spam, while annoying, can be lived with until I find the time to get the filters working properly - so I basically left these two things alone for a while until I found the time after doing all the other urgent bits.
I finally got round to making an attempt to fix the problem a weekend or so ago, but still couldn't get it to behave. I read forum upon forum, blog upon blog, and readme upon readme, but for some reason the bloody thing just refused to work. I got frustrated, reverted all the settings back to how they were before, and gave up for the day.
During the last week I was prepping myself for another attempt at getting it work, when I heard about Google Apps. I was a bit surprised when I first read all the details, because it was the first time I'd heard about it! Being a geek I thought I was pretty good with keeping up to speed, and I was a bit narked with myself for letting this golden nugget slip through the net.
I'm not going to go through the ins and outs of what Google Apps is all about as there are already a stack of pages out there already talking about it. What I will say is that I should have made the move earlier!
Not only do I no longer have to worry about keeping my entire email configuration (Qmail with vpopmail and courier imap, SpamAssassin, ClamAV, Horde/SquirrelMail) up to date and patched, I don't even have to have it running. The "precious" resources on the server can now be utilised for other things such as an SVN install. Each email user has 2GB of space, webmail comes for free and has the fantastic facilities that come with Gmail. Users can easily configure their own accounts, handle their own password changes, etc. My administration of email has basically dropped to just above zero. The only thing I need to do as an administrator is get the account set up initially, the rest is up to the user.
You can probably tell that I'm quite excited about this. It's great that I don't have to worry about this any more, and I can put more time and effort into other things. Of course, my excitement only extends as far as email for now, but I'm pretty sure that over time I'll also come to love the added features of Google Calendar and Google Calendar.
This service does come with its limitations, and with the possibility of Google Datamining, but for a home server which I use for a blog, having this facility to lighten the admin load is just fantastic.
I highly recommend considering this as an option if you're looking to sort out an email host! Give it a trial, at least for a while, and you may find you're as happy as I am. If you don't like it, you can always revert back to your old setup.
The Art of Googling
Everyone who uses the web knows how to use Google to find stuff. Well, at least they think they do. Googling is pretty easy, but it's also a bit of an art form. Some people just seem to have the 'knack' of finding things quickly, others take a fair bit of time.
So what makes a good Google search? How do you arrange your search string in such a way to allow the best hits to come up first? Or at least to help you find the info you're looking for quickly without wading through the besquillion results?
I consider myself to be a pretty good Googler. It doesn't take me long at all to find the bits of information I'm looking for. Here are some things to bear in mind while searching which may help you improve your hit rate while searching for things:
- Change the order of your search words.If you have a two word search term (say "OJ rant"), you'll get different sets of results if you search for OJ rant instead of rant OJ. Depending on the words in the search term, the results could be profoundly different. The best thing to do is start with words that better qualify what it is you're searching for. Let's say you're looking for information on Firefox errors, it'd be better to search for Firefox error as opposed to error firefox because the first term gives a better context and hence a more focussed set of search results. Errors are fairly broad and appear in stacks of places, but Firefox is quite specific.
- Use quotes to connect words together. When you're using a phrase or set of words which are linked together, and you know that they appear in a certain order, then use quotes to force a search for those words in that order. An example might be where you're searching for song lyrics and you don't know the artist or the song name.
- Don't be scared to use a long search term. It's quite surprising that lots of people for some reason feel that they can't stick in a really long search term. I've lost count of the amount of times I've come across a really long error which I've pasted directly into a Google search (with quotes
) resulting in excellent results first time out. Chances are that if you're looking at something like that, Google's indexed some information on it, so why deprive it of all that criteria when you search? The information is there, so use it. - Force the use of common words. Google strips out common words when you perform your search (examples are 'the', 'a', 'to', etc), so that it doesn't return every site on the Internet in every search result set. If you're not getting the information you need, and you feel that one of those terms is the key to that information, then force the word (or phrase) to be included by prefixing it with a '+' sign. A common one for me here is the use of com. The word 'com' appears in ever site that has a .com TLD, and so Google strips it out. But in my geek travels I search for information on COM fairly regularly. So I search for +COM to make sure the word 'com' is used without being removed.
- Give your searches extra context. If you're getting a stack of results which don't seem to relate to what you're looking for, then choose a few words which give more meaning to the item you're searching for and put them before your current search term.
- Cull words if needed. Sometimes you'll have a word or two in your search which actually help in muddying the waters. If you're not getting desired results using different ordering of the same search terms, then drop one or two off and see how that can affect it.
- Use a tabbed browser! I can't stress this enough
It's a bit different to the other points and is more focussed on going through the links that the search has returned, but trying to read a plethora of links without tabbing is just a nighmare. So get yourself a copy of Firefox and utilise the CTRL key
Many of you will read this post and think "yeah well no sh*t Einstein!", and if you do, then it means you're already able to search for stuff yourself
But you'd be surprised how few people out there really know how to leverage the power of Google.
There are million sites out there with in-depth coverage of the features of the Google search engine, which isn't really the target of this post, and hence I'm not going to link them or discuss them. The idea is to get you going with smarter search terms while utilising a small subset of Google's search term power. If you're looking for more information, you know where to find it
Google Code Search
The Search Kings have come up with another rippin' tool which allows you to crawl through source code for examples and whatnot. The Google Code Search is quite a cool utility - but it doesn't come without it's issues. I found an interesting link worthy of reading which talks about a few amusing results returned from this facility, which I reckon lots of people should check out and be aware of.
So this begs the question: Is this going to be a tool which allows hackers to get acceess to bugs in software a heck of a lot quicker? I believe so. Is that a bad thing? No, I don't think so. In fact, it'll teach developers (the hard way) that they need to be aware of security issues well before they release the code - which can only be a good thing as it should have a positive affect on the software.
As a small side note, there can also be some embarrassing snippets revealed which will make the big names cringe. So, maybe this will also teach developers to be a little more professional!
GooTube
Yes this is old news to anyone who reads any form of news
But Google have bought YouTube! How exciting. Personally, I'm very happy for those lads who set YouTube up in the first place. The idea was based on the need to share some large homes videos of parties with mates who weren't there, and it's turned into a multi-billion dollar empire. It's good to hear that there are people out there like this still making something big for themselves for having the balls to give it a go.
On a slightly more sour note, it looks like the lawsuits will start queuing up. Everyone with any connection to some of the "unauthorised" content on YouTube will probably join the long line of would-be beneficiaries from sueing Google/YouTube for breach of copyright. Let's hope that this kind of thing is nipped in the bud.
Real-Time Flight Monitoring
I had a read of Eastabrook's blog recently (see a link in the Blogroll) and noticed that he posted about an interesting link that he found. The link, entitled Flight Tracking in 3D, shows details of a few downloads that you can grab for Google Earth which actually show the current locations of flights that are currently in progress all over the world!!!
Unbelievable. Pretty amazing technology, and at the same time quite scary. What kind of possible security issues does this feature open up? I know that Google Earth has had these kinds of questions asked in the past, but this to me seems like it's taking the issue to a whole new level.