A Dev Environment for the Returning Geek?
InsurgentGeek asks: "I'm about 25 years into my career in technology. Over that time, I've done the standard progression from developer to architect to team leader to program leader to business unit leader. While I've stayed up to date on general technology trends (perhaps more than about 95% of my peer group) - I have started to really miss hands on coding - something I haven't done for almost 20 years. It's not for my job, and I don't plan to make any money at it - but I'd like to get back to coding on at least a recreational basis. Here's the rub: what are the right tools?"
"'Back in the day...' you had about 2-3 choices of languages and perhaps the same number of OS's. There were not frameworks, API's, development environments, etc. I'd like to pick a toolkit and learn it. My goals are pretty simple: I want to write applications that have a great look & feel that will primarily be pulling information from the web (think weather & news), play with that information and present it in interesting ways. I'd like those applications to be usable on the Linux and perhaps Mac OS X platforms. I'm not a complete non-techie. I use Linux at home, have set up all the toys like Squid and BIND - but this is just administration. I need to get back into the guts of the machine. If you were me where would you start? What language(s) would you want to become conversant in? What do I have to worry about beyond the choice of the language itself? What frameworks? What other tools?"
And am currently enjoying Ruby.
Good judgement comes from experience, and experience comes from bad judgement.
- W. Wriston, former Citibank CEO
Get a Macintosh, they come with all the Developer Tools you need. XCode is an outstanding and powerful shell around the Gnu tools. The Mac OS X environment is feature rich with forward looking tools. The Macintosh world is not crowded like the PC world, so if you find a great idea, it might get noticed. At least take a look at it.
My goals are pretty simple: I want to write applications that have a great look & feel that will primarily be pulling information from the web (think weather & news), play with that information and present it in interesting ways. I'd like those applications to be usable on the Linux and perhaps Mac OS X platforms.
In that case I'd recommend something like python combined with some gui toolkit such as wxpython or pygtk.
Since you're on some unix-like system, you could do worse than plain C and a few books (C:ARM5 by Harbison & Steel and Advanced Programming in the Unix environment by Stevens spring to mind). Some asm knowledge might be useful too.
As for tools, frameworks etc. there is of course an unending list of those. For an IDE, a like emacs code browser.
That's not what I'm reading in the FAQ, question 4.
Take a look at learning python. It's easy to learn, fast to develop in, and remarkably flexible and powerful. It comes with it's own IDE (idle), but there are lots of IDE's that support it out there (I use VIM with color coding since most IDE's give me the creeps).
Give yourself half an hour and walk through the tutorial at www.python.org.
I still do most of my work in C/C++, but Python is my language of choice for new projects that don't already have lots of legacy code.
*sigh* back to work...
You don't really say what type of problems you want to work on and that can make a big difference in what environment you choose. Kernel hacking leads in one direction, and DB-driven websites goes in a completey different direction.
:-)
Speaking as a GeezerGeek(tm), here are some of the technologies I have found that are something more than The Next Great Thing ver 31.4.
1. Python. It took me a while to get past the indentation-as-block-structure thing (I still think it was a mistake), but this is a language that tremendous expressive power. If I were still teaching, this is the language I would start my students with, knowing that they could go anywhere they want with it.
2. If you are doing any sort of web work, you will probably have to do a little (a lot?) PHP. Fortunately, v. 5 has fixed some of the nastier aspects of the language, although there appears to be no way to undo some truly horrible naming convention mistakes from its early days.
3. AJAX. It's worth a look if you want to stay within the browser's window. And that means you should get good Javascript/CSS/XML/HTML books.
4. Firefox-as-UI-platform. This is related to the above. I am just beginning to get into this and it looks very promising. Other people know far more than I do. The GreaseMonkey extension is great fun to play with.
5. If you are picking up a DBMS, the obvious choices are MySQL and Postgres. If I were just starting, I think I would go with Postgres, if only for OSS purity reasons. OTOH, I have had no problems with MySQL for the relatively low-level situations I have used it and it is generally more available as part of commercial hosting packages.
"Back in the day" I taught programming, so here are a few recommendations for your first few projects.
A. First, pick something fun and relatively simple. I have found that a great way to get into a new language/platform environment is to implement a simple game (eg. hangman, snake, mastermind). The rules are very straightforward, yet they will force you to at least dip your mental toe into logic flow, class structure, I/O and UI, file storage (for high scores), etc. Most of them can be implemented in a few hours and you get that immediate feedback of success. If you are feeling your oats, you might try things like using Python's generators as nanothreads for animation sprites. See the Lightweight Games Toolkit at http://lgt.berlios.de/ for some ideas. (Obviously, this should *not* be for your first project!
B. Pick an area of application that you are already a domain expert in. This way you can focus on the "how", instead of the "what" or the "why".
C. Find a good OSS project and implement a few new features. For example, if you are interested in photography, you might grab Gallery 2 from gallery.menalto.com and try adding a feature to an existing layout module, or try creating a new layout, using an existing one as a template.
D. Find an interesting-but-broken OSS project and dive into the code. Maybe you can breathe new life into a moribund project.
If you still have your balls and haven't turned sissy, then the only choice is vi in an xterm...
:-)
I'm sure the ultimate authority on cojones is to be found posting as a AC on Slashdot.
There's just so many out there who seem to be using balls for what brains are meant to do...
-=Maggie Leber=-
As nice as it is, you might want to avoid CodeWarrior on Mac - arent they killing this product with the move to Intel?
XCode would be the way to go on a Mac - it handles different languages.
remember when it was {of|for|by} the people?
There have been major developments in programming environments over the years. The most significant of these are as follows: vi has been improved, emacs has syntax highlighting, and the Bourne shell has been born again.
A lot of people went on some tangent about these IDE thingies. Don't worry about that, it proved to be totally useless in the end.
Don't blame me, I get all my opinions from my Ouija board.
I agree. I'm a C++ programmer and learned very fast to code in the Java language. Compared to the aging and incomplete C++ standard libraries, I found the Java standard libraries very complete and well integrated, which allowed me to devellop any kind of GUI and communication applications rather fast and without having to constantly seek for some extra libraries.
I also loved to use the great developper free tools available for that language, mainly NetBeans and Eclipse. Their code auto-complete and integrated help system features helped me to learn way faster the language and its available tools, and the Swing interface builder of NetBeans is really improving the speed of development of GUI interfaces (I didn't experiment Eclipse interface builder yet), once mastered of course, wich might require some extra time at the beginning. And all this for free!!!
Eclipse seems to become the standard, but NetBeans is really nice and does worth some attention too.
- tristan
Welcome back Bill!
A bad analogy is like a leaky screwdriver.
I have started to really miss hands on coding - something I haven't done for almost 20 years.
;-)
Fire up a console under Linux, use vi and cc, and you'll feel right at home as if 20 years had not passed.