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

156 comments

  1. I am in a similar situation by marcus · · Score: 3, Insightful

    And am currently enjoying Ruby.

    --
    Good judgement comes from experience, and experience comes from bad judgement.
    - W. Wriston, former Citibank CEO
    1. Re:I am in a similar situation by Tooky · · Score: 2, Informative

      Download a smalltalk

      http://smalltalk.cincom.com/ - VisualWorks is free for non-commercial use.

    2. Re:I am in a similar situation by Tooky · · Score: 1

      I also forgot to mention that VisualWorks has installers for Windows/MacOs/Linux amongst others, so you don't need to worry about the whole platform thing, just use it on your current system.

    3. Re:I am in a similar situation by manjunaths · · Score: 3, Informative

      For starters try Anjuta or KDevelop. Both of them are really complete IDEs.
      If you really want to just have fun you should go with Ruby, it is designed 'to enhance the pleasure of programming' according to the author. But that doesn't mean it is not powerful, just look at rails. There are online books that will help you get started. There is also a nice channel on freenode, #ruby-lang, with really helpful folks.


      If left to me I would say emacs, the learning curve is slightly steep, but there is nothing to beat the versatility.

      --
      Slashdot: Tabloid for the nerds. Stuff that doesn't matter.
    4. Re:I am in a similar situation by Anonymous Coward · · Score: 0

      So my general recommendation would be Gtk2-Perl (as a Rapid devel HLL/platform)
      or C + glib + Gtk for those who don't really want lots of complex OO design
      stuff and just want something like C. Plain old functions, nice datastructures.

      I am not a IDE person. I use vim/make ect ...
      Eclipse makes a perl IDE (I've never used it) and a C IDE ( ditto )

      Gtk2-Perl is a nice easy way to write apps theat are graphical. gtk2-perl
      The irc channel is helpful as well.

      Especially is you know a little perl.
      CPAN (a perl module archive) is amazing for providing "glue modules" to just about anything.
      PAR lets you package the final result as a single file/executable as well if you are writing it for multiple systems or
      more than yourself.

      In General, Gtk2 is portable and a nice environment. If you do C development glib (a prereq for Gtk2) ..
      C + Gtk + glib is a nice portable sane environment with all the basic advanced data structures a programmer
      would need for real programs.

      Garick

  2. Indeed by SilverspurG · · Score: 0, Offtopic

    Programming is like anything else. It's like exercise. It demands time.

    If you lack the extra time to spend with it then you're better off picking up the newest and hottest environments like Java and Enlightenment. There will be more people starting around the same place that you are and will provide a group of knowledge to answer questions and exchange ideas.

    If you have the extra time then pick up fundamentals. Use Debian. Install from a five year old release and upgrade it manually while focusing your attention on the parts of the OS which your desired application will interact with. Maybe you can already do this. Read their documentation. Learn how they work. Learn a fundamental language and learn how to use it for the toolkits which you want to use.

    It's a tough task. Getting back into programming after 20 years of no hands-on work will seem like a chore at first. With enough time it can become a routine. With more time it can become a hobby. WIth more time it can become a desire. With more time it can become a pursuit. With the right social connections it can become a venture. Notice the significant dependence on time. Not an hour here and there but good 6 hour daily blocks of time. Don't expect to do much cooking.

    I'm trying the same thing. I wrote a system installer in BASH that went through the normal stages of development and evolved for five years part time. Now I'm beginning to practice C. I'd like to rewrite my system installer in C. This will allow me to learn the APIs and protocols for system devices. The tough part has been that my employment has been in research science (chemistry) and highly computer unrelated. Shifting the brain to programming takes time away from actual programming.

    --
    fast as fast can be. you'll never catch me.
    1. Re:Indeed by Anonymous Coward · · Score: 1, Insightful


      The only comments worth reading in this thread are from the low-ID 30 & 40-somethings in the slashdot crowd. "Install Debian"? The guy wants to program, not install a whole OS to do it.

      I'd recommend playing with python and/or ruby. Works on almost everything and are a lot of fun.

    2. Re:Indeed by Anonymous Coward · · Score: 0

      holy craptastic mods on crack batman!

    3. Re:Indeed by Ignominious+Cow+Herd · · Score: 1

      If you lack the extra time to spend with it then you're better off picking up the newest and hottest environments like Java and Enlightenment.

      Surely, you meant Eclipse, right?

      --
      Lump lingered last in line for brains, and the ones she got were sorta rotten and insane.
    4. Re:Indeed by SilverspurG · · Score: 1

      No. I meant a GUI design framework. I'd much rather code an app to work well with Enlightenment over GNOME or KDE.

      --
      fast as fast can be. you'll never catch me.
    5. Re:Indeed by spir0 · · Score: 1

      no, he's starting a new religious movement. stand aside heaven's gate...

      --
      The reason girls and Windows users don't understand UNIX is because all the documentation is in Man files.
    6. Re:Indeed by jguthrie · · Score: 1
      My experience is that the primary difficulty in learning a programming language has to do with the problem selection. You want to pick problems that are hard enough to require some effort to learn (otherwise, why bother) but you don't want to pick problems that are so hard that you don't know how to begin them. That's the real advantage of taking a course: Working out what problems are the right ones to work on is someone else's problem.

      Of course, it's not clear how that experience applies to the problem at hand, but I think it likely that you're right. If you do a lot of extraneous stuff, (and, at least for the case in question, installing Debian is certainly extraneous) it just gets in the way of the actual goal, which is to do some programming. The fellow is looking for a hobby, not a vocation.

      If this were 20 years ago, I'd tell whoever it is to get a microcomputer with BASIC-in-ROM and a book on microcomputer BASIC and to try to do something interesting. That system handled enough of the gory details that you could do some simple stuff without worrying about too many extraneous details. Today, the equivalent to that sort of thing would be Perl or Python or Ruby. The precise language doesn't matter because a beginner doesn't know any of the details that make programming in those various languages so different.

      I also think that trying to set up a fancy IDE would probably lead to more frustration than it's worth, but maybe that's just me. (All I really need is an 029 keypunch, a FORTRAN IV compiler, and a beer. Fortunately, either EMACS or vi blow the heck out of keypunches, I've got gfortran--which can be coerced into compiling do-loops correctly--if I get tired of C, and $90K/year buys a lot of beer.) What's important isn't the language or development system or whatever, it's having enough of a tutorial to do get bootstrapped until you can figure out what problems look interesting.

    7. Re:Indeed by Anonymous Coward · · Score: 0

      nobody cares, fucktard.

  3. Get a Mac by DrTime · · Score: 5, Insightful

    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.

    1. Re:Get a Mac by Bastian · · Score: 3, Insightful

      So true. Also, clueful Mac users who might appreciate some crazy idea you got aren't afraid to download stuff they've never heard of before just to try it out, because there just isn't much spyware on a Mac. Same goes for Linux, of course.

      Even if Windows shareware/freeware developers succeed in rising above the unholy din of the Windows software scene, they are going to have a lot harder time getting me to try their stuff because I get fsckin' paranoid when I'm sitting in front of a Windows computer.

    2. Re:Get a Mac by Anonymous Coward · · Score: 0

      I'm in the same boat as the poster.. but I did this. Got myself an iBook and the latest XCode. So far, I'm completely overwhelmed by the amount of documentation that exists for Cocoa. I have in mind the kind of app I'd like to code (I've been doing webwork for the last decade and am interested in GUIs again).. and it's suitably graphical.

      Any tips on how to actually get one's head around all the material required to get over the hump would be nice. So far I've been wading through the XCODE Getting Started PDF, but it doesn't exactly have me coding yet.

  4. Plain and simple by TheSkepticalOptimist · · Score: 2, Interesting

    For Windows development, Visual Studio is the only way to go, and MS now has a series of Express Editions that offer Free C++, Visual Basic, or C# development tools. Note that Express Editions do not allow you to sell or distribute your software, but as a hobbyist, they are great tools for getting back into software development without spending a dime.

    I have found NO free development tools for the Windows platform that are easy to use and as well thought out as the Visual Studio product line.

    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't suggest anything for Linux, except that CodeWarrior also makes a Linux IDE. I don't recommend developing software using cheap command line text editors or gcc compilers, unless you love being counter productive and frustrated.

    --
    I haven't thought of anything clever to put here, but then again most of you haven't either.
    1. Re:Plain and simple by grub · · Score: 1


      There are oodles of nice text editors for *nix. I use nedit all the time, it's relatively small, has customizable context highlighting (for example, I created a template for working with Cisco PIX configurations).

      The guy just wants to get back into programming. Suggesting he install a new OS or buy stuff off the hop is silly.

      --
      Trolling is a art,
    2. Re:Plain and simple by voxel · · Score: 2, Insightful

      Funny, I was thinking ObjC is nice and C++ "is an antiquated and bastardized attempt at object orientated programming".

      --
      Modesty is one of life's greatest attributes
    3. Re:Plain and simple by misfit13b · · Score: 5, Informative
      Note that Express Editions do not allow you to sell or distribute your software...

      That's not what I'm reading in the FAQ, question 4.

      Can I use Express Editions for commercial use?

      Yes, there are no licensing restrictions for applications built using the Express Editions.
    4. Re:Plain and simple by GiMP · · Score: 2, Insightful

      The vi editor is an essential tool, imho. This is a "cheap command line text editor" as you call it. Personally, I simply can't imagine working without it.

      However, you're right in the idea that IDEs *do* offer something that the commandline doesn't. This is why, if I am to use an IDE, I use Eclipse with the ViPlugin.

    5. Re:Plain and simple by Bluesman · · Score: 2, Interesting

      Python has a lot of modules that would really help you do what you want.

      Perl and Java, also. I'd probably recommend them in that order.

      They all have fairly comprehensive reference material and some good tutorials on the web.

      My favorite development environment is still emacs with the vi key bindings, but IBM's Eclipse is also very good if you're doing Java, and you have a fast enough machine to run it.

      In fact, trying Java out is much easier with Eclipse, as it fills in a lot of the code for you, and lets you know immediately when you're making a mistake. I've found it very helpful while learning Java, but later on the usefulness of that diminishes and I want my good text editor back.

      Finally, I love C and gtk+ for unix apps. If you're interested in the "guts" of the machine, you really can't beat that combo, and it's very powerful.

      --
      If moderation could change anything, it would be illegal.
    6. Re:Plain and simple by cursion · · Score: 4, Informative
      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.


      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?
    7. Re:Plain and simple by X · · Score: 1

      Funny, I was thinking ObjC is nice and C++ "is an antiquated and bastardized attempt at object orientated programming".

      That's about as accurate and insightful as his comments on Objective-C. ;-) +1 Insightful? Please!

      --
      sigs are a waste of space
    8. 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
    9. Re:Plain and simple by MagicM · · Score: 1

      Free until November 6, 2006. Although a newer free version may be available by that time.

    10. Re:Plain and simple by Spy+der+Mann · · Score: 1

      I have found NO free development tools for the Windows platform that are easy to use and as well thought out as the Visual Studio product line.

      What about Codeblocks? It's still in beta, but IMHO it's much better than Dev-C++, and it's GPL.

    11. Re:Plain and simple by nhstar · · Score: 2, Interesting

      I'd argue against the "no free" stuff for windows. I've been tinkering (sadly, not prolevel) with #develop for a while now. Since all of the .Net framework is available to any windows install, it's at least as up to the task as VS.Net is... and the plugin array makes it almost as flexible as using Eclipse. But .Net on windows right out of the... uh... installer. Plus, the guys who put it together thought plenty ahead and hooked their help system directly into MSDN for up-to-date info.

      and yes, it's open source.

      Will you like it? *shrugs* for a 5 (or less) minute download on my dsl line, it was worth trying out. Especially without restricting any distribution of your creations.

      --
      --- no sig to see here... move along.
    12. Re:Plain and simple by kyhwana · · Score: 1

      Note that Express Editions do not allow you to sell or distribute your software,

      Er, there's nothing in the EULA that says you can't distribute/sell stuff you compile using it.

      --
      My email addy? should be easy enough.
    13. Re:Plain and simple by topham · · Score: 2, Interesting

      Never mind CodeWarrior is deprecated for Mac OS X development.

      With the move to Intel processors you're pretty much left with the XCode tools, a long with gcc, etc.

      Not a bad thing in my mind. While I have not done much development with it, inspite of my intent every few months to give it a go I have found XCode to be a decent tool and Objective C to be very interesting.

      When I had the time, years ago, I spent a lot of time trying to learn C++ and it made no sense. (since then they have created STL to solve my major issues with it.) It felt like everything was just an extension using pointers (not true I know, but thats what it felt like). Objective-C makes sense.

      Even when I fight with the syntax, I generally realize it's me with the problem (too procedurally centric), and not the syntax of the language. It seems to me it's what C++ should have been.

      For anyone else reading this:

      While not mentioned by the original poster, but mentioned by a couple of people anyway, if you're into developing under Windows get the Visual Studio Express a look. I downloaded and installed Visual Studio Express C#,a long with the free SQL Server edition. I was able to very quickly put together a program which can add and created records and haven't even read the documentation yet.

      (Actually the database application I am working on will be far more complicated, but what I am working for learning and testing with now is 3 tables to support a many to many relationship and was pleasantly surprised at how much the tools handled automatically. I expect I may hit a wall and have to drop most, or all of their automatic code generation.)

      I'd do this project in ObjectiveC in XCode, but it's not for me when I'm done. :(

    14. Re:Plain and simple by cyclop · · Score: 1

      I can't suggest anything for Linux, except that CodeWarrior also makes a Linux IDE. I don't recommend developing software using cheap command line text editors or gcc compilers, unless you love being counter productive and frustrated.

      Funny. So I must assume all free software developers for un*x (that use GCC and text editors 99% of the time) are counter productive and frustrated?

      --
      -- Patent no.123456: A way to personalize /. comments with a sig attached to the end.
    15. Re:Plain and simple by VitaminB52 · · Score: 1
      For Windows development, Visual Studio is the only way to go ...

      If you had written 'most popular way to go' or 'most used way to go', then I might have agreed. However, there are other development environments for Windows, used by million coders around the globe, so your statement about Visual Studio being the only way to go is simply incorrect.

      I have found NO free development tools for the Windows platform that are easy to use and as well thought out as the Visual Studio product line.

      Ever heard about Borland Delphi? The Personal Edition is free (as in beer) for personal (non-commercial) use. When you want to make money of the code you're writing, then you'll have to buy Delphi Professional or an even bigger (and more expensive) version, but Delphi Personal Edition is nice for someone who wants to do some recreational coding.
      Also consider Borland JBuilder, C++ Builder or Oracle JDeveloper.

    16. Re:Plain and simple by Zephiris · · Score: 0

      The express editions seem a bit light, but do offer redistribution.

      It's probably 'way out of price range', though the higher end editions offer a myiad of new and compelling features. You can basically have your own custom toolchain, complete with property sheets and full IDE integration for 'third party' tools, like using NASM/YASM/MASM for assembly. It's enough to (finally) be able to compile various open-source things with the IDE instead of depending on autotools and GCC. I could conceivably integrate 'open source' utilities into it completely, such as bison/flex, even such random things as a SNES C Cross-Compiler.

      There are also rather nice setup project utilities, you can deploy a nice installer to anywhere which can 'net install' your program, in addition to any prerequisites and dependencies (like properly setting up C/C++ Runtimes and even MSI; or .NET Framework and ASP.NET if so inclined). Despite problems with the help system (via F1), it's a big 'happy' upgrade over VS2003.

      As far as Linux codes, there's always KDevelop http://www.kdevelop.org/, and Anjuta http://anjuta.sourceforge.net/. While Microsoft Visual Studio makes a compelling case for use in general, there are quite a few non-Windows IDEs, though noone's forcing you to make Microsoft-specific code with MSVS, either. Personally I'm working on a few open source projects, and somewhat-targetting with a new C# application, will consider using GTK# http://gtk-sharp.sourceforge.net/ instead of WinForms at some point (perhaps when underlying GTK+ bindings get a bit less fickle).

      --

      "A Goddess rarely smiles for she is forced by others to be an island unto herself." - Zephiris
    17. Re:Plain and simple by Anonymous Coward · · Score: 0

      One out of the ten devs I've worked with at Microsoft ever uses Visual Studio, and even she used gvim half the time. We use build.exe (also included in the DDK) at the command line to run nmake for compiling, windbg or kd for debugging, a proprietary source control system (emphatically not SourceSafe), and editing seems about 60% gvim, 30% emacs, and a little of everything else. I've run VS once in the last month, and that's because I had to tweak a dialog layout. There are internally developed plugins to do builds and checkins from VS, but they're kinda wonky and not release quality, and for me emacs (especially M-. for finding definitions, M-/ for filling in partial identifiers, and M-x grep-find for searching the source tree) is simply faster than the corresponding VS code editor features.

    18. Re:Plain and simple by AdrianLP · · Score: 1
      For Windows development, Visual Studio

      I found it exceptionally slow, on a mid 1GHz machine with lots of RAM. Besides, he said Mac/Linux I thought.

      I can't suggest anything for Linux, except that CodeWarrior also makes a Linux IDE. I don't recommend developing software using cheap command line text editors or gcc compilers, unless you love being counter productive and frustrated.

      Cheap command line text editors? Is that a shot at VI[M]? What's wrong with GCC. Both of these work perfectly well for people who are competant.

    19. Re:Plain and simple by axp_bofh · · Score: 1

      If you don't like ObjectiveC, use Carbon with C++ in XCode. Can't second your recommendation on CodeWarrior since as soon as Apple makes the x86 switch CodeWarrior will be as dead as the proverbial Norwegian Blue Parrot. Nothing you write using CodeWarrior will port to x86 without a major effort.

    20. Re:Plain and simple by Anonymous Coward · · Score: 0

      This is why so much software on the Mac sucks. We're still burdened with these dinosaurs from NeXT who think Objective-C is usable only because they can't wrap their heads around C++. Just look at the parent post. EVERY SINGLE ONE of the benefits ascribed to Obj-C is as easily achieved with C++. And look at the things he says makes C++ suck. Templates? MI? He doesn't know what he is talking about, these are both GREAT features. But since he doesn't know how to use them, they must suck.

      Ditto for static vs. dynamic memory allocation. I mean, that more than anything is a predictor of where the project is going; how memory gets allocated. Anybody who calls themselves a Mac programmer should have no issues with ANY memory model after having slogged through the application and system heaps under classic Mac. Memory that moves. Memory that gets purged.

    21. Re:Plain and simple by Anonymous Coward · · Score: 0

      In ObjC and Smalltalk, you can write a handler which can access the method name and arguments and return something or raise the usual error. In C++ you have to do all of this yourself from scratch, which is where you get brittle nonportable atrocities like Qt and COM.

    22. Re:Plain and simple by Anonymous Coward · · Score: 0

      To clarify, I meant that in ObjC and Smalltalk you can invoke a method and have the target object do something useful, even if the object doesn't specifically implement that method.

  5. Just great!! by TheMegalomaniac · · Score: 2, Funny

    Like we don't have enough competition from outsourcing ... now management's starting to get into it ..just great .. I'll trade you my programming cubby hole for the business unit leader oak desk ..

  6. Cross-platform UIs by dorkygeek · · Score: 1
    If you are interested in cross-platform UIs, you might have a look at XUL and XULRunner. You can drive them using at least C/C++, Java, Python, Ruby or Perl.

    --
    Windows is like decaf - it tastes like the real thing, but it won't get you through the day.
    1. Re:Cross-platform UIs by Alarash · · Score: 1

      Yeah. Or go AJAX. All-in-one.

    2. Re:Cross-platform UIs by dorkygeek · · Score: 1
      Sorry, but AJAX is nonsense when it comes to rich clients!

      --
      Windows is like decaf - it tastes like the real thing, but it won't get you through the day.
    3. Re:Cross-platform UIs by Randolpho · · Score: 1

      XUL is tied too closely to HTML/CSS. Go XAML instead! :D

      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
    4. Re:Cross-platform UIs by dorkygeek · · Score: 1
      Wow, could you please explain me how XUL is tied to HTML? And second, can you tell me how XAML is cross-platform?? XAML is a proprietary MS technology, and they showed no intent to make it available for other platforms.

      --
      Windows is like decaf - it tastes like the real thing, but it won't get you through the day.
    5. Re:Cross-platform UIs by Anonymous Coward · · Score: 0

      Or take a look at Banteng a visual javascript engine for Window, Linux, and Mac OS X that uses SWT as the widget set and doesn't depend on Java.

  7. A no-brainer by Anonymous Coward · · Score: 0

    You want Qt, either in C++ or through bindings to something else. That wouldn't be the answer for everyone, but it's precisely what you're looking for.

  8. I'd say... Java by FooAtWFU · · Score: 2, Insightful
    Look into Java. Really. It'll run on *nix, Mac and Doze, and a good toolkit framework like SWT is plenty shiny. Yes, you'll suffer from slightly lengthy load times and memory usage and all that stuff. But there are plenty of Java IDEs, especially Eclipse and various Eclipse-based toys.

    Other than Java, most of the really cross-platform *nix/Doze/Mac stuff I've really seen has been GTK-based: X-Chat, Gaim, and such. This would be mostly C/C++ work, but I'm not particularly up-to-date on compiling this sort of stuff for Windows. The other thing to consider is whether you can stuff everything into a web-based application. You can do a lot these days, especially with the JavaScript DOM- look at Gmail, Google Maps, and such. This is nearly the ultimate cross-platform solution, but might be tricky to pick up if you're not familiar with HTML and CSS and JavaScript at least a little already. It also suffers from the usual limitations associated with web apps. You might look into Flash for applications as well if you're going for pure shininess- though it generally has similar limitations and all the drawbacks associated with Flash itself, especially with the usual Flash environment costing an arm and a leg...

    --
    The World Wide Web is dying. Soon, we shall have only the Internet.
    1. Re:I'd say... Java by MaggieL · · Score: 1

      Sad to hear an obvious Browncoat say SWT is "shiny".

      It is no such thing.

      SWT is a non-solution to a non-problem. If you can't figure out how to use Swing properly, you won't be any better off with SWT, which a non-platform-portable portation of an old Smalltalk API.

      Eclipse is almost mostly harmless if you're only coding Java as a hobby. It is rather resource-intensive. But if your involvement is that casual, consider jEdit: small, lightweight, very functional, with plug-ins available for most common tasks. And free.

      On a happier note, the Serenity DVD came out today. Talk about shiny....;-)

      --
      -=Maggie Leber=-
    2. Re:I'd say... Java by MaggieL · · Score: 1

      Java sucks big ass sweaty donkey balls. I've finally been forced to use it...

      Which is what we usually hear from people who must be forced to use it. Use of diction like "shedding all preconcieved biases aside" is somewhat indicative... :-)

      --
      -=Maggie Leber=-
    3. Re:I'd say... Java by phill7 · · Score: 3, Insightful

      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.

    4. Re:I'd say... Java by jZnat · · Score: 1

      Don't forget about the enforcement of thread-safety and Unicode strings. Quite useful if you ask me.

      --
      'Yes, firefox is indeed greater than women. Can women block pops up for you? No. Can Firefox show you naked women? Yes.'
    5. Re:I'd say... Java by Anonymous Coward · · Score: 0

      Yup, Java.

      The darkside is that it's more formal than a scripting language like Ruby or Python.

      The brightside is that it pretty much Just Works.

      Get the JDK from Sun, and NetBeans, and you have pretty much Everything(tm), from Swing to Webapps to SmartPhones.

      NetBeans is painless to setup, and you'll be coding in a heart beat.

      This is important simply because Java has evolved far beyond being a mere language, but in to it's own little ecosystem. It is easy to be OVERWHELMED by the options in Java, all of the articles on "Doing the right thing, the right way, using xyz framework", and all of that. It can be bewildering to choose when you're just starting.

      But NetBeans has everything you need to code with as well as everything you need to run server based apps, and it comes all snug as a bug in a rug type install. Click "Next" enough times and it's all there without having to understand it all.

      This lets you start (re)learning quickly. No need to set up Ant, Tomcat, Eclipse Plugins, shared libraries, classpaths, etc. You can focus just on Java and learn the rest as it inevitably rears its ugly head. Certainly you'll want to understand all of this long term, but it's a drag when you HAVE to just get short term results. Here you don't have to.

      Visual Studio gives a similar "out of box" experience, but you can't do crossplatform using it.

    6. Re:I'd say... Java by Monkelectric · · Score: 1

      I like the structure, uniformity, and well thought out nature of JAVA but I find the language on the whole to be unexpressive. I think the ideal language would be something with the expressiveness of Python but the well laid out standard library and interfaces of Java. (yes i'm aware of jython)

      --

      Religion is a gateway psychosis. -- Dave Foley

    7. Re:I'd say... Java by SnapShot · · Score: 1

      How could someone who is so right about SWT (Swing, like democracy, isn't perfect but it is better than the alternatives) be so wrong about IDEs :-) Eclipse is free, cross-platform, and much better than a poke in the eye with a sharp stick (or JBuilder). I've heard good things about jEdit so I won't say that it is bad, but Eclipse is far more than a hobbyist's IDE. One particularly nice note is that once you're ready to make the transition to full J2EE support there are a bunch of really well done plug-ins and, even better, for a nominal fee MyEclipse packages all those plug-ins together for a J2EE environment that, IMHO, exceeds the functionality of JBuilder.

      Plus, Ruby support if you want to experiment with that in a familiar evironment...

      And, C/C++ support if you want to experiment with that in a familiar environment...

      And, no doubt, plug-ins for Perl, Python, Brainf*ck, or whatever else you might want to try

      --
      Waltz, nymph, for quick jigs vex Bud.
    8. Re:I'd say... Java by MaggieL · · Score: 1

      How could someone who is so right about SWT (Swing, like democracy, isn't perfect but it is better than the alternatives) be so wrong about IDEs :-) Eclipse is free, cross-platform, and much better than a poke in the eye with a sharp stick

      Now that's damning by faint praise. "Better than JBuilder"? Joy.

      If you've never tried jEdit, perhaps you can see your way clear to forgiving me for avoiding such sharp sticks in the eye. If you can see past the stick, that is. :-)

      I don't mind feauture bloat so much if it stays out of my way. But in Eclipse it doesn't--IMHO Eclipse lacks the "conceptual integrity" we've known is important since before Brooks gave it a name in "The Mythical Man-Month". "It's free" isn't a reason to turn a blind eye (maybe the one with the stick) to its flaws. Also, Eclipse *is* an SWT app, and inherits all *those* problems.

      My own toolset is: jEdit for tactical use, with IntelliJ IDEA as a strategic WMD, suitable for surgical strikes on large legacy code bases while causing limited collateral damage. Add to this SQuirreL for mucking about in the DBMS. yEd is handy for diagramming things. All kinds of things.

      In fact I usually keep a copy of jEdit running *alongside* IDEA to use as a lightweight file system browser, Beanshell framework, and GUI tool for the grepping of things ungrokable by IDEA. All these tools will run in any Java GUI environment without sweating how SWT will run on Platform X. And they're all free, (except for IDEA...if you're willing to run beta code, you can get that free too).

      "Grepping the ungrokable"... I like the sound of that. :-)

      As big a fan as I am of open source software, Eclipsoids drive me batty. Some software is worth buying if you have the cash available, and I think IDEA is a perfect example.

      But the original poster specified "programming as a hobby", and jEdit should be perfect for that.

      --
      -=Maggie Leber=-
    9. Re:I'd say... Java by SnapShot · · Score: 1

      Very cool intro to yEd. I can't believe I hadn't heard of it before.

      I guess to each his or her own when it comes to the heavy-weight IDEs. However here's one last attempt to defend Eclipse. Since it is free I haven't really had a problem using it in jobs where the "official" IDE is JBuilder or something else. I end up not having to relearn keyboard combinations and each IDE's way of doing things since I can take Eclipse with me home and between contracts. Ctrl+Shift+O is so ingrained as an "optimize imports" command that I fear my brain is permanantly rewired. Nevertheless, I'll give IntelliJ a try when I have a chance (it can't be any worse than JBuilder).

      --
      Waltz, nymph, for quick jigs vex Bud.
    10. Re:I'd say... Java by MaggieL · · Score: 1

      I guess to each his or her own when it comes to the heavy-weight IDEs.

      True dat.

      However here's one last attempt to defend Eclipse. Since it is free I haven't really had a problem using it in jobs where the "official" IDE is JBuilder or something else.

      And since I have a personal IDEA licence, it's just as free as Eclipse as far as my clients/employers are concerned.

      --
      -=Maggie Leber=-
  9. Depends on what you want to do by joib · · Score: 4, Informative


    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.

    ...into the guts of the machine


    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.

    1. 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
    2. Re:Depends on what you want to do by Haeleth · · Score: 1

      In that case I'd recommend something like python combined with some gui toolkit such as wxpython or pygtk.

      Not pygtk. You'd better avoid GTK+ like the plague if there is any possibility that you might ever want your code to run on OS X, because there is no maintained native OS X version of GTK+. (There are X11 versions that run in OS X, but few Mac users will use an X11 app if there is any alternative whatsoever.) And that's not even mentioning how sucky the Win32 port of GTK+ is.

      Basically, consider GTK+ only if the only platforms you really care about are Linux/Unix/BSD-type OSes that use X11 as their primary windowing system. If you want a portable UI that will actually run well on OS X or Windows, use Qt or wxWidgets.

  10. Delphi by SAN1701 · · Score: 2, Informative

    Go to Borland download page and get the free Delphi Personal. I work with many languages (C#, Objective-C, 4D, sometimes Java), but Delphi is the most productive and fun to use, by a wide margin. As a plus, you can generate apps for both win32 and the .NET framework, with the same language.

    Have fun in your return to coding!

    1. Re:Delphi by MagicM · · Score: 1

      You can't actually download Delphi Personal from that page. It has "Keys Only (If you have a CD)" and states: "Please note that Delphi 2005 Personal is only distributed through select publications, and is not available for download."

      Anyone know where to get Delphi Personal (legitimately)?

    2. Re:Delphi by Anonymous Coward · · Score: 0

      nope. cant get it. i've tried.
      They wont send you one, and they aren't making any more.
      Borland authorized a cdrom of BDS-2005 personal (including delphi) for a select few publishers, to be included with certain UK computer magazines.
      Unfortunetly, they put in the licensing "it is illegal to redistribute or copy this cdrom" and most people who got the cd's are sticking to that.
      So they're incredibly rare. You can download the enterprise trial version, but you only get a 60 day key.
      I wish Borland would do like MS and offer a downloadable express edition of Delphi.

    3. Re:Delphi by Anonymous Coward · · Score: 0

      Google on "BorlandDelphiPersonalEdition.exe" and download it.
      Then go to http://www.borland.com/downloads/download_delphi.h tml and register to get a free key for the personal version you've downloaded.

  11. Snag yourself a copy of Eclipse and Tomcat.... by (H)elix1 · · Score: 1, Informative

    Its primary focus is Java, but you can use it for multiple languages. If you were to spend time with an IDE (and some would say that in itself is evil) Eclipse is the one I would pick.

    http://eclipse.org/downloads/

    Going further, I'd probably say you want to putter around with web applications. (Tons of people out there doing PHP, etc, but I would stay on the Java side of the fence) Building web apps, you can start with the spaghetti pages filled with scripts, start encapsulating code, pick up on a MVC framework, DB access, or deployment frameworks. I'd shy away from doing client applications. Again, from the Java camp, I'd snag a copy of Tomcat for my local playground. Anything you do inside the JSP/Servlet container is more or less applicable to BEA or IBM's application server. Nice debugging tools that let Eclipse and Tomcat play together.

    http://tomcat.apache.org/

    1. Re:Snag yourself a copy of Eclipse and Tomcat.... by slamb · · Score: 1
      Going further, I'd probably say you want to putter around with web applications

      I'd say so, too.

      (Tons of people out there doing PHP, etc, but I would stay on the Java side of the fence)

      Dude, are you trying to crush his spirit? PHP has a poor community and lots of sloppy code. But Java's not great, either - it has a lot of massively overengineered frameworks that require a lot of "XML push-ups". It's not a bad language, but I haven't seen a combination of it and any web framework that I enjoy using.

      I'd recommend Python (a refreshingly clean language) with Django or Ruby-on-Rails. Both very trendy, but more importantly, fun to code in.

      I'd also steer away from Eclipse unless you're using Java. As the parent said, there is some support for other languages, but they haven't gotten the same attention, and more dynamic languages are harder to do tricky IDE things with anyway. Eclipse makes a mediocre text editor; they don't even have a hotkey for joining two adjacent lines together. ('J' in vim.) What makes it great is what it can do with its understanding of your code. For example, hitting F3 (show definition) while the cursor's on "foo.toString()" will examine the type of "foo" to decide which of the many "toString()" definitions to open up. That's impossible to do generally in Python due to its duck typing.

    2. Re:Snag yourself a copy of Eclipse and Tomcat.... by Anonymous Coward · · Score: 0
      Eclipse makes a mediocre text editor; they don't even have a hotkey for joining two adjacent lines together. ('J' in vim.)

      How is pressing "end" "delete" that much more difficult than a single keystroke? The keys are right next to each other, and if you have fat fingers you can probably get them both in a single motion.

    3. Re:Snag yourself a copy of Eclipse and Tomcat.... by slamb · · Score: 1
      I said: Eclipse makes a mediocre text editor; they don't even have a hotkey for joining two adjacent lines together. ('J' in vim.)

      An AC replied: How is pressing "end" "delete" that much more difficult than a single keystroke? The keys are right next to each other, and if you have fat fingers you can probably get them both in a single motion.

      First, those are particularly bad keys. On a full-sized keyboard, they're not accessible without moving your hand. On my PowerBook, "delete" refers to the position you'd probably call "backspace"; the "delete" and "end" keys don't exist. "End" requires holding the function key (a kind of awkward wrist pivot and pinky stretch to the far lower-left corner) while hitting the right arrow (the far lower-right corner). The two lower corners are the suckiest keys on the keyboard.

      Second, 'J' does more than that. It replaces the next newline and beginning whitespace with a single space. The closest equivalent is (with my emacs/mac bindings), command-E (go to end of line), option-F, option-F (go before next word), option-backspace, option-backspace, space. Six keys instead of one, and it took me a while to think over that sequence. Usually I go for the mouse, and slow down while trying to highlight an area precisely. 'Join lines' is much quicker, almost instinctive.

      In fairness to Eclipse, it does have command-I, which will reformat the entire file or highlighted block. But that's kind of a shotgun approach. And while I think there are keys to highlight stuff (rather than using the mouse), I can never actually remember them.

  12. Python is a good place to start by Dan+Ost · · Score: 3, Insightful

    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...
  13. PIC Microcontrollers by gus+goose · · Score: 1, Interesting

    In something of the same spot myself. I have found great satisfaction programming PIC Microcontrollers. Recently I decided to move from assembler to C, and that is quite fun too. It's amazing what you can put together when you try.

    www.microchip.com
    www.piclist.com

    gus

    --
    .. if only.
    1. Re:PIC Microcontrollers by tigersha · · Score: 1

      Can you recommend a simple starter board? I would like to play a bit with hardware and such and I programmed ASM a lot on the 6502 (Apple II, yeaaaaars ago) and a bit od x86. So what would be a goof beginners board?

      --
      The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
    2. Re:PIC Microcontrollers by gus+goose · · Score: 1

      Well, I am still mostly a beginner myself.

      What I have:
      "breadboard" for playing with circuits.
      I found DIY Kit 128 at a local electronics store. The website is at http://www.kitsrus.com/upuc.html
      The Kit128 is undergoing some support problems right now in that the primary software developer died, and there is a new crowd taking over. It still works really well, but the newer chips will be a few weeks away from being supported. See discussions at: http://www.websitetoolbox.com/tool/post/diykit/vpo st?id=760548&trail=30

      If I were starting over I would consider one of the EasyPROG, ICD2, Wisp628, or the KIT128/149/150/182 and I believe the 185 (in no particular order). It looks like the Kit128 and it's siblings still have a lot of life in them yet. There are other programmers, and everyone has a different opinion as to whether you should build your first programmer, or buy it. I got the 128 as a kit, and was happy.

      After that, everything you need is available for free from Microchip itself. The IDE is good, ASM is fun, there is even a free "student edition" C Compiler, and you can get free samples of the actual chips themselves.

      Be sure to visit the microchip forums, piclist.com, and http://www.voti.nl/pic/index.html

      enjoy. I do.

      gus

      --
      .. if only.
    3. Re:PIC Microcontrollers by sploxx · · Score: 1

      Maybe you'd be also interested in Atmel's AVR broad line of 8-bit RISC processors. You can find more information here.

      IMHO and compared to PICs, they have a very clean architecture (=> smaller code size & a rather high speed for 8-bit uCs). There is also a GNU GCC port which AFAIK does not exist for PIC processors.

      No, I don't want to start a flamewar, and no, I'm not an employee of Atmel, just a hobbyist using their uCs :)

  14. Python is quite neat by chroot_james · · Score: 1

    It's not a new language, but I picked it up over the weekend and really like it. It can make all the annoying stuff trivially easy and it never feels like a hack. Worth a shot anyway and the tutorial won't take very long to go through to see if you like it. I also use emacs for editing. In terms of IDE's, I think Eclipse is about as good an IDE as I've ever seen, but I do go back and forth between Eclipse and Emacs.

    --
    Reality is nothing but a collective hunch.
  15. Simple by Anonymous Coward · · Score: 0

    If you still have your balls and haven't turned sissy, then the only choice is vi in an xterm. If you've grown soft over the years and need your Mommy^W IDE then I would recommend going back to Windoze.

    1. Re:Simple by MaggieL · · Score: 3, Insightful

      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=-
  16. Free tools and resources Amazon, Google, Windows by microTodd · · Score: 1

    Check out the Coding4Fun site. You can get free downloads of lightweight versions of many of MS's development tools, plus lots of ideas, resources, message boards, etc.

    http://msdn.microsoft.com/coding4fun/

    Me personally, I like playing with things like Amazon.com's API or Google's various tool APIs and building my own hacks.

    Amazon's AWS/Alexa

    Google Desktop API

    --
    "You cannot find out which view is the right one by science in the ordinary sense." - C.S. Lewis on Intelligent Design
  17. Processing by Laplace · · Score: 1

    Go out and get yourself a copy of Processing. It's an easy to use subset of Java that includes a simple IDE and one button application and applet export. It's very simple to learn, but can also use any Java code that you might want to write to extend it. Java in general is a bad language for casual hacking because it takes so much effort to figure out what's happening with Java's libraries. Processing takes a lot of that complication away and lets you focus on writing code that makes pretty pictures.

    --
    The middle mind speaks!
  18. Make Useful Stuff by Anonymous Coward · · Score: 0

    I recommend using vi or emacs (I use both), gcc, and C with C++ added only when it makes you write less code.

    For your web downloading needs, use the curl library.

    For you interface, it greatly depends. You can pick something like gtk or wxWindows that is available on your desired platforms, but please realize that if you are a picky "interface geek" you will never be satisfied. Most projects that fail don't fail because they lack an interface, they fail because people spent all their time piddling around with the interface and never wrote the code. So, I advise that for starters you use the web as your interface, and use Thomas Boutelle's cgic library to interface with your code.

    This will give you a development environment that can produce code for almost any platform out there -- the windows smartphone cell phones are the only ones that come to mind that you couldn't, I thing you need to buy Visual Studio .NET just to get the right header files for that.

  19. 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.

    1. Re:Some ideas by OmniVector · · Score: 1

      I'd agree with most of the things he said, except substitute ruby for python. It's all the great things about that language without the forced indentation, and then some. Ruby on rails is all the rage these days and there's a good reason.

      --
      - tristan
    2. Re:Some ideas by teknico · · Score: 2, Informative

      > 1. Python. It took me a while to get past the indentation-as-block-structure
      > thing (I still think it was a mistake)

      Your comment got to 5, so somebody's got to say it. Significative indentation is nothing less than a stroke of genius. You indent your code anyway, right? So why is everybody forced to keep track of *two* kinds of block delimiters at the same time? Get rid of the stinkin' parentheses, and be done with it!

      The rest of #1 is spot on, however.

      > 2. If you are doing any sort of web work, you will probably have to do a
      > little (a lot?) PHP.

      Why on earth should he *have* to use such an inferior language? Python has lots of fine tools for web work. I advise using Twisted (http://twistedmatrix.com/). Its asynchronous event-based concurrency model may look peculiar at first, but being able to avoid the evil preemptive multithreading is priceless. And there's *lots* of Internet protocols in there for the taking!

      > 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.

      Javascript can get messy: AJAX needs all the hiding it can get. Nevow (http://divmod.org/trac/wiki/DivmodNevow) has great support for it in the Athena package, based on Mochikit. See the other Divmod tools, there's great stuff in there.

      > 5. If you are picking up a DBMS, the obvious choices are MySQL and Postgres.

      Do yourself a favor and use PostgreSQL, or SQLite. MySQL has a dubios history, and is often used together with PHP, which is similarly quirky.

      It bears repeating: you wanna have fun, and at the same time learn a powerful language? Use Python, there's nothing quite like it around. I've been working with it for six years now, and it's been fun almost every day. :-)

    3. Re:Some ideas by Hast · · Score: 2, Informative

      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.

      There is quite a lot you can do with just this since the OP seems to want a way to hack around with webpages. And with some creativity you wouldn't even need to run a local server.

      Look at Tiddly Wiki for an example of what you can create with some creative ECMA scripting. (In short, it's a wiki encapsulated in a single .html page, which you store on your local file system.)

      GreaseMonkey has already been mentioned. But it may be worth to point out that this does pretty much exactly what the OP wants. It lets you mangle webpages as you download them via client side ECMA scripts.

      Otherwise I agree with the idea of trying Python. It's a good demonstration of the progress that computer languages have made in the last 20 years.
    4. Re:Some ideas by glwtta · · Score: 1
      Your comment got to 5, so somebody's got to say it. Significative indentation is nothing less than a stroke of genius. You indent your code anyway, right? So why is everybody forced to keep track of *two* kinds of block delimiters at the same time? Get rid of the stinkin' parentheses, and be done with it!

      I'm at the stage where I can't get past the significant whitespaciness of Python (even though it seems like a cool language).

      The parentheses are what specifies the structure, the indentation is just a visual clue, no one is forced to keep both. If your structure is correct, any modern editor (or, failing that, *tidy) should be able to indent it for you.

      That's the main issue, whitespace is more "fluid" than code, some people like tabs, some like spaces, some do 2, some 4, some 8. So not all tools, and especially not all people, are diligent in round-tripping the whitespace exactly as you gave it to them.

      There's no reason why I shouldn't be able to do a 's/\s+/ /g' on my code (ignoring comments for a sec) and still have the editor format it properly for me.

      --
      sic transit gloria mundi
  20. Why? by Anonymous+Brave+Guy · · Score: 2, Insightful

    Sorry, but since when is expressing an honest opinion a troll? I know a lot of people who would agree that relying on CLI voodoo really is needlessly inefficient for many programming tasks. Use the right tool for the job, or write the right tool first if it doesn't exist yet and then use it.

    Sure, you can design dialog boxes by writing scripts in an editor, but why bother when you can use an interactive GUI to do it in 1/10th the time? Sure, you can write, debug and test your Perl CGI script using nothing but the command line tool and a live web server that's firewalled off the outside world, but why bother if you've got a test environment that's designed to simulate CGI requests from a web page and has testing tools to make that easy?

    Personally, I don't think anything has yet beaten a sufficient powerful text editor for doing web work (HTML, CSS, that sort of thing). All the web design applications I've encountered are just too limiting and under-powered. For programming anything from a moderately long script to a full-scale application, though, I concur with the grandparent post: there are plenty of tools to make common programming tasks easier. Someone like the submitter will probably have plenty to learn at first, without trying to do it with one hand behind his back and spoiling the enjoyment by learning to write pages of boilerplate rather than using the right tool for the job.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    1. Re:Why? by dorkygeek · · Score: 1, Insightful
      No, he just stated that command line tools and gcc are crap, witjout even mentioning the slightest reason!

      So, if I may ask, since when exactly is Emacs considered crap? Since when is gcc not up to the task?

      Better have some answers before calling ME a troll!

      --
      Windows is like decaf - it tastes like the real thing, but it won't get you through the day.
    2. Re:Why? by SilverspurG · · Score: 2
      Sure, you can design dialog boxes by writing scripts in an editor, but why bother when you can use an interactive GUI to do it in 1/10th the time?
      To gain thorough familiarity with the underlying principles of the system and assist the developers of the drag-and-drop programming interface in improving their product.

      Programming a large application is as large and complicated a task as building a house. If you use a drag-and-drop point-and-click system it will be larger, there will be more cruft, there may be more logical problems in the code, some important features may be left out if they're not made readily available in the interface, and the programmer learns very little about the underlying system. Programming with a text editor will take forever but, if done properly, will be practically perfect. Assess the field and evaluate your goal properly before choosing. It's likely the correct decision will involve a combination of both techniques.

      The GP's post was mostly good. Ascribing all text programming to a masochistic addiction to counter productivity and frustration is the troll. It demonstrates a complete lack of anything but the shallowest level of understanding of the art form.
      --
      fast as fast can be. you'll never catch me.
    3. Re:Why? by Anonymous+Brave+Guy · · Score: 1

      I suspect we agree on much more than we disagree on here, but perhaps I'm not making my point clearly enough.

      I'm not saying that people should program without knowing what the underlying model is, or what the code generated by their whizzy GUI designer does. On the contrary, I think these are valuable things that will serve any programmer well eventually. What I am saying is that just because it's helpful in the long run to understand these things, you don't have to learn all the little details first. Remember we're talking about someone getting back into programming after a pretty long gap here. There will be plenty of time to understand the deep issues later, but first you have to have some context and get into the subject a little, at least IMHO and IME as someone who's taught several skills at several levels to different kinds of people.

      Also, you don't have to do everything the hard way all the time in order to understand it. Would you calculate the ratio of two large integers by long division? I wouldn't, I'd use a calculator of some sort. Does that mean I don't understand long division, or that I couldn't do it if I had to? No. It just means that I find it more productive and less error-prone to get a machine to do it for me.

      Finally, on the issue of CLIs vs. GUIs, I think your implicit assumptions are a little unfair. In neither of the examples I gave will a half-decent GUI generator produce worse code than hand-coded, or obscure the real meaning behind pages of macro-driven baloney. Programming with a text editor that helps correct mistakes on-the-fly will make you a lot nearer to practically perfect than programming with a text editor that doesn't, and if it comes with more natural, more powerful tools for generating some of the code to boot, it will do it much faster, too. Do you really think it's still necessary to hand-code a makefile in today's programming world? I can't remember the last time I needed to do it, or even to worry about it, other than when porting to inferior development platforms that don't have tools to do it all for me with a couple of quick instructions. (Typically, one of my first actions on such platforms is to port/write suitable tools that do do this.)

      At the end of the day, I think programming is difficult enough with good tools and good languages. One developer's world just isn't big enough to fit in all the cruft as well, and life's too short to waste it on inefficient tools just because. Learning anything more fundamental/lower level is usually useful only as a route to greater understanding, and even then it's only as useful as the greater understanding it brings.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    4. Re:Why? by Anonymous+Brave+Guy · · Score: 1
      So, if I may ask, since when exactly is Emacs considered crap?

      That depends on whether you find entering text is always the most efficient way of writing all your code. For many jobs, it clearly isn't.

      Since when is gcc not up to the task?

      That depends on, amongst other things, how much you value the performance of your output code, and how much you need to use a widely portable compiler. For example, if you're writing for Wintel, the Visual Studio suite has blown away anything the GNU tools had to offer in terms of development environment, usefulness of debugging tools, quality of generated code, and various other rather important metrics. (This isn't to say it will necessarily continue to do so, nor that using GNU tools doesn't have advantages in other areas.)

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    5. Re:Why? by dorkygeek · · Score: 1
      That depends on, amongst other things, how much you value the performance of your output code, and how much you need to use a widely portable compiler.

      If you look at the original question of that guy, he says "I'd like those applications to be usable on the Linux and perhaps Mac OS X platforms." Looks to me as he does neither mentions Windows nor performance, but Unix and cross-architecture portability. Despite, TheSkepticalOptimist goes on to advertise MS stuff like it would be his last day.

      For example, if you're writing for Wintel, the Visual Studio suite has blown away anything the GNU tools had to offer in terms of development environment, usefulness of debugging tools, quality of generated code, and various other rather important metrics.

      Funny you mention that. AFAICT, Intel's compilers are still better than the MS ones.

      --
      Windows is like decaf - it tastes like the real thing, but it won't get you through the day.
    6. Re:Why? by Anonymous+Brave+Guy · · Score: 1
      If you look at the original question of that guy, he says "I'd like those applications to be usable on the Linux and perhaps Mac OS X platforms." Looks to me as he does neither mentions Windows nor performance, but Unix and cross-architecture portability.

      Sure, and in other posts that's what I've addressed. In this subthread, however, the claim was that command line tools could be counter-productive and frustrating (not "crap", despite what you attributed to the OP). Your particular question was when gcc wasn't up to the job, and I gave you some examples where it isn't.

      AFAICT, Intel's compilers are still better than the MS ones.

      Yes, they produce better code, at least on Intel boxes. However, their development suite as a whole sucks; we recently trialled several profilers at work, and Intel's VTune stuff was so convoluted, hard to install and hard to get even plausible results out of that we rejected it by the end of the first day of evaluation.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    7. Re:Why? by pthisis · · Score: 1
      So, if I may ask, since when exactly is Emacs considered crap?

      That depends on whether you find entering text is always the most efficient way of writing all your code. For many jobs, it clearly isn't.


      The beauty of using an unintegrated development environment is that you can very easily pick the right tool for the job.

      I use gvim with Python, but I also use wxglade to build desktop interfaces (especially in the prototyping period). My setup also interfaces the web server for web apps (so uncaught exceptions on my development server will put my debugger and editor at the right places).

      Lots of unintegrated tools that interface nicely. I could use a nearly identical setup with emacs instead of vim, or switch to twisted in place of Apache+mod_python, or switch to a different GUI builder and still have most of my features just work.
      --
      rage, rage against the dying of the light
    8. Re:Why? by Anonymous+Brave+Guy · · Score: 1

      That's all fair enough, and I don't disagree that the approach you describe can work well. I think we're a little beyond what the original poster meant when he talked about cheap command-line editors here, though.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  21. Aren't those contradictory? by SanityInAnarchy · · Score: 1

    Look at the difference between scripting languages (perl/python/ruby) and straight C.

    If you want to force yourself into the guts of the system, do some kernel hacking, do a Gentoo install from scratch (which doesn't have an install program; you must learn your shell and your rescue utilities...)

    Learn things like Assembly, learn a bit about how compilers work so that you know what code is efficient and why.

    The tools I've learned and have served me well are probably the same ones you used 20 years ago: vim and gcc. Replace "gcc" with any other commandline compiler/interpreter.

    But then, if you want something that has a great look & feel, that pulls information from the web and plays with it, you don't want any of that. You could even do something in Javascript to do that; my personal preference would be perl... But depending on how "pretty" you want this, you may require a completely different set of tools than "vim, Firefox, and Javascript" or "vim and perl" or "vim and python". You'll probably need something more like Eclipse, or some other cross-platform IDE, something that lets you lay things out visually, which does most of the grunt work for you...

    You'll probably also need something I really, really need to learn by now -- a debugger.

    --
    Don't thank God, thank a doctor!
  22. Mono is cool as well by MrRobahtsu · · Score: 1

    If I were to get back into GUI programming, I think I would go with Mono and gtk#. And Emacs. But some people actually like monodevelop, eclipse, etc.

  23. Ruby, Python, Perl, Cocoa by ZZamboni · · Score: 1

    Ruby on Rails looks very nice for web application development (and they just released 1.0, with educational videos and everything), and Ruby itself looks like an interesting language by itself (I have not programmed in it).

    I'm a long-time Perl hacker, and it's great for doing "fun" programming, since it lets you do things the way you want it, without imposing many rules. Lately I've been learning Python, and it's also very nice - much more structured, and with an incredibly complete standard library.

    You mention you want cross-platform, but if you have a Mac, do take a look at Cocoa development. It's an incredibly nice environment in which to develop, and the tools are superb.

  24. Re:PARENT IS A TROLL (Re:Plain and simple) by Doc+Squidly · · Score: 0, Flamebait

    It seemed like he was just expressing his opinion and stating what his experiences were.

    A troll would have been: dood, 0p3n$0urc3 7001$ $uck! w!nd0w$ d3v310pm3n7 ru13$! W00t!

    Just because someone says something that you don't like doesn't make them a troll.

    --
    I think I think, therefore I think I am.
  25. Join an Open Source project by hubertf · · Score: 1

    The problem sounds vaguely familiar - often I want to try new things (programming languages, tools, ...), but lack the right project to start going.

    Maybe have a look at some open source projects (http://www.freshmeat.net/ http://www.advogato.org/ etc. have some lists), look at the code and read it, read the mailing lists to get into the development process, start making changes for things, try getting review of them, submit code and maybe also documentation (actually, documenting things that you find undocumented and that you understand may be a good first step before going to coding), etc.

    For some ideas from an operating systems project, see:

    http://www.netbsd.org/contrib/projects.html
    http://www.netbsd.org/Gnats/

      - Hubert

  26. Take a look at the O'Reilly book by Matt_Doar · · Score: 2, Informative

    Practical Development Environments http://www.oreilly.com/catalog/practicalde. This covers all manner of tools: version control, build tools, testing environments, bug tracking, documentation and release. Each chapter talks about general ideas, and then looks at specific tools (some open, some closed).

    ~Matt

    (Disclaimer: I wrote it)

  27. PyObj-C or GNUStep by JPyObjC+Dude · · Score: 1

    OSX is the best place to hack these days because they support full array of cross language development. Objective-C has alot of promise becuase of its ability to leverage C and C++ libraries very easily. It also bridges well to Ruby and Python.

    By using Python and/or Ruby as your prototype layer, you can migrate stabalised code to Objective-C and even further optimize locked down frameworks to C or C++. All within the same application.

    Cross-Lanugage applications is where the future of large application development is.

    JsD

  28. Have you considered web based? by kbahey · · Score: 1

    Instead of developing stuff for the desktop, where you have to chose if it runs on Windows, Mac OS/X or Linux, why not tinker with something web based?

    Start with LAMP (Linux Apache MySQL PHP) because it is available everywhere on virtually all hosts, or go a little bit further with a framework such as Drupal.

    If you are a bit more adventurous and do not care about hosting availability, consider Ruby on Rails.

  29. A Coder? by ratboy666 · · Score: 1

    So you "coded" for 5 years, and then went "techie-upstream" for 20...

    In a nutshell, you need to code for another 10 years. It takes around 15 years to build reasonable proficiency and skill.

    Back to the "salt mines" for you.

    1 - 20 year ago, C just started gaining commercial acceptance. Work on your C skills for a couple for years. Study old Unix source. If you can look at this code, and tell what is wrong, you are well on your way (and, yes, I know it is K&R):
    f(c) char c; { char *s = f2(s); }

    2 - Learn Scheme. Make use of the online MIT resources. Maybe move to Common Lisp.

    3 - Begin study of ANOTHER of the current crop of interpretive or "immediate" programming systems - Perl, Python, Ruby. Don't let the Scheme go, though.

    4 - Tackle Smalltalk - its one of the (or the most) productive systems out there. Squeak would do.

    5 - UML, XML, and the current crop of buzz.

    This would give you a fair grounding. Time? 2 or 3 years C, 3 years Smalltalk, 2 years Scheme. That would get you "up to speed" as a proficient programmer in about 8 years.

    Ratboy.

    --
    Just another "Cubible(sic) Joe" 2 17 3061
    1. Re:A Coder? by middlemen · · Score: 1

      so what is wrong with that snippet of C code dude ? seems to work fine...

    2. Re:A Coder? by tengwar · · Score: 0, Flamebait

      Twaddle. Perhaps it took you 15 years to become competent, but for most people if they get there at all, they do in a few years. Personally I think you're just being a pretentious plonker.

    3. Re:A Coder? by ratboy666 · · Score: 1

      That snippet is endian dependent. The argument is widened to an "int", and the address taken is for a byte pointer. Result - works on some architectures, and traps on others.

      --
      Just another "Cubible(sic) Joe" 2 17 3061
    4. Re:A Coder? by Anonymous Coward · · Score: 0

      That snippet is endian dependent. The argument is widened to an "int", and the address taken is for a byte pointer. Result - works on some architectures, and traps on others.

      This is the code you included:

          f(c) char c; { char *s = f2(s); }

      It doesn't even use the argument. Assuming you meant to write

          f(c) char c; { char *s = f2(c); }

      then there is nothing wrong from a language perspective. Your summary of the "problem" is hogwash. You need to learn C before you give advice.

    5. Re:A Coder? by ratboy666 · · Score: 1

      Hunks eaten by this system.

      should be

      char *s = "address of"c; f2(s);

      --
      Just another "Cubible(sic) Joe" 2 17 3061
  30. Codewarrior is dead by wandazulu · · Score: 2, Insightful

    Metrowerks (sorry, Freescale) already announced that there will be no more OS X version of Codewarrior (nor Windows...they're going for the embedded market now).

    Dunno about their Linux IDE, but I wouldn't be surprised if that gets shut down too.

  31. Tremendous progress in development tools by Raskolnk · · Score: 4, Funny

    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.
  32. Widget Engines? by slthytove · · Score: 2, Informative

    Although these haven't really taken off on Linux yet, there are several "widget engines" (for lack of a better, encapsulating term) that have become quite popular over the past couple years. You mentioned a desire to do small, web-fetching things - that's what many Widgets end up being. On top of that, the logic is usually handled with readable scripting languages, there's usually no compilation required, and it's very easy to get nice-looking graphics up alongside the code.

    I've recently started doing most of my personal development in the Yahoo! Widget Engine (formerly known as Konfabulator), which is available on both Windows and Mac. Here are a few of the Widget environments that I'm aware of...

    • Yahoo! Widget Engine (Win + Mac) - JavaScript-based logic
    • SuperKaramba (Linux KDE) - Python-based
    • gDesklets (Linux Gnome) - Python-based
    • Kapsules (Win) - Any Windows scripting language-based, including JScript, VBScript, JScript.NET, VB.NET, Perl, PHP, Python and Ruby
    • Dashboard (Mac) - HTML/JavaScript-based
  33. IDE by SavvyPlayer · · Score: 1

    If you plan to focus on c/c++ development, using either the QT/KDE or GTK+/GNOME gui frameworks, I highly recommend KDevelop. If you will be working with XML/XSLT or HTML/CSS, Quanta+ is an excellent companion tool. Together these tools are more powerful than anything freely available under Windows (including the free-as-in-beer visual studio express editions) or MacOS, with the notable exceptions being a fully equipped emacs or eclipse environment.

    If you plan to focus on Java, eclipse is really the place to start. To get the most out of eclipse however you'll need to install at least a dozen or so plugins, of which there are literally hundreds of powerful plugins to choose from. On the non-free side, you'll want to evaluate IDEA.

    If you plan to focus on scripting with Ruby (consider exploring the Rails framework as well), Python, or Perl/CPAN, KDevelop will do nicely. On the non-free side, there is the excellent Komodo IDE.

    If you plan to focus on ECMA-CLI development (using any combination of CLI language implementations including C#, Nemerle, Java, Python, etc.) Mono provides a rich set of framework APIs (with its default UI framework based on GTK+), however this list is not nearly as extensive as those available under Java. Using p/invoke it's quite simple to invoke any of the platform-specific libraries that you would normally use in a c/c++ context as well. The MonoDevelop IDE is really the place to start here, however progress is being made to buid mono-specific plugins for emacs, eclipse and Anjuta (IIRC).

    Other standard utilities you'll want to have in your toolchest include gcc, g++, gdb, ddd, GIMP (there will come a time when you need to create or modify a bitmap), kompare, subversion, cvs, ltrace, strace, lsof, iostat, oprofile, vmstat, sar, mcheck and valgrind come to mind first.

    If you will be doing OSS development on any of the major projects, a good IRC tool is also highly recommended.

    HTH

  34. Depends on what you're writing by andy753421 · · Score: 2, Interesting

    Personally I would like to know two languages really well. To me it seems like there's two types of programs that I would write, big programs and small programs. For the big ones I would want to use common mature language like C/C++ (or Java if you prefer) that way the program will run faster and pretty much everyone can run C executable or Java bytecode. Then for the smaller ones I would like to know some sort of 'scripting' language such as Perl/Python/Ruby/php/etc where I can quickly write things down and have not have to worry about the troubles of datatypes, compilations, and other such hairy problems I run into when writing in other languages. You may also want to consider what you will be doing most. For example php is pretty much designed for use on web pages. I don't how how true it but judging from programs I've seen python seems to be good for large projects if you still want to use a scripting language, and I don't think I've ever seen perl used for anything that included more than a few files. There's also portability to consider, C/C++ may be nice but it is still harder to make cross-platform than something like Java or any of the scripting languages. If you write code in Visual Studio you may run into problems using it on anything other than Windows (although there's Mono, most users don't have it installed). The same goes for Java if your uses are among the 'faithful' and refuse to use the sun java implementations. As for GUI toolkits most of them have bindings in whatever language you choose, and for choosing a toolkit it's really up to you. As far as I'm concerned they all do the same thing so it's just a matter of which programing style you like best. Again you may want to consider what your users will already have installed. For IDE's i think it mostly depends on what language your using. I prefer a text editor for a lot of things, however Eclipse is great for Java and there's some that tailor to the likes Qt and GTK such as Kdevelop and Glade, however I have never used any of them. (oh, and if you're really hardcore you could just skip out those overrated editors all together and just use '# cat - >')

    1. Re:Depends on what you're writing by andy753421 · · Score: 1

      please mod parent 'dumb' he forgot to use the 'preview' button.

  35. wyoGuide, cross-platform development for the Geek by wysiwia · · Score: 0

    These days a geek probably will develop cross-platform since a geek don't want to be limited by platform considerations. And if you want to create a decent application with all the usual features a top application has, there is IMO just one solution and that is wyoGuide. wyoGuide allows you not only to create cross-platform applications but also build good and full featured application and with the demo sample code you get this application coded really fast. Any application written using the sample code will just run right from the start.

    If you have time I invite to try it out and hopefully return an experience report for others to see how easy it was.

    O. Wyss

    --
    See http://wyoguide.sf.net/papers/Cross-platform.html
  36. Go open, but mainly GO by robix_mevdev · · Score: 1

    I use .net (windows & visual studio 2003) at work. It does the job, but is inelegant.

    I use cocoa at home. It is wonderful. It makes me want to learn more of the api's within mac os x.

    I recommend using SDL (for graphics and sound). It is fabulous, and multiplatform. I could write an app and then easily port it to .net or linux.

    THE KICKER: I don't change my ideas and ideals when I switch platforms. Everything is still there, and I'm the better for it. UI guidelines are great (get Apple's PDF). The platform is ananthema to the fact of why. I've been using my pc laptop at home to program my Game Boy Advance. It is great, and I'm learning so much. It is broadening my skills and that is transferring to everything else.

    so my advice. JUST GO FOR IT WITH WHATEVER YOU HAVE. Make decisions later.

    oh, and plan to throw the first one away. I always do. (idea from mythical man month)

  37. Eclipse RCP by curious.corn · · Score: 2, Interesting

    You might be interested in the Eclipse RCP developing environment. It's Java based so it will run just about anywhere, it's heavily OO design patterned so there's quite a bit of API to chew but it has a nice GUI editor. I'd give it a bite...

    --
    Mi domando chi à il mandante di tutte le cazzate che faccio - Altan
  38. Java + Eclipse by psykocrime · · Score: 1

    If it were me, I'd go with Java and use the Eclipse IDE. Java is fairly easy to learn, fairly powerful and has large, useful standard class library and has a wealth of additional libraries (many F/OSS) available. If you're interested in grabbing stuff off the 'net, look into Jakarta Commons HttpClient. Or, for other protocols than HTTP, look into Jakarta Commons Net. If you want to invoke web-services calls, you might find Apache Axis useful.

    As far as look and feel, Swing has come a long way as a GUI toolkit, but a lot of people like Eclipse's SWT. If you use Eclipse and the Rich Client Platform as a base for your applications, you get a lot of functionality "for free." It's probably worth your time to give it a look see at least.

    If you don't like any of that, just use GNUStep and Objective-C.

    --
    // TODO: Insert Cool Sig
  39. How about Adobe Flex? by mad.frog · · Score: 1

    I'll probably be flamed for suggesting a non-free, Flash-oriented solution on Slashdot, but...

    Check out Macromedia Flex 2 (errr, I guess now it's "Adobe Flex 2"), currently available as a free alpha release

    It's based around the (free) Eclipse IDE, and satisfies your requirements:

    -- great look & feel
    -- well-suited to pulling info from the web (think weather & news)
    -- usable on the Linux and perhaps Mac OS X platforms as well as Windows (basically, anywhere Flash Player runs)
    -- standards-based to some extent, believe it or not: ActionScript 3 is essentially identical to EcmaScript 4

  40. um... by Run4yourlives · · Score: 1

    but I'd like to get back to coding on at least a recreational basis.

    Seriously, 15 years? Give us a break you pretentious goof. The guy/gal just wants to get a little fun out of coding, not become a hermit.

    We're not all a bunch of losers without any friends.

    1. Re:um... by ratboy666 · · Score: 1

      "but I'd like to get back to coding on *at least* a recreational basis." (emphasis mine)

      That would be *at least*. The course of study described would result in that. Someone could ask "I'd like to get into auto mechanics, at least on a recreational basis". And what would you suggest. How about novel writing? Oil painting? Again, emphasis on "at least".

      If someone wants to "code on a recreational basis", I would suggest a different course. The "at least" suggests profesional aspirations. Which is why I suggested the given course, and attendent timelines.

      Pretensious goof? I may be that. I also tried to answer the question.

      --
      Just another "Cubible(sic) Joe" 2 17 3061
  41. Re:PARENT IS A TROLL (Re:Plain and simple) by dorkygeek · · Score: 1
    If you read the complete Wikipedia article you linked to you will realise that trolling does not always consist of typing unproven accusations in 133t sp34k.

    If you reread my post above, you will clearly see that I called him a troll in disguise, i.e. a non-obvious troll.

    --
    Windows is like decaf - it tastes like the real thing, but it won't get you through the day.
  42. Too bad you need cross-platform. by Randolpho · · Score: 1

    Because the next big thing, which you could learn while it's still cutting edge technology and known by only a select few, is Windows Vista and the Windows Presentation Framework. Powerful GUI it is... Powerful GUI

    --
    "Times have not become more violent. They have just become more televised."
    -Marilyn Manson
  43. Re:PARENT IS A TROLL (Re:Plain and simple) by Doc+Squidly · · Score: 1

    Yes, I did read the article (which doesn't define someone who simply states their opinion as a troll) and I don't think he was trying to a troll in disguise. I'm sure there is something (software/hardware) that you've had a bad time using and would recommend other to avoid. Would that make you a troll?

    And, If you reread my post above, you could tell that the l33t was, in part, humor and not meant to imply that tolls only used l33t sp34k but to illustrate that to be a troll it would have to have been an inflammatory statement, meant to piss-off other people.

    --
    I think I think, therefore I think I am.
  44. Welcome! by gnarlin · · Score: 4, Funny

    Welcome back Bill!

    --
    A bad analogy is like a leaky screwdriver.
  45. An underdog by edesio · · Score: 1

    Why not TCL (Tool Command Language)?

    It is a really simple language, quite powerful, cross platform (runs in Unix, Windows, Mac OS) and with a very supportive community (<URL:http://wiki.tcl.tk/>).

    It has a nice toolkit for graphical interfaces "Tk" (many times copied with interfaces to perl, python, etc.).

    All you need is a simple text editor. Since it is an interpreted language, you have a short edit-compile-debug cycle.

  46. I'd say Java 1.5 + NetBeans. by crazyphilman · · Score: 1

    It's one-stop shopping. Just download the current edition of the JDK and it comes with NetBeans -- all for free. It's available for every platform and it supports full object-oriented programming and most modern tools, everything from aspects to unit testing.

    With Java, you can go in any direction you want. Want to play around with algorithms? There are good Java algorithm texts around, and you can have a blast. Want to write up a GUI? You can do that too. Want to do networking software? Java offers great networking support.

    I really don't think you can go wrong here. In a few years, Apache is even going to offer a full open-source standard edition of Java (they're working on it right now).

    Give it a try. :)

    --
    Farewell! It's been a fine buncha years!
  47. Enough Cocoa praises by hsoft · · Score: 1

    Arg, I can't read these Cocoa praises anymore. When I bought my mac mini a couple of months ago, I couldn't wait to finally try to develop on that famous Cocoa platform. But it is far from perfect. There are quite obscure hacks in it. Have you ever tried to do Drag and Drop with an NSBrowser? If you want to do so, you have to make a big, ugly workaround because NSBrowser eats the mouseDragged: event. You have to manually determine if a mouseDragged event occurs in mouseDown. This is really ugly.

    That is the worse example I have, but there are a couple of others like this. BTW, do anyone know how to show a particular page of a help file? NSApplication has showHelp: (which just open the help file at the main page), but nothing else. After googling a bit, I think that the ONLY way to show a specific page in a help file is to use the Carbon API. Isn't that ugly enough for you?

    Cocoa is nice, but not THAT nice. So as long as you don't stray from that little path Apple gives you, you shouldn't have problems with Cocoa, but as soon as you want to do something just a little special, BAM, you have to make some pretty ugly hacks.

    --
    perception is reality
    1. Re:Enough Cocoa praises by Yaztromo · · Score: 1
      BTW, do anyone know how to show a particular page of a help file? NSApplication has showHelp: (which just open the help file at the main page), but nothing else.
      Well, it took me all of 30 seconds to find what you're looking for:

      Loading a Help Book Page

      Looks pretty simple and straight forward to me.

      Have you ever tried to do Drag and Drop with an NSBrowser? If you want to do so, you have to make a big, ugly workaround because NSBrowser eats the mouseDragged: event. You have to manually determine if a mouseDragged event occurs in mouseDown. This is really ugly.

      Ugly only because it sounds like you're doing it wrong. Had it not occurred to you that you're working in a fully Object Oriented environment, and could just subclass NSBrowser and implement your own mouseDragged: method?

      Yaz.

    2. Re:Enough Cocoa praises by hsoft · · Score: 1

      AHGotoPage is in C-A-R-B-O-N.

      Yes, I subclassed NSBrowser. You HAVE to subclass NSBrowser even to do the ugly freaking trick. Try it for yourself, you'll see. Google for "NSBrowser drag". You will see.

      Go ahead, just try to subclass NSBrowser and put some code in mouseDragged, just to see that it will NEVER be called.

      --
      perception is reality
  48. Java + Thinlet. by Anonymous Coward · · Score: 0

    java + thinlet.sf.net is an awesome dev environment + totally cross platform. use pico or nano as editor of choice.

  49. same good ol' trends by namekuseijin · · Score: 1

    "what are the right tools?"

    a shell, a compiler and vim.

    --
    I don't feel like it...
  50. You want something for fun? by Darius+Jedburgh · · Score: 1

    A little different from what you're used to? You've been programming for years so you'd like something that gives you a different perspective on old problems? But you don't want to go out on a limb - you'd like to use tools that are well documented and well supported with a large user base. The answer is simple: Haskell. Everything else is just the same old same old.

  51. Console + vi + cc = like 20 years never happened by AHumbleOpinion · · Score: 4, Funny

    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. ;-)

  52. Learn OOP by Will+Sargent · · Score: 1
    Since you haven't mentioned a specific programming language, I'll assume you're conversant in C, but not C++ or Java. In this case, you'd probably be good learning Java: you'd be learning a new style of programming, have a "safe" environment to fail (since everything in is in a JVM) and you can leverage the cross-platform GUI to run on Mac and Linux.

    Eventually, you'll want to move to Eclipse, but you can start off with BlueJ, which will help you learn the basics before you try anything more advanced.

  53. LISP by sdedeo · · Score: 1
    Hey, there's a lot of good advice in the comments here, but if you are working purely for fun, I recommend playing with / learning LISP. ANSI Common Lisp has a great manual by Paul Graham, and there is a great set of books on Scheme (closely related) in dialogue format (forget the titles, go on amazon, Little Schemer I think?)

    These are great languages, truly beautiful in a really deep conceptual manner. They are also very flexible. You are beyond the OMG I can create a dialog box like a real program stage, and LISP really lets you do tricks very easily. I wrote a genetic algorithm evolver in LISP -- something I couldn't have come close to doing in C without a huge amount of ugly hack.

    The community surrounding LISP is very, very smart, and helpful as well. You won't be drowning in crap as you would if you wanted to get involved in the Perl community (great language, but it's a metropolis now.)

    Good luck, and congrats on wanting to get your hands dirty again. By the way, if you do pick up LISP, it will make you a better programmer; I speak from experience. I'll stop evangelizing now, but Graham has his own website where he does it for me. Best quote:
    "Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp."
    --
    Protect your liberties. Donate to the ACLU
    1. Re:LISP by be-fan · · Score: 1

      I have to agree with you. The people who have been saying "do C, that's what everybody uses" are really missing the point. If you're coding reacreationally, you're not constrained to using what everybody else is! LISP is a great way to expand your horizons, and will teach you a lot of techniques that transcend specific languages. It really is a language that lets you focus on creating something interesting, instead of getting bogged down in micromanaging the machine.

      --
      A deep unwavering belief is a sure sign you're missing something...
  54. Stick with what you know by toddbu · · Score: 1
    I've been in the game for about 30 years now, and the skills that I learned in my youth on a DEC PDP and VIC-20 are as applicable today as they ever have been. Forget all the fancy IDEs and tools that promise to save you from having to do real work. The way to approach any problem is to look at the requirements, then shop for the right platform that will do the best job. In some cases this will be the latest and greatest programming language, but in many other cases the old standbys (or some variant) will do just fine. Don't abandon C or FORTRAN just because somebody tells you that you need Java or .Net. Just use the right tools for the job.

    Personally, I changed over to web development about 10 years ago. I use PHP and MySQL for just about everything. With my background, neither was difficult to pick up, although living in a client/server world takes a little getting used to. I still use vi on a regular basis, and grep is still a better tool than any search functionality you'll find in any IDE because you can transform your results by using pipes. I while I like a GUI for reading Slashdot and news, I still get tons of work done from the command line.

    --
    If you don't want crime to pay, let the government run it.
  55. Cygwin by hayriye · · Score: 1
    I bet you are using/have to use Windows platform. Then try Cygwin which gives you a virtual Linux environment on your Windows PC.

    You can use every script language like Perl/Ruby/Python there, without thinking about using / and \

    You can download all open source software and be able to do the following standart build process:

    ./configure
    make
    make install

    You can use the powerful bash shell and use emacs, vi etc.

    You can have Apache web server and Postgresql database server there.

    And best of all, you can hide all your experiments under c:\cygwin directory.

  56. Qt4 rocks by devaaasimon · · Score: 1

    When targeting the linux and MacOSX platforms I believe the ideal framewrok will be Qt4 (http://www.trolltech.com./
    This framework supprts everything you will ever need, right from GUI classes to network and database classes.

    And everything through the lovely language C++

    The thing is, you use the qmake tool to create your project and then it simply compiles and runs on both OSs (and windows for that matter).

    The Qt4 framework has been released under the GPL, with an alternative license which makes it possible to redistribute closedsource (this latter costs money of cause).

    Editor: Hmm.. I personally use emacs and an xterm, QDesigner (included with the framework) for the click and draw GUI design.

  57. Learn C/C++ by Viol8 · · Score: 1

    Ignore all the script functional language fanboys. The ONLY languages
    you can write EVERYTHING in on ALMOST EVERY platform is C (and also C++).
    It goes all the way from the OS itself through device drivers, database
    engines, games, GUIs , you name it.

    If you don't know C learn that first as it'll give you a good grounding
    in low level techniques then learn C++ to get a reasonable grasp of
    OO & generics. (Cue ivory tower academic rant on how C++ isn't true OO...)

  58. Lazarus by marcovje · · Score: 2, Funny
  59. Re:Free tools and resources Amazon, Google, Window by ZvlvLord · · Score: 1

    Greetings,

    ***Which part*** of

    "I'd like those applications to be usable on the Linux and perhaps Mac OS X platforms."

    did you not understand ?

  60. I dont quite get it by JasenkoD · · Score: 1

    You have 25 yrs of tech experience, You have been following the trends, And you're saying you need help selecting development tools??

    --
    "Do or do not. There is no try."
  61. Re:Free tools and resources Amazon, Google, Window by microTodd · · Score: 1

    Apparently, all of it. :-)

    My apologies. I not only did not RTFA, I didn't even completely RTFSummary.

    I guess I should refrain from commenting when I'm just quickly glancing between Slashdot and my IDE at work.

    --
    "You cannot find out which view is the right one by science in the ordinary sense." - C.S. Lewis on Intelligent Design
  62. you must be kidding by penguin-collective · · Score: 2, 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 don't actually like Objective-C or Xcode, but there is one thing where they are clearly superior to C++: Objective-C is far closer to what object oriented programming is about than C++. As Alan Kay wrote:
    "I invented the term Object-Oriented, and I can tell you I did not have C++ in mind."
  63. Perl - Catalyst for web dev by Anonymous Coward · · Score: 0

    If you already have some idea of perl and want wonderful MVC web framework goodness, take a look at http://catalyst.perl.org/ which is being touted by many as "perl's answer to Ruby on Rails".

  64. Lambasting in 60 seconds. by Anonymous Coward · · Score: 0

    "I guess I should refrain from commenting when I'm just quickly glancing between Slashdot and my IDE at work."*

    I wouldn't worry about it. Apparently the "cocoa" people haven't got the message either. Maybe ZvivLord is running a bit behind?

    *You can use VS 2005 to create cross-platform apps. You simply have to pay attention when writing your code (in C/C++ naturally).

  65. Get away from BlueJ, the rest will work itself out by Anonymous Coward · · Score: 0

    I just recently had to do some coursework for a java-centric CS course, and the instructor insisted on using that BlueJ program. I used it once, and promptly threw it away and went back to using my SlickEdit. BlueJ does everything a IDE shouldn't, and nothing a source editor should.

    I can't recommend a language, as this is purely personal choice for most people; but for IDEs, SlickEdit is worth its weight in platinum, and Eclipse is good (I hear) if you're looking for a free solution.

    My first advice would, actually, be to get a Linux live CD and try it out; there's most likely going to be all kinds of compilers on the CD already (C/C++, Python, Ruby, Java, etc etc). Just install linux, you'll have everything you need.

  66. Evolution of a programmer (rec.humor.funny) by halleluja · · Score: 0
    From rec.humor.funny (manager section seems to apply in your case):
    High school/Jr. High
    10 PRINT "HELLO WORLD"
    20 END
    First year in college
    program Hello(input, output);
    begin
    writeln ('Hello world');
    end
    Senior year in college
    (defun hello
    (print
    (cons 'HELLO (list 'WORLD))))
    New professional
    #include <stdio.h>
    main (argc,argv)
    int argc;
    char **argv; {
    printf ("Hello World!\n");
    }
    Seasoned pro (garbled to bypass lameness filter)
    #include <stream.h>

    const int MAXLEN = 80;

    class outstring; class outstring { private:

    int size; char str[MAXLEN]; public: outstring() { size=0; } ~outstring() {size=0;} void print(); void assign(char *chrs); }; void outstring::print() { int i; for (i=0 ; i< size ; i++) cout << str[i]; cout << "\n"; } void outstring::assign(char *chrs) { int i; for (i=0; chrs[i] != '\0';i++) str[i] = chrs[i]; size=i; }

    main (int argc, char **argv) { outstring string; string.assign("Hello World!"); string.print(); }
    Manager
    /* George, I need a program to output a string
    "Hello World!" */
  67. What were you thinking!? by Aptiva · · Score: 1

    Don't ask questions like this on /. ! By now you've had recommendations for about every programming language ever written

  68. A good one-stop solution... by Doctor+Memory · · Score: 1

    ...is to just pick up a Sun Ultra 20. It comes with the latest development tools for Java (including an app server), C, C++ and FORTRAN, and is a peppy box to boot. You also get three years of support for the included tools, and it'll run Solaris 10, Linux and Windows. It's also reasonably priced, all things considered.

    --
    Just junk food for thought...
  69. What a great question! by GolfBoy · · Score: 1

    I'm a pretty senior architect, so to some degree I get to play at what you want to do. Here's are some things that I think would be useful to get familiar with.

    1) Whatever you do, do some TDD. Test Driven Development is more of a mind-shift than any particular technolgy you're likely to be exposed to. Make sure you have a unit-test (class level) test framework going for whatever you do.

    Issue: How much more qualtiy, at what cost, are your developers likely to get practicing TDD? (My answer? Lots, but see what you think.)

    2) Pick something Eclipse-based. vi? emacs? Gimme a break. Whether it's Java or C++ (CDT plug-in) or Ruby or Python, use Eclipse. It's the emacs for the new era.

    Issue: How much do state of the art tools affect developer productivity? (My answer? It's huge.)

    3) Do something web-based that requires running in an app-server. Tomcat / MS$ / J2EE / Rails (sort of).

    Issue: Abstracting object lifetime / persistence / what have you buys you what? (My answer? Way less than you might think.)

    You likely won't be able to get a feel for all three issues unless you do Ruby on Rails under Eclipse, which I haven't done - and so hesitate to recommend. But it might make sense. But if you pick something close to the three things raised above you're going to be exposed to things that will cause you to think about what drives developer productivity, which is what I take it you're interested in.

  70. Brilliant! by CarnivorousCoder · · Score: 1

    I'm a professional cat herder looking for a subtle way to start a religious war on /. about languages and OSs. Call it a hobby of mine. Any suggestions on techniques that might get this past the /. editors? Thanks.

    --
    What are you doing now, you lazy drunken obscene unsayable son of an unnameable gipsy obscenity?