I have always wanted to contribute to Open Source. I have reaped the benefits of using Open Source packages throughout the years, I sincerely want to give back. What has been stopping me all this time? Lack of time is my main excuse. I have two small children and by the time I clean up from dinner and get them bathed and off to bed, there is little time left to code. I tend to use this excuse for lots of other tasks that I avoid around the house, like closet cleaning, reorganizing the garage, etc … But an excuse is exactly what it is.
I learned an invaluable technique to tackling projects around the house that I would like to get done, but seem too large or for some other reason have become subject to procrastination. First, I schedule a day to do something about it and then I put on a timer and just start doing it for 15 minutes. After 15 minutes, I am officially done. I can quit with no guilt and have the lovely feeling of having made a dent. Most often, once I get started, I want to keep with it and really get rolling. That’s OK too.
Last Wednesday, I decided to apply this technique and made a date with Open Source. After a Ruby user group, the night before, demonstrated the mechanics of fixing a bug using GitHub, I was finally confident enough to give it a go myself. I created a GitHub account, forked the Redmine project, fixed a bite-sized bug and submitted a patch – all in one night!
I was so jazzed up about it, that I decided that I was going to continue in my Open Source contribution quest on a limited time budget, by declaring that my Wednesday night is my Open Source night. It might only be 15 or 30 min, but I will be doing something and feeling that contribution buzz goodness.
I encourage everyone that has been struggling to find time for Open Source to just schedule one night a week. Just do something for 15 min and see what flows …
I decided to start playing with RDFs to start me on the road to understanding and programming Semantic Web. As always, the first step it to start with a “Hello World” type of exercise. In my case, I had armed myself with a good cappuccino at Starbucks and decided to set myself with a purl link and FOAF page.
FOAF (Friend of a Friend) is one of the most popular vocabularies out there for RDF (Resource Description Framework). It expresses relationships in a machine readable format and is considered one of the first social Semantic Web applications.
When you look at a foaf.rdf file, it is basically just an file with xml tags:
Not too much fun to start coding by hand though. Luckily, there is a handy dandy generator – FOAF-a-matic. Just fill in the form and you can easily generate the basic foaf rdf file for yourself. You can always add to it later. Save the file as foaf.rdf somewhere on your website for indexing.
Now you can do some fun stuff with it. You can check and visualize your RDF document with http://www.w3.org/RDF/Validator/. Or you can use a FOAF visualizer.
The final part is to set yourself up with a purl address. Purl.org is a website that is dedicated to providing web endpoints or addresses that can be indentifiers for individuals. It provides a layer of indirection that is very useful in the changing world of the web. For example, if I use my work web page link as my identifier in my RDF and then I change jobs, all my FOAF links will be broken. However, I can use my purl address and set up my identifier as my webpage and then change it when then need arises. So logon to purl.org and set yourself up with an account.
When other people “know” you in FOAF, they can use your purl link:
My FOAF is http://gigasquidsoftware.com/foaf/foaf.rdf
My purl link is http://purl.org/net/cmeier
That’s it! Hello World in FOAF!
I attended my first NFJS conference last weekend up in Columbus. Overall, it was an excellent experience. The speakers were all first rate and I got a chance to hang out and meet some other like-minded people who are interested in giving up a weekend to learn new technologies and generally just geek-out.
The main technologies that stood out to me are concurrency and semantic web. Concurrency and functional programming are becoming more and more important with the ability to scale out on the server, rather then scale up (horizontal vs vertical scaling). There is always some threshold to the amount of power that you can throw at one system. However, that limit disappears if you can spread the load out across many servers. Java runs into some real problems with threads and concurrency. For this reason, the functional languages like Scala, Erlang, and Clojure are really starting to shine. I was so impressed with Clojure, that I picked up a book for my “play around and take a look at” tech stack.
The highlight of the conference for me was on Sunday. I was fortunate enough to attend all of Brian Sletten’s sessions on REST, RDF, and all things Semantic Web. I was interested in the Semantic Web before I attended, but afterwards it is my new love. I have always been interested in databases and datasets, so discovering a technology that enriches data in a open distributed way across the web just made me giddy. The potential enterprise applications are very exciting. When RDF is combined with a HATEOS architecture, you have can have a robust, scalable, agile architecture that can integrate data across many different systems and datasources. These rich datasources can be sliced and diced for reporting and BI and can also be secured by row/ column level like security. On the e-commerce side of the Internet, even very simple implementations of RDF vocabularies are yielding very promising results. Best Buy put in a semantic web vocabulary on their website that resulted in 30% increase of sales. It is a very exciting time for semantic web technologies. I am a firm believer in that it is “ all about the data”. I think for the future it will be more like “Why have just data when you can have data with context?”
All in all, I had a great time and it was definitely worth the trip up to Columbus for the weekend. If you have chance to check out NFJS or any stuff about the Semantic Web or Functional Languages, go for it. You will enjoy it.