Slashdot Mirror


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?"

3 of 156 comments (clear)

  1. Some ideas by hedronist · · Score: 4, Interesting

    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.

  2. Re:Depends on what you want to do by pthisis · · Score: 3, Interesting
    Python + wxpython is a great choice. Python is a full-fledged language, not a scripting language (although it can be used for scripting). It scales well from rapid development/one-offs to large multi-site dev team projects (our current project is about 300,000 lines of code).

    It's also very easy to write C extensions for Python if you ever run into a situation where you need to access something that's not available (unlikely) or squeeze out some more speed.

    For gui building, wxglade is quite nice as a visual builder.

    As far as a development environment, I strongly recommend going with an unbundled editor like vim (with the Cream bindings if you don't like vi modal editing and want keybindings like a normal windows app) or emacs. That way you can stick with it with every language you use, and it's easy to integrate it with other tools. They're both liable to be installed if you wind up logged in on foreign machines, and both have all the whizz-bang features that IDE users somehow think aren't available in real programmer's editors (probably because they associate "editor" with "Notepad"). They're free and widely supported.

    People always harp on the unique features of emacs and vim, so maybe people forget that they do the standard stuff as well:
    • Syntax highlighting/indentationn
    • Code compilation/validation on the fly (syntax-error checking, so if I'm coding python and type "if a=1:" it'll know that I needed an == there and immediately highlight the syntax error)
      context-sensitive help (if I type "cmp(" then the status line shows the help text for the cmp function)
    • intellisense-style completions
    • class browsers (I have menus showing all the parent/child classes of the current class and all it's methods, or can jump to a top-level class listing)
    • code browsing (I can follow function/method calls down a stack and pop back where I came from, and get a cscope-style listing of all the places that call a particular function/class)
    • refactoring tools (I can easily rename classes/methods/etc throughout the project)
    • Source control integration (including side-by-side diffs between 2 versions of a file with similar portions elided and differences highlighted).
    • Outlining/folding (so I can go to a file, hit F6 to see only the class/method definitions, find what I'm looking for, and hit F6 to expand out to everything--it's a lot more than that, but that's the simplest use case if you haven't used folding before).


    All of it in vim, though emacs is an equally reasonable choice. Just because they're old doesn't mean they don't have great features.
    --
    rage, rage against the dying of the light
  3. Re:Plain and simple by OmniVector · · Score: 4, Interesting
    For Mac development, the free XCode tools are good, however I would look into CodeWarrior because ObjectiveC, in my opinion, is an antiquated and bastardized attempt at object orientated programming, CodeWarrior offers C++ access to OSX programming API's.
    I can tell someone's never done modern development for Mac OS X. At all. First off, obj-c is a MUCH better OOP environment than C++. Check out my tutorial for a whole host of good reasons why. Categories, posing, dynamic method forwarding, delegates instead of subclassing, no confusing static AND dynamic allocation, no multiple inheritance, NO TEMPLATES, amongst many other things that C++ just plain sucks because of. Also, CodeWarrior is a horrible (and expensive) dev environment compared to the free Xcode environment.
    --
    - tristan