Social Feed Part 1 – The Database  This is the first part in a series of articles focused on building a web application with similar features to that of FriendFeed and Twitter.
So as I mentioned yesterday I am going to have a shot at building a web application similar to FriendFeed and Twitter, it’s going to be called Wandering Worlds Social Feed or wwSF for short.
To kick things off I’m going to talk about the database. wwSF will be a very data heavy project and we need to make sure that the data going into the database is put there in a logical way.
Here’s the first run through of database tables I believe I’ll require.
Database Tables
User – This table will hold all user information.
Content – This table will hold all content, both created and aggregated from other sources.
ContentType -This table will store a unique identifier for the services we will be aggregating (Twitter, Flickr etc) and also types of content postable from the application (videos, photos, text)
Relationships – This table will hold the relationship (friend) information between users.
Comments – This table will hold all comments, comments can be posted to all kinds of content.
Likes – This table will hold all likes, all kinds of content can be liked.
AggregationData – This table will hold all aggregated user URLs, last time the data had been refreshed etc/
Here’s a little diagram that I modelled in Visio to give a more graphical representation of the relationships between tables.
Okay, so there you have what I believe the database should look like for wwSF. Remember that this isn’t going to be some crazy fully featured web application, at first I just want to get the basics down and then possibly look to build upon them in the future.
If you have any suggestions for ways to improve the design or even a better way to structure it then let me know in the comments.
Tomorrow I’ll go through building the DB in MSSQL 2008 and creating the LINQ to SQL classes. Wednesday, April 28, 2010 Read More
Left vs. Right  This is one of the coolest visual representations of the major political beliefs I’ve ever seen. actually I think its the only one.

Click for the full size image!
P.S I’m on the left. Wednesday, April 28, 2010 Read More
Alganon – Level 12  Well the last few days have been quite crazy, in the middle of being sick / upgrading my graphics card and birthdays I’ve found time to play Alganon.
The new video card has allowed me to crank every graphical setting to maximum and the more I play the more I’m enjoying it. There doesn’t seem to be many people playing at the moment but hopefully more and more people will decide to pick up it up in the future. You can get the game for $19 dollars which is the price of 2 pints of beer here in Perth so it’s not like its gonna break the bank.
There are some bugs and the game is more for the casual kind of game player rather than your hardcore MMO’er, but so far there has been a crazy amount of variation kinds of Quests to complete and Landscapes to explore.
There are a bunch of things they could do to make the game better, and my suggestions are mainly to do with the interface:
- Pad out the chat windows borders
- Show how much XP I require to get to the next level when I mouse over the XP bar
- Show how much Health / Mana / Anger I have when I mouse over my character stats
- Change the very World of Warcraft ‘inspired’ section of the interface, it’s causing shit all over the internet from people who love to bitch and moan.
- When I click my main backpack or press the B button, open ALL of my storage bags at once.
- Fix the map, it is terrible! The world map should be a bigger and better version of the mini map!
Next post will come sometime next week when I’ve a few more hours into the game. Wednesday, April 28, 2010 Read More
Alganon – Day 0  
These days I don’t do too much PC gaming but yesterday I saw an advertisement for a new MMORPG called Alganon; it was 20 bucks so I decided to give it a try.
Now firstly the game runs like crap on my laptop which doesn’t say much for the engine the game is build on. I can play Age of Conan on it which looks light years ahead of Alganon and the framerate is much better. Game performance aside I’m enjoying the new world that I’m exploring.
I’ve noticed on a bunch of different forums a huge amount of negativity about the game, especially since the interface and work look very similar to World of Warcraft. Some of the critisism is fair, there are parts of the interface that look EXACTLY like they were taken from Warctraft, but in the end who cares. The world is different, the quests seem to be quite good so far as well, there are less ‘Go Kill 15 Boar’ quests that your average MMO.
I’m going to start a running commentary of my experience in the world of Alganon, if you’ve tried it let me know what you think. Wednesday, April 28, 2010 Read More
The Brain 
This is an amazing talk, please watch it! Wednesday, April 28, 2010 Read More
I Love LINQ!  I started using LINQ about 8 months ago, before that I was strictly a stored procedure kind-of-guy. LINQ has made my programming life so much easier, no longer do I have to sit there writing SP’s for every database query I require.
These days my database creation steps look like this:
1. Create database in SQL Server Management Studio 2. Open the Server Explorer in Visual Studio and connect to my database 3. Add a LINQ to SQL Classes file to my project 4. Drag the database tables from the Server Explorer into the LINQ to SQL file 5. Create any associations / inheritance between tables (Right click on the table object, hover over the Add menu option) 6. Save my project
Once these steps have been finished and after I press the save button Visual Studio automatically creates all the classes required for database interaction.
Accessing the database and tables via LINQ is also super easy. Lets say we have a program that sells hotdogs to people. Here’s how I would add a hotdog sale to the database:
hotdogDBContext db = new hotdogDBContext(); sale newSale = new sale();
s.price = 2; s.seller = "Frank" s.date = DateTime.Now;
db.sale.InsertOnSubmit(newSale); db.submitChanges();
Now lets say we want to grab all of Franks sales from the database:
hotdogDBContext db = new hotdogDBContext();
IEnumerable<sale> franksSales = from s in db.sales where s.seller == "Frank" select s;
IEnumerable<sale> franksSalesData = franksSales.ToList();
foreach(sale s in franksSalesData) { Response.Write(s.Seller + " " + s.price + " " s.date); }
Pretty simple isn’t it.
LINQ is just another great way for programmers to save time and make coding a little more enjoyable.
Wednesday, April 28, 2010 Read More
N900 Walkthrough Video  I’m on my way home from Greece, this video give a very good walk through of the N900. I really like the idea of different screens for different scenarios, anyhoo check it out.
Wednesday, April 28, 2010 Read More
|