A Dev Environment for the Returning Geek? 156
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?"
I am in a similar situation (Score:3, Insightful)
Re:I am in a similar situation (Score:3, Informative)
http://smalltalk.cincom.com/ [cincom.com] - VisualWorks is free for non-commercial use.
Re:I am in a similar situation (Score:2)
Re:I am in a similar situation (Score:3, Informative)
For starters try Anjuta [sourceforge.net] or KDevelop [kdevelop.org]. 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 bea
Get a Mac (Score:5, Insightful)
Re:Get a Mac (Score:4, Insightful)
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.
Plain and simple (Score:2, Interesting)
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 develo
Re:Plain and simple (Score:2, Insightful)
Re:Plain and simple (Score:2)
That's about as accurate and insightful as his comments on Objective-C.
Re:Plain and simple (Score:5, Informative)
That's not what I'm reading in the FAQ [microsoft.com], question 4.
Re:Plain and simple (Score:3, Interesting)
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 yo
Re:Plain and simple (Score:3, Insightful)
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.
Codewarrior is dead (Score:3, Insightful)
Dunno about their Linux IDE, but I wouldn't be surprised if that gets shut down too.
Re:Plain and simple (Score:5, Informative)
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.
Re:Plain and simple (Score:5, Interesting)
Re:Plain and simple (Score:3, Interesting)
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 m
Re:Plain and simple (Score:2)
Re:Plain and simple (Score:2)
What about Codeblocks [codeblocks.org]? It's still in beta, but IMHO it's much better than Dev-C++, and it's GPL.
Re:Plain and simple (Score:2, Interesting)
and yes, it's op
Re:Plain and simple (Score:2)
Er, there's nothing in the EULA that says you can't distribute/sell stuff you compile using it.
Re:Plain and simple (Score:2)
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?
Re:Plain and simple (Score:2)
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
you must be kidding (Score:3, Interesting)
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:
Why? (Score:3, 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
Re:Why? (Score:2, Insightful)
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!
Re:Why? (Score:2)
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.
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 o
Re:Why? (Score:2)
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.
Re:Why? (Score:2)
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
Re:Why? (Score:2)
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
Re:Why? (Score:2)
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.
Re:Why? (Score:3)
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
Re:Why? (Score:2)
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. Rem
Re:PARENT IS A TROLL (Re:Plain and simple) (Score:2)
If you reread my post above, you will clearly see that I called him a troll in disguise, i.e. a non-obvious troll.
Re:PARENT IS A TROLL (Re:Plain and simple) (Score:2)
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 i
Just great!! (Score:2, Funny)
Cross-platform UIs (Score:2)
Re:Cross-platform UIs (Score:2)
Re:Cross-platform UIs (Score:2)
Re:Cross-platform UIs (Score:2)
Re:Cross-platform UIs (Score:2)
I'd say... Java (Score:3, Insightful)
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...
Re:I'd say... Java (Score:2)
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 [jedit.org]: small, lightweight, very functional, with plug-ins available for most common tas
Re:I'd say... Java (Score:2)
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 m
Re:I'd say... Java (Score:2)
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.
Re:I'd say... Java (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 integra
Re:I'd say... Java (Score:2)
Re:I'd say... Java (Score:2)
Re:I'd say... Java (Score:2)
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...
Depends on what you want to do (Score:5, 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 [python.org] combined with some gui toolkit such as wxpython [wxpython.org] or pygtk [pygtk.org].
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 [sourceforge.net].
Aren't those contradictory? (Score:2)
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 a
Re:Depends on what you want to do (Score:4, Interesting)
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:
context-sensitive help (if I type "cmp(" then the status line shows the help text for the cmp function)
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.
Delphi (Score:3, Informative)
Have fun in your return to coding!
Re:Delphi (Score:2)
Anyone know where to get Delphi Personal (legitimately)?
Snag yourself a copy of Eclipse and Tomcat.... (Score:2, Informative)
http://eclipse.org/downloads/ [eclipse.org]
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 fram
Re:Snag yourself a copy of Eclipse and Tomcat.... (Score:2)
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.
Re:Snag yourself a copy of Eclipse and Tomcat.... (Score:2)
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 y
Python is a good place to start (Score:4, Insightful)
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.
PIC Microcontrollers (Score:2, Interesting)
www.microchip.com
www.piclist.com
gus
Re:PIC Microcontrollers (Score:2)
Re:PIC Microcontrollers (Score:2)
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 [kitsrus.com]
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 [websitetoolbox.com]
Re:PIC Microcontrollers (Score:2)
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
Free tools and resources Amazon, Google, Windows (Score:2)
http://msdn.microsoft.com/coding4fun/ [microsoft.com]
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 [amazon.com]
Google Desktop API [google.com]
Re:Free tools and resources Amazon, Google, Window (Score:2)
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.
Processing (Score:2)
Some ideas (Score:5, Interesting)
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/ [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.
Re:Some ideas (Score:2)
Re:Some ideas (Score:2, Informative)
> 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,
Re:Some ideas (Score:3, Informative)
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
Join an Open Source project (Score:2)
Maybe have a look at some open source projects (http://www.freshmeat.net/ [freshmeat.net] http://www.advogato.org/ [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 undocu
Take a look at the O'Reilly book (Score:2, Informative)
Practical Development Environments http://www.oreilly.com/catalog/practicalde [oreilly.com]. 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)
PyObj-C or GNUStep (Score:2)
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 devel
Have you considered web based? (Score:2)
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 [drupal.org].
If you are a bit more adventurous and do not care about hosting availability, consider Ruby on Rails.
A Coder? (Score:2)
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 S
Re:A Coder? (Score:2)
Re:um... (Score:2)
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 sugges
Tremendous progress in development tools (Score:5, Funny)
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.
Widget Engines? (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
Depends on what you're writing (Score:2, Interesting)
Eclipse RCP (Score:3, Interesting)
Java + Eclipse (Score:2)
As far as look and feel, Swing has come a long way as a GUI too
How about Adobe Flex? (Score:2)
Check out Macromedia Flex 2 (errr, I guess now it's "Adobe Flex 2"), currently available as a free alpha release [macromedia.com]
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
Too bad you need cross-platform. (Score:2)
Welcome! (Score:5, Funny)
I'd say Java 1.5 + NetBeans. (Score:2)
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 ne
same good ol' trends (Score:2)
a shell, a compiler and vim.
You want something for fun? (Score:2)
Console + vi + cc = like 20 years never happened (Score:5, Funny)
Fire up a console under Linux, use vi and cc, and you'll feel right at home as if 20 years had not passed.
Learn OOP (Score:2)
Eventually, you'll want to move to Eclipse [eclipse.org], but you can start off with BlueJ [bluej.org], which will help you learn the basics before you try anything more advanced.
LISP (Score:2)
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 stag
Re:LISP (Score:2)
Stick with what you know (Score:2)
Learn C/C++ (Score:2)
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...)
Lazarus (Score:3, Funny)
Try Lazarus, http://lazarus.freepascal.org/ [freepascal.org]
A good one-stop solution... (Score:2)
Re:Simple (Score:4, Insightful)
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...
Enough Cocoa praises (Score:2)
That is the
Re:Enough Cocoa praises (Score:2)
Well, it took me all of 30 seconds to find what you're looking for:
Loading a Help Book Page [apple.com]
Looks pretty simple and straight forward to me.
Re:Enough Cocoa praises (Score:2)
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.
Re:Indeed (Score:2)
Re:Indeed (Score:2)