You gotta know a lot...

So I’ve finally released a first version of the “email to twitter” service I’ve been mentioning here the last few days…you can check it out at (and please do when you have a free second or two). Anyway, since releasing it today to the world (and then crashing it a few times while attempting upgrades!)…people brought a few existing alternatives to my attention…the short list includes:

And there are probably a few more out there that I’m just not aware of…so on one hand, it was probably a waste of my time to build out yet another version of this type of system (though I would argue that I’m approaching the problem in a slightly different way then all of those systems, and therefore am a better fit for certain situations – but I leave it up to you the users to determine which system fits your own specific needs). Anyway, truth-be-told, I didn’t really build this system with the hopes of it blowing up into some huge hit…I built it because it had some interesting technical challenges I wanted to solve, and I thought I could do it fairly quickly (turns out I built it in about two nights of actual coding time)…and I def. learned a bit more about some of the technical bits that got me interested in the first place. But going through this process also got me thinking about just how much crap a developer actually has to know to get something even as simple as this up and running…without even talking about the depth to which you need to know these things to do anything useful, here’s a quick list of the stuff off the top of my head that this project involved:
  1. Perl - which I use to do the batch processing for monitoring twitter and parsing incoming emails
  2. DBI - perl’s database library
  3. LWP - A perl library used for HTTP communications
  4. PHP - which I use for the front end code of the web site (and to communicate with twitter when initially approving the app)
  5. Curl - used by PHP for HTTP communications
  6. Subversion - the version control software I use to manage releases and file transfers between my development environments and my production servers (as you can probably guess based on the fact I crashed the service a bunch throughout the day, I do not have a test environment; so it goes straight from dev to production - blech - but I work with what I got in my own little budget-conscious world)
  7. SSH - How I connect to my Linux production servers (on slicehost btw). I generally use putty for this on Windows or the Terminal app on Mac
  8. Photoshop - which I used to create any front end graphics (in this case it was only the logo)
  9. HTML - used for all the front end display of the web site
  10. CSS - used to help improve the look of the front end web site
  11. XML - The format data is passed in between Twitter and my scripts
  12. JSON - The other format data is passed in between Twitter and my scripts
  13. OAuth - The security protocol/standard Twitter uses to authorize applications (ie. so can tweet on your behalf without you having to give us your actual username/password)
  14. PostgreSQL - The database system that account information and long tweets are stored in
  15. SQL - the query language used to insert into and pull data out from a database.
  16. Apache - The web server software that runs the front end web site.
  17. Mod_Rewrite - an apache module that helps route requests to the proper places within my web application.
  18. Linux - The operating system that the scripts, database, and web site all run on.
  19. postfix - The email server software that all the email involved in this system routes through
  20. crontab - A linux system that let’s you schedule programs to run (ie. controls when the batch scripts actually get executed)
  21. mysql - A database system that, in this case, interacts with Postfix to manage email accounts
And that’s just the quick and short list…I’m sure there’s some bits I’m forgetting about (or just don’t even realize I’m dealing with anymore as I take many of these things for granted since I work in them all and a few others just about every day). And again, I’m not even talking about how well or how much of each of these things you have to really know or understand (and believe me, each of these could and does warrent a full-time career if you want to be a true expert in any one of them – honestly I’m intermediate at best in most of these things because I just don’t have the time to learn all the ins-and-outs of each). So my point is, even for the simplest of tasks, you really gotta know a boat-load of junk…but then again, that’s one of the things I really love about being a developer…I’m always learning, I’m always creating, and I’m always finding new challenges! So what’s next? Oh yeah, that million mile long to-do list of projects over on the side of my blog…guess I better get to it! Oh and don’t forget to check out when you have time and let me know what you think!

This post has received 36 loves.


This is the personal blog of Kevin Marshall (a.k.a Falicon) where he often digs into side projects he's working on for and other random thoughts he's got on his mind.

Kevin has a day job as CTO of Veritonic and is spending nights & weekends hacking on Share Game Tape. You can also check out some of his open source code on GitHub or connect with him on Twitter @falicon or via email at kevin at

If you have comments, thoughts, or want to respond to something you see here I would encourage you to respond via a post on your own blog (and then let me know about the link via one of the routes mentioned above).