Last week, I attended a free seminar on Neo4j and came back wondering why I’ve not looked into the delightful world of graph databases earlier! I’ve never really grokked relational databases in the sense that it’s never second nature for me to think of most everyday problems in terms of rows and columns. The biggest stumbling block I have is that it is still unnatural for me to think of a relationship between two things as being a column in a relational database. I understand it abstractedly but just not natively. Conversely, Graph databases address this issue directly and seem to have a much better mapping to what is intuitive in my head.
Of course, I’m very much a neophyte in the world of graph databases, and learning something new is always a delicate balance between sheer delight in discovery new ways of doing things and head-exploding frustrations. The best way for me to learn is to start on a concrete “next small thing”, and I’ve already hit some stumbling blocks I’ll like to get answers to:
I want a website like kayak.com that let’s you track flights, but instead of showing what tickets and fares are available, they show you what airline awards are possibly available.
To do that I need to model each airline’s award chart.
1) Most loyalty program’s awards are based on regions such as North America, South Asia or Europe. But of course, each airline’s definition of regions are slightly different. Do we create separate regions as nodes for each loyalty program?
2) Another example of a tricky region: Almost all regions encompass an entire country (e.g. North Asia includes all airports in Japan). The glaring exception is that most airlines separate Hawaii as a separate region from the rest of the US. How do we model Hawaiian airpots as a region?
Once of things that attract me to neo4j is the schema-less nosql nature. You are much less locked into your initial design or schema and as you discover what your real needs are, your database structure can change much more easily.
However, change management is never free. What are best practices when dealing with changes? From simple node label orrelationship name changes to more complicated design changes? Are there pointers to good practices?
This current project requires loading from myriad of disparate data sources (airport codes, regions, award charts, rule changes, etc.). What are best practices to initially load in such data, and then to ensure that such data is up to date?
A16Z has a delightful interview of John Markoff‘s long view of Silicon Valley and technology in general. It discussed the oft-mentioned story of how a 13-person Instagram toppled Kodak (which Markoff disputed given how Fuji managed to thrive). But that go me thinking that the story of Instagram is even more endlessly fascinating.
Waaaay back in 2012, when Instagram was acquired by Facebook for over $1 Billion, it sent shock waves through the valley and general buzz was that Facebook way overpaid for a $0 revenue 13 person company. Today, the pendulum is on the other end where Zuckerberg is hailed as visionary and analysts are now predicting that Instagram could bring in revenues in excess of $2 Billion just next year.
The podcast dives into the popular topic of secular stagnation and “how technology is everywhere except in productivity number”. Besides the Clothelines Paradox (which posits that GDP is not measuring all that we produce), we are also facing an Instagram Paradox: in 2012, the “GDP” of Instagram was $0, but the total present value of GDP was a lot more than that, even $1 Billion screams cheap in retrospect.
So, instead of a secular stagnation, are we just in the nascent stage of another a huge technological renaissance where work done today isn’t creating much “GDP” today but is really laying the foundation for value created in say 2025?
Update: Michael Spence speaks more eloquently on this topic
I want to do my own thing.
I want to live (relatively) simply.
I want to deal with people, not masks.
People matter. Nature matters. Beauty matters. Wholeness matters.
I want to be able to care
So begins on Freedom from a delightful pocket book titled How to Findfulling Work by Roman Krznaric. Other attributes of fulfilling work are flow and meaning. In meaning, Krznaric talks about not seeking extrinsic rewards such as money, status and fame but rather look for work that is autotelic or intrinsically rewarding, which involve doing things we are passionate about, or that we have an inherent talent for or that we can make a difference.
We are not called upon a vocation, but if we continuously do work that gives meaning, flow and freedom, with some luck, we could perhaps grow into a vocation
If you need to talk to a global service provider (e.g. an airline) that has a long call waiting time, find a phone number for that provider in a time zone where people in that time zone are likely to be asleep!
e.g. If it’s 3pm in Palo Alto, I could call United Airlines in Sweden where it would midnight!
(learnt this from my excellent tracking hacking class/group)
- How do you play a podcast?
- How do you shuffle songs? (answer: force touch is your friend!)
- Why is activating Siri so unreliable? or is it just slow?
- Can I turn off stand up tracking? Doesn’t seem very accurate
Here’s the final QR code for you to scan if you missed it!
If you are following the Yogurtland Looney Tunes “Flavors with Character” promotion, and are missing a few QR codes, I’m sharing the ones I’ve scanned below (Bugs Bunny, Marvin the Martian and Tweety Bird
Froyo girl has more info including the schedule for when new flavors will arrive.
Update here’s the QR Code for Road Runner:
Update from Froyo Girl, we finally have Daffy Duck for you to scan!