TFA is dead on.
My advice is to work daily on your curiosity and creativity skills.
Don't tell yourself you are better or the best. It isn't about that.
Learn to be a good user and administrator of software, so you can walk in others' shoes (apt-get is your friend for this).
test test test.
When your emotions get the best of you this may help (it helps me): http://en.wikipedia.org/wiki/Noble_Eightfold_Path.
I think I've been around the block with the options:
J2EE/EJB - Not on your life. I'd rather change careers.
J2EE/Spring - Better, still too complex for simple projects. A good idea, but I found myself spending my days editing XML instead of coding - that's no fun.:)
ASP.NET - A good framework, perhaps trying too hard to make web development like traditional GUI development. My problem here is depending on Windows and Microsoft. I know I can get the API at no cost without VS.NET, but no thanks. They got my $3000 once for VS.NET. Never again.
Rails - Great framework, fun to work with. If you aren't well versed in OO design and Ruby's unique dynamic features this may really confuse you. Rails might just be too clever some people. Also see the Perl and Python projects that are similar. I've enjoyed using Catalyst but found it frustrating to deploy (I believe they have a solution to this now with the PAR support).
PHP - I've built business applications from the ground up using PHP and will not do it again. Testing and Debugging PHP is a nightmare compared to the tools available in mod_perl, Rails or J2EE. There probably are tools that make that easier. If so, the PHP manual should make that the first chapter.
However, my current solution that gives me the most productivity is to install Drupal and add functionality using Drupal PHP modules. That way I delegate the design, security and most of the maintenance to the Drupal team. I only worry about coding the correct "hooks" for my application. Drupal provides an API that takes care of most common tasks. For example, last weekend I took a project I wrote in ASP.NET to query stock transactions (result paging, complex search controls) and reimplemented the functionality as a drupal module in 1 day. The original project took me 2 weeks in ASP.NET.
I just look at the code for the built in modules as my guide. Once I understood the hook API and looked at some examples I've found I can put together complete applications in hours, not days or months.
If there were a Drupal equivalent for Ruby or Perl that was as mature, I'd jump at it.
I am stuck here in Windows hell, are there any GPL and possibly UNIX-friendly versions of this type os software?
I've been using basecamp http://www.basecamphq.com/ as a lightweight solution, and I really like it so far. I'm not sure about scaling it up to a large corporate level, but it has been great so far for my small team. The downside is all of your data is on their servers.
It uses a Software as a service model, pay as you go. So not GPL, but it does expose a HTTP/XML API that could easily be hacked with perl, python, etc.
The company http://www.37signals.com/ also offers a few other solutions. You may have heard of them through all of the RoR hype lately.
If you think you even might be involved in a new j2ee proj., a good book that explains much of this complexity (or maybe buzz) is Rod Johnson's (of Spring notoriety) J2EE without EJB. I think their movement suffers to some degree from over abstraction, but it does beat EJB and is my choice for j2ee development.
I'd rather use RoR or any other dynamic language for web dev in general. However, there are still many business requirements that can come up (OLAP for one - Mondrian) that keep me coming back to j2ee for now.
The Spring framework reduces IoC and AOP to configuration details (XML - blech) so you don't have to worry to much about the implementation. Very powerful I'm sure in the hands of a seasoned Spring user.
I'm not sure if I'm on the same page, but could you create bindings using ruby or python and modify your class attributes using an interactive shell like irb?
Many taper friendly bands choose to not allow their shows to be posted to the live music archive.
See the list of those that have opted out here (after the accepted and pending list): http://www.archive.org/audio/etree-band-showall.ph p
Phish is a good example. They do allow fans to trade their recordings on bt.etree.org as well as other places. You can buy soundboards from their website. I don't think that makes them greedy or in the same class as metallica and others.
That said...the dead archive on etree is just amazing and I hope it stays. I encourage anyone that hasn't ever got the dead to download some of the higher rated shows and give them a chance. Great music to code to.
Fair enough. Actually, the chain of events went Physics degree -> playing bass in a band and sleeping on strange people's floors -> working at http://www.acxiom.com/ -> then moving on. So, I guess I needed some stability at the time. I considered continuing on with physics, but I really don't think I was cut out for it. I'm guessing most people don't stumble into a degree in physics, but I did somehow. At Acxiom I managed the marketing database for Schering-Plough for roughly 2 years and then moved into application programming, and then quit. I actually really enjoyed the work while at acxiom. The large corp thing was pretty depressing. But, heh, you can always quit...and I did.
About 8 years ago I was in a similar spot. Fresh out of college with a physics degree, I was lucky enough to be hired into a good situation using Oracle everyday to manage a large pharm. corp's marketing DB. I had little programming experience, and no unix or DB experience, and had to get up to speed quickly. I haven't touched Oracle in several years, but my advice is to not only read as much of the Oracle manuals as you can stomach, but also pick a language like perl or python to cozy up to. A lot of the tasks you'll need to do are best handled with gnu unix utilities and scripting. Ask other people to review your schema designs. Avoid application programming at the DB level (PL/SQL). Take advantage of subqueries and hints and find a good system to analyze the query cost and tune your SQL (some used toad, i didn't). Looking at my bookshelf it looks like I wore out "Oracle Performance Tuning and Optimization" by Edward Whalen, and "Oracle8 HOW-TO" by Honour, Dalberth, Kaplan. These are probably really outdated by now, but look for something like a cookbook approach to suppliment the official manual. Hope that helps some.
Cheers.
A little late to post, but consider the Squeak SmallTalk as a great teaching environment. I'd also second any notion to consider Python and/or Ruby.
Ot better yet, teach them all. Good Luck.
After a handfull of.Net projects... ASP.NET may be great for the smallest of projects or usable for large corporate enterprise apps, but there really isn't much middle ground to scale your designs. So I think you'll end up with a lot of poorly designed apps on this platform IMHO, because you have to be an expert OO wiz or wrestle with the VS designer (a total dead-ender). This isn't helped by the horrible docs (LosFormatter anyone). The docs give only the most trivial examples and they obviously weren't written by anyone who ever had to actually use the platform. Also, where do dynamically typed languages fit in the picture. Sure I can use C#, C++, VB.NET, but where's my perl, python and ruby dot net (and I don't mean editor support)?
This seems like such a amatuer web developer move that I'm led to think maybe they left it easy to bypass on purpose. Come on, if Microsoft eliminated all piracy of windows, people might actually try something else.
These two examples point out another flaw. Within firefox, I can use the back button to return to slashdot from the google map. The MSN version is doing something that keeps my back button from working correctly. I have to use my browser history to return to slashdot.
"Sun's fear is that by opening the specification, someone's going to say "You know, I've always felt the language should have pointers", and the language will fall into Creeping Featurism the way C++ did."
I don't think that would be the case at all. When I think Java, I think of the complexity peddling market. It's always been in Sun's best interest to grow complexity. If Java was straightforward, there wouldn't need to be any support or consulting from the likes of IBM and Sun. I think that is why we're seeing more and more C++ like features.
FOSS supporters tend to keep things as simple as possible. Corporations tend to make them as complex as possible.
Freecycle is a great service. I recommend it to anyone. There isn't anything funnier than watching a free hot-tub post come along and the ensuing madness.
I agree that there is a gradual process. However,
myself, I didn't make the leap to "recognize the virtues of open source" until I began actually reading the GPL and learning about the work of the FSF and RMS. That gradual process may be quite different for each developer. I personally am quite inspired by FSF and RMS, and using Free Software connects me to a history and community I'm proud to be apart.
I constantly have to remind myself as well
1. Find the simplest solution that could possibly work.
2. Design for testing. If you can't easily test and debug the system, then your design is bad.
3. Avoid distribution and threading if possible (see #2)
That being said...there aren't simple solutions to all problems.
Try to find a base to build from with source-code and a license that you can live with.
I agree. I spend more and more time writing long emails to my "business" friends, explaining Free Software, Open-Source, BSD, Sun, RMS, Hackers, hackers, blah blah. Not only is there a lot of misinformation and FUD floating around, there is just a lot of ignorance and an attitude only concerned with profit, speed to market, and results.
It will be really interesting to see the generation that grew up warez and freeware begin to start running major corporations.
True! Emacs Lisp of all things. Try it...
M-x nuclear-mode
TFA is dead on. My advice is to work daily on your curiosity and creativity skills. Don't tell yourself you are better or the best. It isn't about that. Learn to be a good user and administrator of software, so you can walk in others' shoes (apt-get is your friend for this). test test test. When your emotions get the best of you this may help (it helps me): http://en.wikipedia.org/wiki/Noble_Eightfold_Path.
I think I've been around the block with the options:
However, my current solution that gives me the most productivity is to install Drupal and add functionality using Drupal PHP modules. That way I delegate the design, security and most of the maintenance to the Drupal team. I only worry about coding the correct "hooks" for my application. Drupal provides an API that takes care of most common tasks. For example, last weekend I took a project I wrote in ASP.NET to query stock transactions (result paging, complex search controls) and reimplemented the functionality as a drupal module in 1 day. The original project took me 2 weeks in ASP.NET.
I just look at the code for the built in modules as my guide. Once I understood the hook API and looked at some examples I've found I can put together complete applications in hours, not days or months.
If there were a Drupal equivalent for Ruby or Perl that was as mature, I'd jump at it.
I've been using basecamp http://www.basecamphq.com/ as a lightweight solution, and I really like it so far. I'm not sure about scaling it up to a large corporate level, but it has been great so far for my small team. The downside is all of your data is on their servers.
It uses a Software as a service model, pay as you go. So not GPL, but it does expose a HTTP/XML API that could easily be hacked with perl, python, etc.
The company http://www.37signals.com/ also offers a few other solutions. You may have heard of them through all of the RoR hype lately.
I'd rather use RoR or any other dynamic language for web dev in general. However, there are still many business requirements that can come up (OLAP for one - Mondrian) that keep me coming back to j2ee for now.
The Spring framework reduces IoC and AOP to configuration details (XML - blech) so you don't have to worry to much about the implementation. Very powerful I'm sure in the hands of a seasoned Spring user.
I'm not sure if I'm on the same page, but could you create bindings using ruby or python and modify your class attributes using an interactive shell like irb?
Many taper friendly bands choose to not allow their shows to be posted to the live music archive.h p
See the list of those that have opted out here (after the accepted and pending list):
http://www.archive.org/audio/etree-band-showall.p
Phish is a good example. They do allow fans to trade their recordings on bt.etree.org as well as other places. You can buy soundboards from their website. I don't think that makes them greedy or in the same class as metallica and others.
That said...the dead archive on etree is just amazing and I hope it stays. I encourage anyone that hasn't ever got the dead to download some of the higher rated shows and give them a chance. Great music to code to.
Arkansas set to pull the plug on ERP-driven budgeting approach State moves to scrap 'performance-based' methodology; lawsuit continues against SAP over initial software rollout http://www.computerworld.com/softwaretopics/erp/st ory/0,10801,99578,00.html/
Also, note that all of this happened in Arkansas. Not much of a dotcom boom there believe it or not. cheers. http://www.helpmehelpnola.com/
Fair enough. Actually, the chain of events went Physics degree -> playing bass in a band and sleeping on strange people's floors -> working at http://www.acxiom.com/ -> then moving on. So, I guess I needed some stability at the time. I considered continuing on with physics, but I really don't think I was cut out for it. I'm guessing most people don't stumble into a degree in physics, but I did somehow. At Acxiom I managed the marketing database for Schering-Plough for roughly 2 years and then moved into application programming, and then quit. I actually really enjoyed the work while at acxiom. The large corp thing was pretty depressing. But, heh, you can always quit...and I did.
About 8 years ago I was in a similar spot. Fresh out of college with a physics degree, I was lucky enough to be hired into a good situation using Oracle everyday to manage a large pharm. corp's marketing DB. I had little programming experience, and no unix or DB experience, and had to get up to speed quickly. I haven't touched Oracle in several years, but my advice is to not only read as much of the Oracle manuals as you can stomach, but also pick a language like perl or python to cozy up to. A lot of the tasks you'll need to do are best handled with gnu unix utilities and scripting. Ask other people to review your schema designs. Avoid application programming at the DB level (PL/SQL). Take advantage of subqueries and hints and find a good system to analyze the query cost and tune your SQL (some used toad, i didn't). Looking at my bookshelf it looks like I wore out "Oracle Performance Tuning and Optimization" by Edward Whalen, and "Oracle8 HOW-TO" by Honour, Dalberth, Kaplan. These are probably really outdated by now, but look for something like a cookbook approach to suppliment the official manual. Hope that helps some. Cheers.
A little late to post, but consider the Squeak SmallTalk as a great teaching environment. I'd also second any notion to consider Python and/or Ruby. Ot better yet, teach them all. Good Luck.
After a handfull of .Net projects...
ASP.NET may be great for the smallest of projects or usable for large corporate enterprise apps, but there really isn't much middle ground to scale your designs. So I think you'll end up with a lot of poorly designed apps on this platform IMHO, because you have to be an expert OO wiz or wrestle with the VS designer (a total dead-ender). This isn't helped by the horrible docs (LosFormatter anyone). The docs give only the most trivial examples and they obviously weren't written by anyone who ever had to actually use the platform. Also, where do dynamically typed languages fit in the picture. Sure I can use C#, C++, VB.NET, but where's my perl, python and ruby dot net (and I don't mean editor support)?
This seems like such a amatuer web developer move that I'm led to think maybe they left it easy to bypass on purpose. Come on, if Microsoft eliminated all piracy of windows, people might actually try something else.
These two examples point out another flaw. Within firefox, I can use the back button to return to slashdot from the google map. The MSN version is doing something that keeps my back button from working correctly. I have to use my browser history to return to slashdot.
"Sun's fear is that by opening the specification, someone's going to say "You know, I've always felt the language should have pointers", and the language will fall into Creeping Featurism the way C++ did."
I don't think that would be the case at all. When I think Java, I think of the complexity peddling market. It's always been in Sun's best interest to grow complexity. If Java was straightforward, there wouldn't need to be any support or consulting from the likes of IBM and Sun. I think that is why we're seeing more and more C++ like features. FOSS supporters tend to keep things as simple as possible. Corporations tend to make them as complex as possible.
Freecycle is a great service. I recommend it to anyone. There isn't anything funnier than watching a free hot-tub post come along and the ensuing madness.
You can build it, design it, and it will work great. The trouble begins when you have to upgrade to .NET and scrap all of your VB6 code.
I agree that there is a gradual process. However, myself, I didn't make the leap to "recognize the virtues of open source" until I began actually reading the GPL and learning about the work of the FSF and RMS. That gradual process may be quite different for each developer. I personally am quite inspired by FSF and RMS, and using Free Software connects me to a history and community I'm proud to be apart.
I constantly have to remind myself as well 1. Find the simplest solution that could possibly work. 2. Design for testing. If you can't easily test and debug the system, then your design is bad. 3. Avoid distribution and threading if possible (see #2) That being said...there aren't simple solutions to all problems. Try to find a base to build from with source-code and a license that you can live with.
I agree. I spend more and more time writing long emails to my "business" friends, explaining Free Software, Open-Source, BSD, Sun, RMS, Hackers, hackers, blah blah. Not only is there a lot of misinformation and FUD floating around, there is just a lot of ignorance and an attitude only concerned with profit, speed to market, and results. It will be really interesting to see the generation that grew up warez and freeware begin to start running major corporations.