Events in Django

Being that I am creating a site tightly coupled with events and calendars, I need some event functionality.  There are three options:
  1. Django Basic Apps
  2. Somebody's self-maintained event app 
  3. And ... the event system that's in Pinax

Option 3 really is great.  What a great app written with some really good methods including Periods and Relations.  I'm very excited to use it.

Timing ... and Obama

One thing I've noticed many times is the value of agility. 
 
UserVoice is software that allows companies, groups, or whatnot, to gauge interest in a solution to a problem.  There are some open source programs out there as well, in addition to Google's Moderator (which takes a long time to find btw - I think they want to tease out some logistics first). 

Anyway, UserVoice launched http://www.obamacto.org recently.  This was a brilliant move for a few reasons.  First of all, they're hitting their target audience - people who want to be or are a CTO (or at least have something to say about it).  For their product, a moderation system, it's a perfect hit.  Secondly, it's a proof of concept of how well their system works in a large environment.  If it can handle a few million Americans, it can surely work at a Fortune 500 company. 

Companies should always be ready to spin this kind of stuff out.  The best way to do that is to not plan too much ahead of time.  Hire as many smart people as you can afford and go. 

Right now I can afford to work for myself for free :-)

Identity

I was reading Google's Operating System blog - and some issues that I had been thinking about percolated up.  Here is an excerpt from my thoughts on differences between 'self' and 'identity' when it comes to representations of people online.  This is extremely important as social networks go mainstream and mature.
  • 'Self' is me, the one that is typing this right now, the one who sleeps at night in my bed, who I'm with in the shower. 
  • 'Identity' is my portrayal to the rest of the world. For instance, as a business person, I'm interested in social network applications. As a programmer I'm interested in Django programming. As a voter, I'm a fiscal conservative who voted for Obama. I may not mind if some of these identities leak into each other - for instance between programming and business. However, if I were being funded by a strong McCain supporter, I might want to show my Obama support broadly but without interfering with my business identity. 

This has been a problem for time immemorial and there have been many ways of solving it. The Federalist papers were written by a few different authors - James Madison being one of them. However, he wasn't in a position to put his name next to his writings - he needed to use a pseudonym. 

Nonetheless, this pseudonym couldn't be a one-off name - it needed to be used on multiple essays in order to build a reputation. People who like an author, want to read more by that same author - so there needs to be continuity with regards to identities. They need to be managed. 

I noticed this very clearly in Disqus recently. They have no isolation between who you are and what your identity is. This is a real problem for a service that focuses on comments. I noticed how somebody, on a technology blog, had also recently commented on a gay city profile site. I presume he's out and he doesn't mind, but if he did mind what could he do. 

The only current solution is to manage your identities by hand. That will always be the safest option since nobody is as trustworthy as yourself. However, an intermediate step would be better. 

Google and other like minded companies need to structurally build isolation between 'self' and 'identity' so that users can be logged in with multiple profiles available for any given topic.

Back from NC and other things

Ok, I'm back from NC and back in the loop.  I'm not sure if other people have the same problem, but when I start doing about 6 different things, it seems like I get nothing done.  Anyway, I'm glad I gave away last weekend to the Obama campaign in North Carolina.  I went to Wilmington and canvassed the neighborhood with flyers - I also visited my Dad and other people. 

As noted in many blogs and articles over the previous months, the Obama campaign is very well designed.  We were given sets of door hanging flyers with the local polling place as well as state-specific information.  In addition, the list was in street order and had a Google Maps printout with pins for all the houses.  I can already imagine 2012 when the parties have iPhone apps and integration with people's GPS units in their cars. The thing that made me most happy last week was change.gov.  

For me, this is the first real difference between what I think would have happened with McCain and what did happen with Obama.  Within a day, Obama had a real website, with a real government TLD, communicating with the people about what is coming.  The best part was that it wasn't complete.  Many pages only had 'Need Content' on them.  This is our Web 2.0 presidency starting from scratch and it's really amazing to see in action.

Balkanized Internet

It seems that Sprint-Nextel has de-peered from Cogent.  This kind of thing has happened a few times over the past few years.  Is this a sign of the future.  Nobody seems to be talking about cyberwarfare and the balkanization of the Internet in a serious way.  There are some solid books out there but where is the mainstream media on this very important issue?

Site Hijacked

I'm not sure if anybody noticed, but the site was taken down for a few days because somebody defaced it.  I kind of liked the music that they put on my homepage, but after listening to the song, I had to go about fixing it.  What did I learn?
    Don't use shared hosts.  In this day and age, unless you are super poor, do not use a shared host.  If you are not technically savvy, use services for specific tasks (i.e. blogger.com for a blog) so you don't have to think about the technology/maintenance.  If you are technically savvy and you have needs that are not basic, get a server where you have root access.  AWS ec2 is awesome for this.  The cost is $75 a month though so it may be too expensive for some people (although if you can set one up - I can probably find a gig for you to make enough money to pay that $75/month - just drop me a line). 
    Dreamhost.com, while pretty good and having good customer service, just isn't what I need.  People have recommended gandi.net for name services and hosting if you need the cheap option for hosting.  I haven't used it personally but knowledgeable people love them.
Oh, I don't think I've done an update on platform choices either.  Here is where I stand now:
    MySQL 5.0.45 (I'm still contemplating PostgreSQL) 
    Python 2.5.1 
    Apache 2.2.9 
    Fedora 8 (I like the Fedora/Red Hat series - Debian/Ubuntu was giving me grief). 
    Django 1.0 
    Pinax trunk
That was fun!  I feel very excited about the Python community.  It's a smaller group but it's growing fast and it has solid support out there.  In addition, it's a rock solid language with full unicode support - I love that.

LinkedIn has "Answers" to all your questions

I'm not sure when LinkedIn launched it, but it now has an Answers section.  This is pretty neat.  First off, they bring the user in by putting the questions that people ask on the right bar next to people's profiles.  I haven't played around with it enough to see how well the questions are chosen based on the profile, but I presume that algorithm will improve over time. 

What the system allows users to do is simply to ask questions and then have people answer them.  People who contribute more get higher rankings on the system as experts.  It looks like, for now, experts are those who are top contributors for the week.  This reduces the incentive for bots to do fake contributions since they'll only succeed for a week and probably get little response anyway. 

Cool tool that everybody should check out.

More Frameworks

It's been a tough couple of days.  Well, I went to Providence, RI for the weekend, which isn't tough.  However, today and Friday, Patrick and I worked on some deeper technology issues and came to some conclusions:
    1. We will use Debian Lenny.  
    1. Lenny is just about to be declared stable and Etch is simply too old for what we need. We will use pretty much the defaults on Lenny although Django will be version 1.0 We will use Amazon Web Services as previously mentioned. 
    1. The use of Django leads to another open issue - will we use Django at all?  Ruby/Merb is still in the running because HAML and SASS look so exciting. 
    1. JQuery.
So, we still have a competition between Ruby and Python.

Moving

This week has been a fun one.  We all moved to the Rose Tech Ventures Incubator, Spark Space NY.  This is a great place to work - a really good vibe, lots of interesting people doing web 2.0 work, and generally a better location (all those sirens in midtown can start to wear on you).  Anyway, one of my mantras is that small is better, and minimal is best.  What was best about the move was that I only had Mac Minis.  These things are the love of my life.  Two of them are still half the size of a normal desktop.  I only wish they would be updated and support dual monitor configurations :-(

Frameworks and languages, oh my

Recently, I've begun the painful process of actually deciding what core languages and frameworks will be used for the application.  Some things are kind of obvious for everybody, and leads to my favorite phrase from my days of studying for the SAT - PoE (Process of Elimination).

One dimension to start eliminating on is the breadth of the network supporting that technology over the coming 2-3 years.  Perl is a language that is great, rock solid, and also drifting into obsolesence.  I feel bad for Perl but what are you going to do?  This also leaves out old versions of languages like PHP 4.

Another issue is licensing and money.  That cuts out Microsoft products right off the bat as well as some of the supported platforms like WebSphere.  I haven't been a Microsoft guy for years although they're still the only game in town for word processing and spreadsheets.

At this point, there are some things that just go along with what I've done before.  I'll most certainly use a Linux flavor for the OS - either Ubuntu (which I've never used in production) or CentOS (which is the same as Red Hat but is free).  After having some frustrating days trying to deal with a font installation problem (of all things) on an Ubuntu server, I'm starting to consider CentOS.  Either way, it's not much of a difference, either will do.

This operating system needs to be on a machine of some sort.  I don't want to buy a machine and grow out of it though - I'd prefer to rent.  That leads to a slew of hosting options.  One of the big guys is Dreamhost.  I've worked with them on some minor projects and they're great in alot of ways.  However, I need full control, root access, the ability to create an entirely new instance, etc...  Dreamhost won't do.  It's time to take advantage of the cloud so I've been experimenting with Amazon Web Services Elastic Compute Cloud (AWS ec2) and Simple Storage Service (S3).  For about $72/month, I can have a dedicated 'server' on a premium network (Amazon's) with access to S3 which allows for such things as snapshots (backups) and getting data into a solid storage space.

This post will have to be continued - I can't nearly finish this work so quickly.  Does anybody have thoughts?  Here's the current plan:

  • Amazon Web Services ec2,S3, etc...
  • Linux (Ubuntu or CentOS)
  • Apache (I hadn't really thought about anything else, possibly lighttpd)
  • Python or Ruby (PHP feels passe and there's really no other option)
  • If Python, Django or Turbogears (probably Django because Google App Engine is using that)
  • If Ruby, Rails or Merb

I could still be convinced on alot of fronts - this is hard :-)