Ask HN: Help me come back and choose the right technologies
Having said that, I am ready to start again and I thought I'd start fresh, since my Java is probably already a bit rusty. I've been looking these days at things like Ruby, Python and a few LISP flavours. I am attracted to LISP because of the paradigm change it requires, and I'm not really new to it, I used it a bit in the university. The reason I want to come back is because I do love technology, always did, and I already have a project lined up, for which I'm looking to select a set of technologies that will make productive ASAP. This project is a directory of local activities for people. The closest model I can think of is Craigslist, with the major difference that all the listings have a temporal dimension, they start and end at some time, and that people can rate and comment on those listings. As an example of such activity, let's say a chess class, that starts in 2 weeks and goes for 3 months, 2 days a week. The project is about aggregating such activities, broken down on categories and geographical areas. How would you do such project, most efficiently? This project is important for me to get it done successfully and on a timely fashion, I don't have time for too much trial and error, to spend much time learning something that turns out not a good choice. That's why I decided to ask you guys. I would like to choose something that doesn't have a steep learning curve, so I can became proficient with it sooner than later, something with great support for web applications, tried and stable. Should I stick with Java, since it's the only language I am now familiar with it, and it has so many mature web frameworks? Or is this a good time for me to take the leap towards something like LISP? I must admit the idea of a paradigm shift associated with my comeback sounds very appealing to me. I've already started replacing relational databases when it comes to the data model with something more semantic, like TopicMaps and/or RDF. In the same time I want to be realistic and maximize my chances of a successful comeback and project completion. Sorry for the long post, thanks a lot for your kindness.
9 comments
[ 4.7 ms ] story [ 31.9 ms ] threadI recently "came back" so to speak. I spent 4 years after college on a development team for a Fortune 500 company that didn't actually develop that much and I came to see my profession as just a paycheck... I got a wake-up call and I've re-discovered my passion.
Congrats. Honestly, I didn't read your entire wall of text there but if you want to get into something cool (and use something you already know) you could do what I'm doing right now and learn Android development. It's a lot of fun and I didn't even know Java starting out. The docs are great.
http://developer.android.com/
Picking up new technologies is great, but even the most user-friendly ones will have a learning curve. IMHO it's best to start with a new language/framework/etc as just a small, isolated chunk that takes advantage of its sweet spot.
Now it sounds like the thing you have to do is figure out the data architecture - that could help make the rest of your technology stack decisions for you. For instance, can your data structures be modeled in something NoSQL like MongoDB or CouchDB? To me, it sounds like you'd want to use a relational database, but it would be fun to experiment!
Try Google AppEngine, Java and JDO. Install IBM Eclipse and the Google AppEngine plugin and deploy in two clicks. Move to VPS if you need more than what Google offers.
Do LISP/RDF research when code is up and running.
http://code.google.com/p/objectify-appengine/
The reason why Google chose JDO as the default interface to the AppEngine's datastore instead of JPA is because the datastore is not really a relational database and JDO is much better suited for non-relational backends.
However, there's a lot of stuff in JDO that you will never use in an AppEngine application.
Objectify is a thin wrapper around the low-level datastore API. It's a pleasure to work with and it will save you a lot of time.
That said I want to give a vote for Python. I knew Java and python just seemed to feel right for me. YMMV!