Wednesday, November 6, 2013

A List of links for Bluetooth Low Energy beginners

I had the pleasure of sharing my recent learnings about Bluetooth Low Energy in a Internet of Things meetup in Stockholm. It was inspired by a similar meetup held in San Fransisco back in October. I would like to share some learning resources for people who attended the meetup and this is what this post is about.

I would try to make this list grow over time.

Edit: I am dumping more links here from Droidcon Stockholm


First the basics. I think the best place to start and get excited is from youtube videos

 There are lots of videos from Bluetooth Tech channel, from home automation, security etc.

 If you want to go more in depth you can watch Robin Heydon from CSR do a really nice intro to BLE. This intro is similar to other webinars that are available out there. You should watch the whole series to get a basic idea

This following video presents BLE from a Linux perspective. I think it introduces too much detail without context, but can be worth watching for users who know their way around linux and have understood basics of BLE. Presentation in PDF is here.

 The following video shows difference between classic and low energy bluetooth

 A quick and fun way to get started with BLE is to play with TI Sensor Tag and an iOS device.

 Another way to get started with BLE is the Estimote app and kit (also on iOS)

 Of course if you are part of the iOS developer program, I would recommend you to watch WWDC talks on CoreBluetooth and CoreLocation from 2012 and 2013. There are talks from Google IO and Microsoft Build as well, but I think Apple talks are far better.

This new Android BLE tutorial from Double Encore BLE guru Dave Smith is really wonderful


  • First my hastily prepared presentation.

  • Robin Heydon's presentation (publicly accessible from


Programming Resources

Wednesday, October 2, 2013

Neo4j Graphgists: The most educational gists in my opnion

I am really glad that interest in Neo4j education is picking up and NeoTechnolgoy is taking a fun approaches to help people learn graph databases. These efforts tie in neatly with my suggestions regarding Neo4j community outreach. Back in 2012 we had the Neo4j heroku challenge. At that time Cypher was just coming out and the aim of heroku challenge was to get people comfortable with code/cloud and Neo4j. In the last year or so Cypher has evolved considerably and now it is a great initiative by the Neo4j-community-team to hold a challenge that focused on Cypher and graph modelling.

In this post I would like to go through my personal favourite gists from this challenge. I have a "fair" understanding of modelling with graphs; yet I learn some thing new and interesting, almost every time, when I am looking at other people's graph models (and that was my personal motivation when I began reviewing the gists). I am not sure how the voting for this challenge will be done and my intention here is not to influence the voting process here, just to spread word about great Neo4j examples.

I have (_briefly_) gone through all the entries from the graph gists. They are all interesting and I congratulate all of the authors for being part of this effort. I personally found the following gists more interesting (especially from an educational point of view).

  • US Flights & Airports: Delays, Cancellations, & Diversions: This is one of my favourite gist. Not only it takes real data from an open data set, it also does some funky statistics stuff. I will go through the gist again later to understand more but the explanation is quite good. I would vote this to be the best gist example for this competition as it is complete, simple, and helps us understand a new domain rather quickly. The author is continuing her work with this gist as part of a university project and I would like to also see that as well.
  • Why JIRA should use Neo4j : I think for me this example is very interesting. I have been a JIRA user for quite some time now and there are times that I have taken examples of their UI and did some thing similar in my own projects. But I never really dug up the domain model of JIRA (not even conceptually) as it seemed impossibly hard. This example shows that a complex domain model could done very easily in Neo4j. I would assume that every one who is developing software has used a similar issue/bug tracking system at their work (otherwise it may be hard to follow the example)
  • Product Catalog: A simple and beautiful example. Very relevant to a lot of folks who are getting started with Neo4j. A nice visualisation.
  • Learning Graph: This graph is interesting to me since I already maintain a graph like this in a text file. It gives an example of incrementally introducing complexity into the model.
  • Chess Games and Positions in Neo4j: This I believe is the most complex example gist in the competition (and that I say in a positive way). Not only it is trying to solve a well known computation problem for chess players, this example also uses real data and has some animation eye-candy. 
  • Models Sports Leagues: This was one of the first examples that I saw (and even commented about it on twitter). It is a very neat gist and rather self explanatory. I have to admit that I actually built some thing like this in SQL back in the day and it was not fun at all. Not content with just the gist, the author takes it further by providing source code (which in my opinion is a great idea for more comprehensive learning).
  • IKEA GraphGist: The last gist I will discuss here is from my Belgian friend Rik. He continues to amaze us all with his pedagogical skills. Of course the example comes with a great blog post. And like his other examples we get the raw data in CSV form so we can start playing with it on our own machines. I would like to see Neo4j being applied in manufacturing industry as I have worked some systems whose natural implementation is a graph.

I hope this blog post helps you to see some of great gists posted by Neo4j community members. I am looking forward to to seeing some of these gists used in an upcoming Graph Cafe meetup here in  Stockholm.

Monday, September 16, 2013

At it again

This is like the fifth time in the last 10 years that I have started a new blog. I am still trying to find a balance between what to post/share with the world and what to keep it to my self. My last blog was titled "No more rants" and today I have forcefully retired it. 

Why (you may ask?). My initial goal of that blog was to only focus on technical content and not say too much about other stuff (like politics, my travel adventures, life in northern Europe). But now I have changed my mind about it because I missed writing. I think writing helps you become a better person, since one(usually) takes time to reflect on the topic.

It is another thing altogether that with blogs you open your self up to the world and that can have some consequences (mostly some thing you wrote a while back can come to bite you back, example in my case was bashing of a company for no reason other than fashion, and of course bad writing that just make you look un-intelligent. 

I think I will probably change my mind about opening up again some time later, but at least I can blog freely now and share what I know, what I have learned, what I feel about various aspects of my daily life. Perhaps it will be useful to some one. So here I am, at it again.