OJ’s rants What would OJ do?

1Sep/100

Webmachine, ErlyDTL and Riak – Part 1

riak-logo

It has been a long time coming, but the first post is finally here! This is the first in a series of post, as promised a while ago, covering off web development using Erlang. This post is the ubiquitous "get up and running" post, which aims to get your environment set up so that you can dive in to development. The next post will detail how to handle a basic end-to-end web request.

First up, a few things we need to be aware of before we begin:

  1. The information in this post has only been verified on Linux (Mint to be exact). It should work just fine on Mac OSX. I'm almost certain that it won't work on a Windows machine. So if you're a Windows developer, you'll have to wait for another post down the track which covers off how to get your environment ready to rock.
  2. We'll be downloading, building and installing Erlang, ErlyDTL, Riak and Webmachine.
  3. Even though it's not yet recommended, I'll be using the latest version of Erlang to power Webmachine and Riak (R14A). If I were to build a production application I would follow the guidelines of the Basho guys and use R13B04. Since this application isn't a production application happy to take the risk :)
  4. Rebar is the tool we'll be using to handle builds, but I won't be covering it in any depth.
  5. You will need the latest versions of both Mercurial and Git so make sure they're downloaded and installed before you follow this article.
  6. We'll be doing some interaction with Riak via curl, so make sure you have it downloaded and installed as well.
  7. This is intended to be a step-by-step guide targeted at those who are very new to web development in Erlang. This may not be the most ideal set up, nor the best way of doing certain things. I am hoping that those people who are more experienced than I will be able to provide feedback and guidance in areas where I am lacking.
  8. Over the course of this series I'll be attempting to build an Erlang version of the Code Smackdown site that I've been working on here and there with a mate of mine. You'll see that the sample application we're working on is called "csd" for obvious reasons.

OK, let's get into it. First up, Erlang.

25Jun/108

BFPG June Meetup

Erlang LogoThe time has come for another meeting of the Functional Programming minds! This months BFPG Meetup, starting 6pm Monday 28th, is the first one at our new venue: Microsoft HQ, Waterfront Place, Brisbane. For details on the location, take a look at the BFPG about page.

Erlang LogoThis month we have three speakers, and I am one of them! In my talk, "Erlang - Why should you care?", I will be giving a fairly non-technical introduction to Erlang. I'll be covering off the features of the language, some of its design goals and its history. I aiming to show that this language is not one that was spawned out of academia and that it has been applied in the real-world ever since its conception. If I have time, I'll also be giving a small demonstration of one of the neatest features of the technology.

Erlang Logo
I'll be posting the slides and demonstration code here on this blog as well as BFPG's home after the meetup has taken place.

Myself and my comrades, Tom and Tony, will aim to provide a fun and interesting evening at our new venue. Based on the RSVPs so far, it looks like we are going to have one of the biggest turn-outs to date. This is probably due to the exposure we got during last month's talk by Dave Thomas. There are still plenty of spots left, so if you're keen to come along, go and sign up. Bring your friends, your friend's friends and your mum.

I hope to see you there!


Update (6th July 2010): We had a fantastic turn-out of just short of 50 people (a record breaker for the group so far!). My talk seemed to be fairly well-received. No rotten tomatoes were thrown and the crowd seemed engaged through most of the talk. It felt good! I think many people wanted to see more code, but since that wasn't the focus of the talk they were a little disappointed. If people are keen for more Erlang goodness at future meetups, then I'll be happy to dive a little deeper.

As promised, here are the slides:

  1. PPTX
  2. PDF (Google Docs)
  3. PPT (Google Docs)

If you have issues reading the slide deck, or would like it in another format, then please drop me a line.

22May/100

Dave Thomas at YOW! Nights Brisbane

Haskell LogoTwo nights ago I was fortunate enough to attend a YOW! Nights conference held at the local Microsoft Office here in Brisbane. The speaker for the session was none other than Dave Thomas, the man behind the likes of ObjectMentor. Not only is this guy incredibly switched on, he is thought-provoking and very entertaining to boot. I've been to a few of these sessions in the past but I've never seen one as packed out as this one. It was great to see such a turn-out, which no doubt was boosted by the presence of both the Queensland MSDN Users Group and the Brisbane Functional Programming Group.

4Jan/102

Katacast: Shopping Checkout in Erlang

I've recently discovered the joys of CodeKatas. If you're a geek looking for a way to sharpen your saw then I highly recommend taking a look at these and trying a few out. They're great fun and they're a good way of getting your feet wet with new languages (especially if you're tired of Project Euler).

31Oct/0925

The Future is Erlang

erlangFor 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!

17Aug/094

Haskell 101 at the Brisbane Functional Programming Meetup

I just thought I'd let the world know that tomorrow night, at 6pm AEST, the Brisbane Functional Programming Group is having another get-together. The topics for the meeting are:

  • Introduction to Functional Programming - by Brad Clow
  • Haskell 101 - by me!

There are still spots available if you're keen to come along. It should be fun!

I'm always up for some public scrutiny, so come along and bring your rotten tomatoes.

If you can't make it, I'll post the slides for the talk on this site, and on Meetup.com, when the event has finished so you can see what was covered. Feel free to ping me or ask questions.

Update 19th Aug '09
The talk seemed to go quite well. I had to motor through the material quite quickly due to the late start, but on the whole I think it was well received. I haven't had any negative feedback so far ;)

Slides/content are now up for grabs!

27Jun/0923

Point-Free style: What is it good for?

If you're not interested in what inspired this post, then skip this section and jump to the more interesting bits.

A little bit of history...

Recently I've been delving into Haskell quite a bit. It's part of my apparently never-ending quest to learn as much as I can about as many languages as I can (well, those that appeal to me at least :)). While I love playing around with a language, toying with ideas, writing small programs, reading books, blog posts, etc it's not really the same as having an on-call expert to help and guide you.

25Jun/097

Data Crunching in Haskell

A few days ago I was having a chat to a friend of mine about a little data parsing problem. He had the need to parse a multi-dimensional array to pull out some values. That array was guaranteed to be square, but not necessarily in contiguous memory. He needed to parse each "column" of the array, calculate a total, and then determine the biggest and smallest of those totals.

A sample of the data might look something like this:

data = ({150,200,45,57,95,2,45,32,15,10,5,2,2,4},
         12,20,45,37,10,5,2,2,10,95,2,45,32,7},
         32,15,10,5,2,23,24,15,20,45,57,95,0,45})

So the first step would be to add 150, 12 and 32 and store the value. Then 200, 20 and 15, and store the value. Do this for all of the columns, then get a maximum and a minimum.

30Jul/083

Project Euler #10

WARNING! This post contains a spoiler for Problem #10 listed at Project Euler. Do not read the rest of this post if you're planning to attempt to solve the problem yourself.

25Jul/080

Project Euler #9

WARNING! This post contains a spoiler for Problem #9 listed at Project Euler. Do not read the rest of this post if you're planning to attempt to solve the problem yourself.