Building Blocks

Whole is greater than the sum of the parts 

Distributed social network general goals and security

Along with a lot of the rest of the tech internet population I had a lot of interest in seeing what Diaspora was doing.  I was generally amazed and compelled to watch the Kick Starter funding of the project, and thought that it sounded like a very interesting product.  It helped that I have a general interest in the ideas around distributed social networks.

Since the code has been released I can quite honestly say I haven't looked into it very carefully, firstly its in Ruby, which I am not that fussed with, and secondly I have read so many things about how bad it is.

What are the requirements of a distributed social network?

This all got me thinking about what was needed in a distributed social network.  Lets forget for a moment the things like games, and applications.  Also lets forget the interface (which seems to be where Diaspora spent a lot of there time).  What are the fundamental requirements.

The main thing a social network provides is sharing pieces of content between people and groups.  These pieces of content could be anything, text, images, video etc.

Along with the actual content payload there are three other fundamental requirements for the content:
  1. Reliability of delivery - the content should get to the given recipients within a reasonable time frame
  2. Encryption of the payload - only the people who are authorised to view the content should be able to
  3. Signing of the payload - the people who receive the content must be able to know who delivered it
So far nothing earth shattering (and in fact there might not be anything in that category in this post).

I got to thinking about a network where each individual has a server running on their local machine, possibly with the network working in a peer to peer manner, and different types of message scenarios.

Scenario A: Person A sends private message to Person B, both are onlilne
This can easily cover all 3 requirements above.  Person A signs the message, then encrypts it using Person B's public key, and directly delivers it to Person B.  Though if Person B is not online at the given time then this is not possible and requirement 1 cannot be covered.

Scenario B: Same as Scenario A above, but B is not online at time of delivery
This requires the message to be stored at one or more intermediate nodes, and then forwarded to B when they appear online.

Scenario C: Person A sends message to a group B1 - Bn
Sending a message to a group could cover multiple different use cases, sending a message to multiple recipients, or publishing a status update in an environment where that isn't public.  The simple solution to this would be to treat it as N individual messages and create a separately encrypted message for each recipient.  This however is very inefficient.
The second option is that each group has a shared key that is used to encrypt messages to that group.  Then just the single message is sent encrypted with that key, and all the recipients know the key and therefore can decrypt the message.
This would require a couple of extra details to make it secure.  Firstly each time the group changed in membership then a new key would need to be set up.  Secondly the key would need to be delivered to the group using 1-1 encryption.

I think that most cases are covered by this.

Just some general thoughts, I would be interested in peoples feedback on this.

Filed under  //   diaspora   distributed   network   social  

Comments [0]

Silicon Valley angel investors why not look abroad?

I have been watching with interest and reading a lot about the so called "AngelGate" that has been breaking over the last week in Silicon Valley.  A lot has been written about it specifically, and in general about the angel investment environment within the valley.  One of the big things I have to wonder is why so many angel investors are trying to fight it out in one place?

Specifically the article that I am thinking of is Robert Scoble's "The secret hell of tech industry angel investors".  In this article Robert talks about how the angel investor world is getting hyper competitive, pushing up valuations, and that some angels are finding it difficult to find deals at a reasonable price.

Not all startups are based in Silicon Valley..... or even in the USA.

I am one of the founders of a tech startup that is based in New Zealand that I think ticks a lot of the boxes:
  • Business SAAS platform
  • Targeting the media and communications industries
  • Semantic technology
  • Have interest from major players in local environment
We are yet to launch (otherwise I would include a link here), and at present are in heavy development - though have a lot to show for it.  So far the development has been funded by the founders, but due to this things are developing at a slower speed.

We have been seeking investment within New Zealand over the last 4 months and the story has been the same everywhere we turn.  Come back once the service has launched and we have customers on board.  It seems that angel investment in New Zealand is a very risk adverse industry.

To be honest, once we have launched and have a couple of customers on board we wont need the investment.  At some point it might make sense to take some investment after this time for fast international growth, but we will just have to see about that.  We have a plan to launch in New Zealand (good test environment), push into Australia quickly, then go for the rest of the world.

The main reason to highlight our specific situation is not to say woe is us, or look at us, it is to show that there are opportunities out here that are probably worth looking at.  I am sure that there are a lot of other opportunities within New Zealand.... and yes probably other places in the world too (even Australia).  Some companies cannot relocate to Silicon Valley or even afford to spend the time and money on travelling there to canvas the investment market.... though in our case we are considering this.

Why not look internationally?  Maybe there should be something along the lines of YCombinator / Techstars demo days, or TechCrunch Disrupt to get all the startups in one place for a group trip by a group of angels.  Maybe someone like Richard MacManus of RWW (since he is based in Wellington, New Zealand) might be interested in doing something like this for Australasia?

Filed under  //   Entrepreneur   Investment   New Zealand   Startup  

Comments [0]

Display advertising based on location based check-in statistical profiles

Its funny where reading a stream of tweets can take you.  Seeing a few different concepts near each other in the same timeline can make for some join the dots thoughts.  This morning a tweet about location based check-ins, then soon after a tweet from Robert Scoble about ADstruc, got me thinking about the wealth of data in check-in profiles that could be used for outdoor advertising.

Currently I imagine that outdoor advertising is placed based on some sort of statistical profile of the type of people that would be passing the given location.  I am not sure how this profile is currently calculated, maybe its based on surveys, or maybe its just based on best guess.  Location based check-ins give a new way to collect this consumer profile.

Firstly there is the static route.  That is you can find out the statistical profile of the people that check-in to locations in a given area and then use that information to put up outdoor advertising that targets that particular profile.  The ads that are displayed should have a higher impact on a greater percentage of the passing consumers because there is more chance that they will fit the profile that the ad has been targeted at.

Secondly there is a very dynamic option.  Now days it is not uncommon for at least small to medium form factor outdoor advertising to be electronic display based.  Take that same set of check-in data, generate a statistical profile of the people that have recently checked in to locations in the immediate area, and use that to update the display.  Over the course of the day the profile of the consumers in the area will most likely change and therefore the types of ads that are being displayed will change.  This should give a higher impact per ad viewing than either the current state, or of a static display.

Next add QR codes to the digital ads, consumers can scan the codes with their phone, and get a coupon for some product giving instant feedback on the impact of the ad.

Thoughts?

Filed under  //   advertising   location based  

Comments [0]

New Zealand a great place to develop and run a SAAS platform?

Disclosure: I work for a SAAS company, SMX.

A lot has been said about the New Zealand government giving a "Thumbs down for software patents".  I personally think that this is a great thing.  I live in NZ, I develop software, and I am totally against software patents.

As anyone who writes software should know, it is impossible not to "infringe" on patents when writing software.  Write any meaningfully sized piece of software and you are most likely going to literally write dozens of pieces of code that would theoretically infringe on someones patents.

It is impossible to be aware of the tens of thousands of patents on different software processes, user interface interactions, or general best practice concepts.  To be perfectly clear of all of these potential land mines you would have to vet every single block of code, e.g. method, through patent lawyers, and most likely have to rewrite a lot (probably making them less efficient, or just plain horrible to work on).

Even this wouldn't guarantee that you would be clear of possible future infringement.  You may not know of a patent that has recently been filed that you are infringing on.

Most likely though you will never be the target of patent threats.  The owners of the patents, which you have never seen, will most likely never see your code that "infringes" on their intellectual property.

BUT in New Zealand soon you wont have to worry as software patents will no longer be allowed!

Today in talking to co-workers about this I put forward the argument that this makes NZ the perfect place to develop and run software as a service platforms.  Why specifically them?  Well the software that you develop in NZ will not be at threat from patent attacks, but devices using the software could theoretically be blocked from import into other countries.

Use of a SAAS platform should however not be blocked from external countries (assuming the patents don't cover things in the UI).  If the code that is "infringing" on the software patents is running in NZ and never leaves the shores then I think there shouldn't be a problem.

Makes me wonder if we will see more investment and development in this area in NZ in the coming years.

Thoughts?

Filed under  //   New Zealand   SAAS   patent   software development  

Comments [1]

Minimum Viable Product / Test Driven Development

Yesterday I watched Robert Scoble's very interesting interview of Eric Ries, well actually I watched the first half I will be watching the second half shortly.  I have been reading a lot about lean startup recently through Eric's blog, and other sources.  Personally I find the ideas in lean startup to be very compelling and well worth pursuing.

Last night I had a thought about specifically minimum viable product (MVP) as compared to test driven development (TDD).  One of the ideas within lean startup is to ship the MVP out into production as early as possible.  Get customers using your product and get real feedback from it.

The idea is that there is a minimum set of requirements that the product must perform in order to be of any use at all, this should be your first goal.  It doesn't matter if 90% of your vision of the product isn't there, just as long as enough is there to be able to go live.

So how does this relate to TDD?  In TDD you create a test (or set of tests) before you write any code on a given piece of functionality.  Passing these tests is the minimum set of requirements that the new piece of code you are creating should perform.  You should write just enough code in order to pass the tests, and no more.  Once the piece of code passes the tests then it is the "MVP" in respect to those requirements.  New tests will then be added and the code needs to be extended in order to also pass these tests.

To put this into context, I have recently been doing some playing around with persisting an arbitrary Java object graph.  The very first tests that I wrote, and then wrote the code to pass, only allowed for there to be a single object that had a set of string fields on it.  I wrote only enough code in order to pass these tests.  Throw an integer into the object and the whole system would come crashing down, but it passed the tests at the time therefore it was the MVP.

The code has come a long way since then, with new tests being written and therefore the code having to be extended to support them, but it still doesn't do any lazy loading since that isn't a present requirement.  I know it will be a requirement.  I know how I will (probably) implement it when I need to.  It will require a bit of re-architecting of the present code when I do get to it, BUT at present it is not part of the MVP and therefore it is not in the present code.

Anyway I thought the comparison between TDD and MVP was quite interesting and thought I would share it.  It was a shame to have missed Eric on his recent trip to NZ, would have been interesting to have heard him speak in person.

Filed under  //   lean startup   mvp   tdd  

Comments [0]

iPad as a POS device

An interesting idea came to me today while reading Tim O'Riely's great post "The State of the Internet Operating System".  I am not sure exactly which part of the post made the light bulb glow but it was somewhere around the location services part just having followed on from the payment section.

Being lunch time my thoughts were around food as well.  So I was thinking a location based service for finding a given food in the local area.... no big deal, already done.  Then placing a pick up order with the given food outlet, again no big deal, probably already done (though I personally haven't used such a service).  Then the order coming up in a system for the food outlet where they will make the order by the time you go to pick it up, maybe already paid for online.

At about that point I was thinking about what system this could be and the iPad jumped into my mind.  It seems like a perfect fit for a POS system stores.  Large enough to be useful, touch screen, portable (maybe not requirement, but useful), networked etc.

An application could be built for the iPad that provided all the POS capabilities, then linked into an ecommerce web application that actually stored all the order information and allowed for the scenario above.

In a restaurant environment iPod's could then be used for waiters to take orders (I know this is already done).

Seems rather useful to me, and reasonably straight forward.  Thoughts?

Filed under  //   POS   ecommerce   iPad  

Comments [1]

RESTful design does not mandate client/server model

I was reading the blog post Social Web “Kingdoms” Collapse as Fast as they Expand, a Sign that REST’s Days are Numbered earlier today and it inspired me to write this post.

In the post Mark Essel writes that he would like to make a wager "None of the big social web communities that are popular today will be so just ten years from now".  By this he would obviously mean Facebook, LinkedIn, Buzz, and Twitter among a few others.

Mark's reasoning behind this is that with the continued improvement of connectivity and devices that these sites would become redundant to the end functionality that they provide, i.e. the social graph.  This social graph will be able to be distributed across the network, where each persons social data would reside within their own device(s).  The communication within the network would then be peer to peer in nature.

There is some interesting writing in regards to this at Linked Process.  Linked process would allow a participant within the global social network to have all of their data stored locally on their device.  When this data is to be accessed it is the process that travels to the data rather than the data having to be put into a centralized location where the process is already located.

I am however getting a little side tracked from the main reason for this post.  I fully agree with Mark about all of this, but I do not agree with Mark in regards to the REST part of his post.  What I don't agree with in particular is "This functionality can be fascillatated better by moving away from the client/server model tied to RESTful design".

There is no reason a RESTful design requires a client/server system.  There is a definite place for a REST based, distributed, peer to peer system.  Each device within the system would have a unique address, and have a set of resources contained on it.  These resources would be all the resources that describe my data within the social network.  All of these could be acted upon in a RESTful manner by other clients within the system.

An example of a single resource would be my list of friends, mostly from other clients access this will support only GET, though maybe it would support some sort of status update.  I choose this as an example primarily since it requires linking to external data.  Thats fine.  The people in my contact list also have a device that is uniquely addressed, and a profile addressed by a URI within that address space.  The fact that the resource isn't on the same device does not mean that they are both not a part of the same RESTful system.

In fact given that in a RESTful system the client holds all state information I can see that REST has quite a few advantages in this space.

Filed under  //   HATEOAS   Linked Process   REST  

Comments [2]

Number of Ideas > Available time

I have a lot of ideas.  I always have had a lot.  So many things that if they were implemented would be great.  I know that I am not the only person who has a lot of great ideas, in fact there are people out there who probably have more and better ideas, I just haven't met them yet ;-)

I always feel torn between what to spend my time on.  There is precious little time in the day, a lot of the day is taken up with work, and family life, with little left over.  Not that I mind my family life, far from it I adore my wife and little girl, and the time I spend with them is wonderful!

However at the end of the day there are a couple of hours spare when I get to work on things I am passionate about.  Quite often these hours are taken up with reading articles, buzzing, watching movies, roasting coffee, or writing blog entries.

BUT the flow of different ideas that I have doesn't acknowledge this lack of time.  So what to do with the ideas that I have?

How many of these ideas could I implement if I had the time?  Given my confidence in my own abilities I could implement all of them.  How many can I implement given my current life situation and available time?  At present it is running very close to zero.

It doesn't help that I keep switching what I am doing.

So the big question is what should I do with the ideas that I cannot do anything with.  Some of these I am blogging about and will continue to.  Just put them out there, someone else can run with them if they wish.  Others just waste away, and it is a shame.

How many ideas are lost every year?  What should be done with an idea that you know you cannot implement yourself?

Just food for thought.

Comments [1]

Thinking on atoms and molecules of information

Yesterday I read a very interesting post from Robert Scoble on "Coming soon: the disruptive molecular age of information".  Straight away this article caught my attention, I thought the metaphor worked very well, and realised the similarity with another area of interest for me linked data and the semantic web.  Over the next few hours I thought about a few things that I was interested in contributing to the discussion.

Firstly an overview of my understanding of information atoms and molecules.

Information Atoms

Information atoms are a singular piece of content.  This may be a photo, a Tweet / Buzz / Facebook status update, a video etc.  The list goes on, even a web page / blog post could be seen as an atom.  The important thing here is that it is a singular item.  There are a large number of these atoms out there, and they are growing daily.  Most of these atoms should not really exist in isolation.  They have more meaning when joined together.

Information Molecules

Information molecules are a collection of information atoms.  This brings me to my first point.  How are these atoms related to each other?

Robert mentioned in his post that geeks and bloggers can create molecules by copying and pasting url's into a blog post.  I am not sure that this is close enough to my ideal of a molecule, in fact far from it.  This still sounds like a collection of atoms, they all happen to be referred to within the one other atom (the blog post), but they have no structure.  Sure, the blogger could add textual wrapping around the url's and now a reader can imagine a structure to these atoms but a machine would still find it difficult to see that structure.  So I would call these related atoms, but not a molecule.

To me an information molecule would require both the atoms, and the bonds between the atoms to be defined.  This very much falls into the space of linked data.  The molecule can then be seen as a graph, with the nodes being the atoms and the edges being the relationships between those information atoms.

Information molecule example - A birthday dinner at a restaurant

What atoms are there?
  • Entered in Plancast, and Facebook Events
  • There are a group of people attending, each has multiple online profiles
  • A number of pictures/videos are taken and uploaded to difference sites
  • A number of Tweets are sent, Buzz posts made etc.
  • The location is noted through a site like Foursquare
  • The charge for the meal goes into a site (know there is at least one that does this, can't remember them right now)
Each of these pieces of information should together be built into a molecule.  Each of them is related to each other in a particular way.  The images and videos were taken at the given location, and of certain people.  The Tweets have a location (if geo tagged).  The bill is from the restaurant.  The molecule could have a given name, description etc. but in this case the event (either Plancast or Facebook) would do as the backbone of the molecule.

Note: with a given person having multiple online profiles there profiles themselves should form a single molecule that can be referenced from other molecules.

Single Site Molecules

One comment on Robert's blog was that a problem with forming information molecules would be that different sites would have to work together, and generally they don't like doing this.  Early in the molecular age it would even be nice to have a single site molecule.  In particular I am thinking of Facebook.

Recently I was married.  A lot of the people who attended the wedding are on Facebook.  There are untold images, status updates, comments on both etc. in Facebook about our wedding.  I am not a regular Facebook user so I might be missing something here but I don't think that you can build all of these into a molecule, or similar grouping.

This obviously isn't ideal but a start.

Searching the Molecular Space

One thing that having molecules would give us is an interesting opportunity for search.  Once I have created a molecule it would be easy to see this as an ideal way of searching for more information in the form of other molecules.

Molecules would have a certain amount of attraction between them based on the level of attraction between the molecules.  Attraction between molecules would be based on shared atoms, or atoms that both co-exist in another third molecule.  Based on how the atoms are linked into the molecules and the size of the molecules relative to the number of shared atoms a given attraction level would exist between two molecules.

Thus as I update my molecule, new molecules of interest will float into the neighbourhood of my molecule.

Revisiting the birthday example, imagine that after the birthday a certain subset of people from the party go out to a bar.  Their photos, videos, etc. from the bar are not part of the birthday molecule.  Due to another molecule being made about the bar event, and many things being in common between the two, the two molecules would be relatively close neighbours.

Building a Molecular Service

I don't have the answers here on how a molecular service would work, how it would be implemented, or answers to any of the questions Robert posed.  However I would say that services like TweetDeck and Seesmic are in a good starting position as being the providers of a molecular service.

Filed under  //   linked data   semantic web  

Comments [1]

Past, Present, Future Web

I was pondering the evolution of the web last night and wondered where the web might be in ten years time.  This is a very interesting question and one that if you could answer and be there slightly ahead of the crowd could be a very lucrative question.

I have spent almost all of my working career working on web, or at least vaguely web related projects.  All the systems I have worked on had web interfaces, these were either the primary part of the system, or a secondary or management part.  I guess this is what comes from starting your career at an ISP.

I haven't been working for all of the history of the web, but I would hazard to say that I have been working for all of the interesting part of its development.  I started on this journey in late 1997 starting part time, and wrote "Intelligent Interpretation of World Wide Web Queries" in the beginning of the following year which happens to have some similar ideas to Google's Page Rank (unknown to me at the time).

Through the years the web in general has progressed  from being rather static, to being a very different, very dynamic landscape.  The introduction of javascript, applets, and flash added a dynamic aspect to the pages.  Use of ajax techniques spread this dynamic aspect from something happening within the page, to something happening within a page in one browser being transmitted through a centralised server and updating a page in another browser.  The dynamic aspect of the web has spread to envelop all parts at once.

This is part of what is now referred to as Web 2.0.  Another aspect of Web 2.0 is that in the past the main drive of the web was companies pushing information out to users.  Nowadays so much of the information is pushed in by the users in the first place.

Much of the development of the web over time has been moving functionality that was once only available within desktop applications into web applications.  The web has caught up to the desktop application (see: Aviary amongst others), and in some ways now is starting to out shine it.  There are some major benefits from developing for the web including a larger audience, and a reasonably standard delivery platform.

Now days the web is pushing out further.  Things are being done that have never been possible in desktop applications, how would you do a mashup with desktop apps!

Things that a few years ago were deemed only possible by a large company now anyone can do.  Everyone has scalability available at their fingertips thanks to the cloud.  More and better frameworks are being created to aid in Joe down the street creating the next big thing.

The question is where is this taking us.  This isn't a question that I have the answer to, but I have a few thoughts around it.

Will new development be driven by changes in hardware?  The smart phone, net-book, tablet, e-reader seems to suggest this is the case.
Will there be more interaction with the users hardware?  3D graphics support, location based services, augmented reality, home security systems tweeting.... again seems like it.  Also note this is big area in regards to the internet of things.
Where will the semantic web fit within this?  The idea of the semantic web is very compelling, now if only it was here!  Where will linked data, and linked process fit within the future?
Will the "web" survive?  Maybe evolve to a point where it isn't recognisable?

What do you think?  Where are we going?

Filed under  //   Linked Data   Semantic Web   Web   Web 2.0  

Comments [3]