Introducing StuffExchange

Sat 11 April 2015

StuffExchange is the name of my current project. It serves two purposes:

  1. I want to build a product for myself
  2. I want to learn a lot of new technology

The product

I am not particular fond of stuff. Especially not the kind that just sits there in the closet and isn't used anymore. It is out of sight and out of mind, but it's still there and it's a waste. Who knows, maybe it could be of use to someone else?

StuffExchange is about 1) getting rid of stuff quickly and 2) getting stuff for free. Got something you don't need? Take a picture, write a short description and post it to StuffExchange. Need something, but want it for free? Search StuffExchange, could be someone wants to get rid of just that thing.

I have a two-year old daughter. As a baby, she would grow too big for her clothes in three weeks. Crazy. Toys? Might be fun for a week.

If my girlfriend didn't have a knack for finding things for free (or at least cheap) we would've been ruined a long time ago. And if she didn't have a way to get rid of it again, we would've been buried. So how does she do it? Facebook. Turns out there are a lot of Facebook groups which are all about getting stuff for cheap and then getting rid of it again.

Facebook is not really the best platform though - it has the users, but not the interface. So that's the idea behind StuffExchange.

The technology

It's not really about the product though. That's just a motivating factor. The real purpose of the project is to provide a backdrop for learning.

I'm currently in school studying "computer science". I put that in quotes because the school focuses very much on the practicalities of writing software, and not so much on the science thing. Understanding business needs, project management, writing code that gets the job done. Which I quite like. So far we've worked with things like:

  • Object oriented programming (C# on .NET, 98% desktop apps with WPF but also a little WCF and ASP.NET Web Forms)
  • Microsoft SQL Server
  • Object oriented analysis and design (as in Craig Larmans "Applying UML and Patterns")
  • Scrum
  • Business plans

But this semester is about specialization, and what I want to do is explore some more "exotic" topics. Well, they aren't really that exotic, but compared to the "tried and true" focus of the curriculum, what I want to do is quite different. Here's what I'm learning/practicing with StuffExchange:

  • Functional programming (F# on Mono, HTTP API using NancyFx)
  • Domain driven design
  • Command query responsibility segregation
  • Actor model
  • ElasticSearch
  • Vagrant
  • Ansible

The focus is still on building real software though. I'm not learning all that as an academic exercise. I do it because I want to know what it is like to build a product with these tools, and how it compares to my "usual" stack.