Add to Technorati Favorites

October 24, 2006

Social Bookmarking Review - dzone

  As a software engineer and software architect myself, I find myself constantly trying to find new information on the Internet on best practices, patterns, tools, etc.  I recently started using other social bookmarking tools, but became irritated at the growing number of stories that I felt made no sense, being ranked extremely high.  Certain features such as previewing the page, showing number of clicks vs. the number of votes, displaying "complaints" live for a vote seemed missing (some sites have this, but have a proprietary system that is undisclosed to serve as the banning mechanism for entire domains, which is scary if we are trusting these companies to make news "free" and selected "by the people).

dzone is a great example of social bookmarking done right!  A really nice feature I love is the ability to see a Ajax preview window pop up on each story that is being voted on.  Also, with each story you have the ability to "tag" stories with keywords, similar to tags on blog's.  This gives users the ability to view upcoming links based on tags!  As an example, someone submitting a story can tag the story with certain keywords, and a voter can then add their own tags to the story.  This gives stories that might not have been tagged properly, or missing certain tags, to be "re-classified" under another section.

Another great feature is the "You might also like" feature.  This lists stories that the user might like, if they liked the current story they are looking at.  Also a "Real Time Spy" allows you to view what users are doing in real time.  This can be anything from stories that are currently being voted on, to what users are clicking, or even commenting on.  The filters are very nice!

I also love that the dzone is tailored to developers.  All of the links are very pertinent to software developers, and the community here has really formed around them.

If you are a software developer, you will absolutely love this site, as it has more functionality than any other social bookmarking site out there.  I hope to see a new version of the site tailored around technology, and then maybe expanding into other areas.  The overall architecture of this site just seems so much more flexible and responsive, vs other sites.

PopUrls.com has recently noticed dzone as well and added them to their list of social bookmarking web sites to display.

Check out the dzone!

October 21, 2006

10 Biggest Computer Flops of all time

Over the years, computers have changed the way we live!  In order to get us to where we are today, many software development and hardware companies have pushed the envelope to create what we use today.  Software development companies have evolved, Hardware has improved. Although we currently live in an age of amazing hardware and software achievements, these products did not come without a price.  Below is a list of some of the worst flops in computer history.

  1. The Xerox Alto
    Xerox AltoDeveloped in 1972 at Xerox's Palo Alto Research center, the Alto had a bitmap display, windows, drop-down menu bars, a mouse, built-in Ethernet and hard disk, keyboard, word processor and more in their software productivity suite, a paint application, and even e-mail.  Xerox was far too busy fighting the copier patent war, and was not interested.  Steve Jobs was, and in 1984, Apple introduced Apple Lisa, and the Apple Macintosh.  Although this was the most ingenious creation of the time, quite possibly responsible for the way we use computers today, it should be viewed also as a huge flop when Xerox did not capitalize on its innovation.
  2. NeXT computer
    NeXT ComputerThis seemed like a great idea at the time.  Steve Jobs resigned from Apple back in 1985 to start a new company called NeXT.  The NeXT computer would be the most affordable UNIX super computer of its time.  Running a Motorola 33-MHz 68030 processor, enclosed in a black case, there was no doubt this was the hottest and most powerful computer of its time.  However at $6,000 apiece, and with no software that would run on the machine, it was really a $6,000 brick.  Roughly 50,000 were ever produced.  The company had spent over $250 million producing them.  Although a huge disaster, this was also the computer that Tim Berners-Lee would later use to create the World Wide Web, and Steve Jobs would use as the core principles behind the new OS X.
  3. IBM PCjr
    IBM PCjrIBM was trying to build an affordable machine for the classroom and the masses.  Unfortunately, they ended up building an inferior non IBM-PC compatible machine with a ridiculously small keyboard that wouldn't run any software.  The costs was a few dollars less than some IBM-PC compatible clones, so it was pointless to buy one.  Another nice feature, the keyboard communicated with the computer via infrared beams.  This provided hours of enjoyment in the classroom screwing up other peoples computing.
  4. Apple Newton
    Apple NewtonAlthough produced for six years, it was never as successful as Apple had hoped.  The main reasons:  High price, Large size.  It's handwriting recognition was notoriously bad, a problem that was featured in the Doonesbury comic strip.  However, although the Newton product itself never made mass appeal, the technologies that were developed for the Newton are still used today and responsible for many huge success' for Apple (iPod, OS X) and started the PDA line of computer products.
  5. Apple 3
    Apple 3Released in 1980, the Apple 3 became one of the worst computers ever built and most expensive.  It was designed for the high end business market, but at a cost of $7,800, even businesses had trouble justifying the cost.  To make matters worse, the computer was made far too cramped with parts to make it smaller.  When it became too hot inside the computer (Engineers opted to not use a fan), chips would start popping out of the boards!  In order to correct the issue, Apple tech support could be heard saying "please lift up your Apple 3 about 10 centimeters off the desk, and drop it."  this would put the chips back in the slots sometimes.
  6. Apple Lisa
    Apple LisaHow much to get into an amazing Apple Lisa?  $10,000 dollars.  Announced in 1983, this was a complete disaster for Apple.  Hardly any were ever sold.  How many were produced?  100,000.  The machine itself was far from powerful, and Apple users simply preferred the Macintosh.  The development costs aren't to be found.

  7. Microsoft Windows ME
    Microsoft Windows MEMicrosoft Windows Millennium Edition was touted as the first operating system to support Universal Plug and Play.  Unfortunately, this operating systems was quite possibly less compatible with hardware, than its predecessor, Windows 98.  It was also notoriously difficult to re-install, which was terrible since this operating system needed to be re-installed almost weekly.  This was one of the worst software development projects of all time for Microsoft. Hardcore users claimed that Windows ME was more stable than 98, or 98SE, and the instabilities came from users installing bad drivers that were not approved and certified.  Nevertheless, most users of Windows were beginners, and thus the perception that Windows ME actually stood for "Microsoft Experiment", "Moron Edition", "Mistake Edition", and "Memory Eater".
  8. Microsoft Bob
    Microsoft BobAnother Software development disaster. This one is great.  In 1995 Microsoft released a software package and interface that was aimed at replacing the Windows desktop with one aimed at novice computer users.  The interface featured a big yellow smiley face with glasses and virtual rooms.  Complete disaster!  Far too simple, not powerful enough, overpriced, and all and all, ridiculous.  This software development project was run by Bill's wife by the way!It was replaced that same year by Windows 95.
  9. IBM OS/2
    IBM OS/2In the 1990's after feeling "Had" by Microsoft, IBM decided they could trounce Microsoft and come up with their own operating system.  A great idea gone bad by marketing,  the idea became to market OS/2 and the PowerPC Chip together.  Had IBM pushed OS/2, and later OS/2 Warp as an operating system alternative to Windows, the computing landscape might have been different today.  Instead, by the latter half of the 1990's, Windows 95 and 98 had obliterated OS/2.
  10. Gary Kildall's CP/M
    CP/M Grab a cup of coffee for the biggest mistake, and largest computing stroke of luck that created Microsoft, and one of the wealthiest fortunes the planet has ever seen.  This one created the software industry as we know it! In 1980, IBM finally realized they needed to put a home computer out on the market extremely fast.  However they could not find the time to wait around to build their own operating system.  They wanted to buy one, and the best one at the time, Gary Kildall's CP/M operating system.  Where was Gary Kildall on this fateful day that the IBM suits came knocking?  Out of office flying a private plane.  IBM went back to the office's and looked up Microsoft, which they thought had a broad license to sell CP/M.  Microsoft came in and negotiated a per licenses model to sell the operating system at 50 dollars per machine.  Bill Gates had created the Software Licensing Industry! 

    Microsoft did not have such an operating system themselves, nor did they have a license to sell CP/M.  In fact, Gary Kildall's Digital Research didn't have CP/M ready to run on the 16-bit computers IBM would manufacture.  Tim Patterson did at the Seattle Computer Company, which Microsoft bought for $50,000.  Had Gary Kildall been at the office, Microsoft and Bill Gates might have been eating macaroni and cheese, and the Digital Research operating system would be running on all of our computers. Gary Kildall died in July 1994 at the age of 52.  The computer media mainly ignored his passing.

What do all of these stories have in common?  Yes they were all mistakes (at the time), but almost all of them paved the way for some of the largest success's in computing history.  Sometimes for the same company, sometimes for other companies.  The lesson here is persistence, determination, and perseverance.

If you would like to read other software development disasters, specifically Microsoft software mistakes, make sure you read Ten Biggest Microsoft Flops of All Time!

October 06, 2006

Google Code Search Tips

Google Code Search has finally launched! indexing billions of lines of code from around the Internet, Google intends to make source code that is available on the internet, easily accessible and searchable.  The ways that this will help advance programming and algorithms will be phenomenal!  Below I present some great Google Code Search Tips for you to try!

Searching Regular Expressions

Let's say you need a regular expression to validate  e-mail address's, well no problem, search:

regexp e-mail

Retrieving Passwords

Well this is slightly in the black area, but of course, being curious and all, here is a way to get passwords from files.  I should note this is good as it will teach people to be much more secure with their passwords.

lang:php file:wp-config user -sample

Interested in some asp.net passwords? This will give you some passwords found in web.config file.

connectionstring file:web.config

and now for some root passwords in php

file:config.inc.php "MySQL password" "root"

Learn how to create crackers

Interested in figuring out how crackers create code to circumvent your serial code protection?

keygen name serial

I will add more tips as I see them!  Hopefully Google Code Search will make us all better programmers!

October 04, 2006

Software Development Mistakes - Not Understanding User Requirements - Part 1 of 2

Software development can be a tricky thing.  In my previous article I explained what I believe to be the top 30 mistakes that are made by software development teams on a daily basis.  In the next series of articles I will go into detail on each of the points, the first being "Not Understanding User Requirements".  Outlined in this article is:

  • Realize you need details
  • Focus my son
  • Format and Authoring the documents
  • Accuracy

Lets start this really basic.  Why are you doing software development?  we'll, in most cases there is a problem you want to solve.  In the business world, someone has come to you and said "Listen,  I really need a system that can do xyz, can you build me something?".  Now this should be the first flag for you.  The user here is assuming that he as some unique requirement, or unique problem that nobody has run into before and requires some custom software development.  Instead, take a minute and review other software packages, changes are there is something out there that can help take you some way there, and maybe you can develop something using their sdk, or in some cases, modifying their source code.  Ok, but for the purposes of this article lets just assume it is a unique problem.

Well, if it is a unique problem, then there are probably some very specific requirements here!  You see your main goal in anything here has to be make the client/business member happy!  How can you make them happy if you don't know EXACTLY what they want.  Wrap some scope around this puppy. 

Realize you need details!

I love examples so lets pretend we are developing a brand new cash register software application for the customer.  Lets take a bad example of how this might go:

John User:  "Miguel, I would really like a nice cash register application, can you make me one!"

Miguel Developer:  "Sure no problem... when do you need it by?"

John User:  "ohhh.. in three weeks?:

Miguel Developer:  "Oh.. heck that's not a problem at all!  I'll bring it over in three weeks!"

Ok this is terrible....  Here's how that should have gone:

John User:  "Miguel, I would really like a nice cash register application, can you make me one!"

Miguel Developer: "That sounds like a great idea!  Would really simplify your business! Do you know what functionality you want in it in terms of function keys, reports, things to track, receipt generation, etc...?"

John User: "Not really..."

Miguel Developer: "Do you currently use a cash register?  Would you like it to do everything it currently does.. with some added functionality possibly"

John User: "Yup"

Miguel Developer: "Great!  Is there a time that we can arrange where you can walk me through the system you currently use?  After this, we can go through some "enhancements" you would like"

I think you get the idea.  But this is only a small percentage of it!

Focus my son..

Although most requirements gathering advice will start at this point, I thought I would take it back a notch where most software development projects fail, Realize You Need them!  Next you need to focus your thoughts!  It's not good enough to say "We are creating a computerized cash register."  We have to focus and clarify the thoughts!  Don't just assume the user wants small normal buttons.. clarify it... clarify the font!  The positioning of items, etc.  Most of you will say.. bllaaa who cares... lets clarify the performance... true... that is a good statement, but don't forget the little things... because the little small details, will be what kills your timelines.  After all the success of a project should be based on delivering a project ON TIME, meeting all the requirements!  not just meeting all the requirements.

Ask questions like how many users will be using the application, from where, how will they access the application? Software development will go much smoother for you if you simply realize you need to ask the right questions, and focus your questions on getting clear, focused, accurate objectives and details.

September 29, 2006

Software Development Top 30 Mistakes

I have been developing software and web applications for nearly 11 years now.  Software development has come along way since the days of Binary, Cobol, etc.  What still fascinates me however about software development however is the same mistakes made before, are still made today.  Below is the top 30 mistakes that are made within the software development process.  It's amazing to see that non of these have anything to do with the language itself.

  1. Not understanding the user's needs. Lack of user input, or not even asking.
  2. Underestimating the size of the project.
  3. Rushing through he planning stage, or avoiding the planning all together.  Code first, plan later! BAD
  4. Not testing early enough, often, or at all!  Make it a habit!
  5. Choosing the "Cool" methodology at the time, vs one that has worked in the past. Which leads into my next point
  6. Not using a methodology.
  7. Letting a software developer run the software development project.
  8. Bored, unmotivated team!  You have to motivate your developers!  If you can't motivate, don't bother trying to lead.  Your team will fall asleep, literally.
  9. Planning on catching up later.  You won't... don't even think it!
  10. Non Source Control!  Ouch.. not good people... and no, just installing a software package is not it...
  11. Deciding to switch your development tools when your already into the project.
  12. Allowing feature creep.  Just say NO!  Everyone will be happier in the end.
  13. Omitting necessary tasks to shorten the project plan.  Really, what's the point of doing this?
  14. Insufficient management controls in the development project.
  15. Lack of high level business sponsorship.
  16. Adding people at the end of the project to "speed things up".  You will only slow things down...
  17. No unit testing.  Heck if you can do it, use Visual Studio Team Foundation Server and set up some automated testing nightly.
  18. Stressed out software developers.  If you have managed to perform even one or two of these software development mistakes, you will have a stressed out bunch of programmers to deal with!
  19. Lack of error handling.
  20. "Off by one" errors.  These happen a lot during the software development process.. *sigh*
  21. Typos...  Just use option strict and explicit please..  during one software development project, which I was on as a consultant, they were getting ridiculous amounts of errors everywhere... turned out the developer couldn't spell and would declare variables with incorrect spelling.. no big deal, until you use the correct spelling when your assigning a value to it...  and  you had option explicit off.  Ouch to them...
  22. No understand the deployment or hardware the software is to be installed on.  Ohhhh it's for a macintosh... lol.  Well hopefully not that bad, but you get the point.
  23. No naming style or code conventions.  Honestly it doesn't matter what you use... as long as you are consistent with the rest of the team, and hopefully at least yourself.
  24. Using global variables everywhere.  These are NOT your friend and hog memory like nothing you have ever seen before!
  25. Not asking for help at all during the software development process.  If your stuck, don't fight with it for hours on end!  Ask for help!
  26. Not commenting your code.
  27. Hogging all information to yourself.  You think your more valuable this way?  Your actually not and there is a plan brewing to get you kicked off the development project.
  28. Performing database operations at the application layer instead of the database layer.
  29. Not validating your data! Yikes...  Yes.. lets just assume all the data is perfect! NOT!
  30. No load testing.  What.. This is supposed to run on 1,000 user's machines through Citrix?  Interesting... Shouldn't be an issue! lol... NOT.

Software Development is tricky enough!  Make it easier on yourself by ensuring you do not make any of these mistakes.  Although it seems like a simple list of things not to do, it can make your life so much easier!

September 16, 2006

Web Developer Tips

I remember when I was creating web pages, and doing some software development back in 1993.  It was pretty awesome back then! It got better and better as time went on but it was always so difficult to do things that seemed like they should be very simple!  Notepad was great for learning html, JavaScript, etc.  Provided a really good foundation!  Then came Hot Dog! from Sausage Software.  A neat tool that allowed you edit html much easier than ever before!  It also had saved code snippets you could to create special effects, which for the most part would later become extremely annoying! Then of course came the Microsoft products, the Macromedia products, and the Adobe products, all taking the game to the next level.  One thing however I have always had trouble with was debugging web pages.  And I don't mean the typical .net debugging, that all works great now.  I'm talking about debugging styles, graphical interfaces, placement of objects, etc.  Here are some "Swiss Army Knife" tools that I have started using that I absolutely love!

Internet Explorer Developer Toolbar

Back in March of 2006 Microsoft released an awesome tool that I can't live without as a web developer, IE Dev Toolbar.  Why it took them this long to release this tool is beyond me.  It finally exposes the inner core of Internet Explorer to web developers and allows you to do a slew of neat things!  Installing the tool is very easy and appears as a toolbar, which you can load and has various features:

  • Explore and modify the document object model (DOM) of a Web page.
  • Locate and select specific elements on a Web page through a variety of techniques.
  • Selectively disable Internet Explorer settings.
    View HTML object class names, ID's, and details such as link paths, tab index values, and access keys.
  • Outline tables, table cells, images, or selected tags.
  • Validate HTML, CSS, WAI, and RSS Web feed links.
  • Display image dimensions, file sizes, path information, and alternate (ALT) text.
  • Immediately resize the browser window to a new resolution.
  • Selectively clear the browser cache and saved cookies. Choose from all objects or those associated with a given domain.
  • Choose direct links to W3C specification references, the Internet Explorer team weblog (blog), and other resources.
  • Display a fully featured design ruler to help accurately align and measure objects on your pages.

Price HVAC
Figure 1 - Internet Explorer Developer Toolbar 

Google Webmaster Central

Google commands so much respect, as the new Wal-Mart of the Internet.  If you are to make any type of money or impact on the internet, a great listing on Google is key.  Google Webmaster Central will give you the inside track on how Google crawls and indexes your site.  From the ability to create site maps that you can upload to the Google servers for crawling, to following up on how the google spiders see your web site, this site will give you an edge against other competing sites!

Google Webmaster Central
Figure 2 - Google Webmaster Central

May 18, 2006

Google vs. Microsoft

As I had mentioned before, the war is on, and Bill Gates has basically said Google will be no more in the future.  Again, I beleive they will be no more as is current Google, but it will change.  Here's a good article:

http://www.crn.com/showArticle.jhtml?articleID=187900314

Great Sites



Recent Posts

Feeds

  • Add to Technorati Favorites

    Add Miguel Carrasco's Feedburner

    Add Miguel Carrasco to Google

    Subscribe to MyMSN

    Subscribe to MyYahoo!

    Subscribe to Bloglines

    Subscribe to Newsgator

    Subscribe to Feedster

    Subscribe to NewsIsFree