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!

The Complete List of CSS Tools

There are so many great CSS Tools out there to use!  Please feel free to use this list as the most up to date list on the Internet.  Also if you love this list, make sure you sign up for the newsletter at the top right of the site!

Other Great Real World Lists

User Interface

Accesability Checkers

Formatters and Optimizers

Fonts

Forms

Layout

Galleries

Help Guides / Hacks / Learning Materials


  • Explains the structure of CSS- and HTML-documents. Enter semi-colon separated selectors or just paste in your existing rulesets into the “Direct Input” area, or provide the URL of a stylesheet or an HTML document with an embedded stylesheet in the “URL Input” area. English, Spanish, German and Bulgarian versions are available.
  • Tom Lee has a tutorial on Max-width in IE Using a CSS Expression. Word of caution: I hear using this method can be rather hairy, in some cases crashing the browser.
  • Future-proof your CSS with Conditional Comments from Bruce Lawson is a great comprehensive collection of CSS’s that, when combined, addresses most of CSS issues with different browsers.
  • IE Word Wrap Doppelganger Bug — Sitepoint on how heading elements could leave a small trail of itself as it wraps to the next line in IE6.
  • Images, Tables, and Mysterious Gaps seems like something I should’ve known already about the behavior of inline elements in strict mode. But of course it took me an hour of agony before finally realizing the ultimate truth: I’m not that smart.
  • Easy CSS hacks for IE7 — Some CSS hacks that will work with IE7. Hey, you never know.
  • Web Browser CSS Support with updated listings for IE7, Firefox 1.5, and Opera 8.5.
  • snook.ca on the “+” CSS hack which you can use to target IE6 and IE7 only.
  • On having layout reveals some information and workarounds for IE’s strange and proprietary ‘rendering-concept’: hasLayout — one of the major causes for headache when it comes to how IE decides to pain the boundaries of certain HTML elements:
    • “…A lot of Internet Explorer’s rendering inconsistencies can be fixed by giving an element “layout.” John Gallant and Holly Bergevin classified these inconsistencies as “dimensional bugs,” meaning that they can often be solved by applying a width or height. This leads to a question of why “layout” can change the rendering of and the relationships between elements. The question, albeit a good one, is hard to answer. In this article, the authors focus on some aspects of this complicated matter. For more thorough discussions and examples, please refer to the links provided.”
  • Negative text-indent and underline — No matter how far on the left the real text is, the underline will be stretched all the way to the right in some PC browsers, namely the Firefox.
  • IE6 Multi Class Bug — Again, something that could’ve brought to my attention last week!
    • “…Internet Explorer fails to render backgrounds for elements that have both an ID and a class defined. For instance, #photos.background1 will display the corresponding background in IE6 for Windows, but once that has been defined, #photos.background2, #photos.background3, etc. will not be displayed.”
  • Ten more CSS tricks you may not know — includes few IE bug fix techniques
  • The “Holly” Hack — taming IE/Win CSS display bug by assigning a dimensional value such as height:1%;
  • CSS tests — a great list of all the CSS gotcha’s under one roof.
  • max-width in IE using VERY little known IE-only CSS “Dynamic properties”
  • List of @import hacks to hide CSS from different browsers.
  • Essentials of CSS Hacking For Internet Explorer — an excellent list of quick hints on safeguarding your CSS against IE.
  • Web browser standards support — Charts comparing IE 6, Firefox 1.0, and Opera 8.
  • Full CSS property browser compatibility chart
  • The perils of using XHTML properly — Potential pitfalls of declaring application/xhtml+xml MIME type.
  • IE Double Float Margin Bug.

Tips and Tricks

Software Development Mistakes – Not Understanding User Requirements

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.

Software Development Top 30 Mistakes

Software Development Mistakes

I have been developing software and web applications for nearly 11 years now.  Software development has come a long way since the days of Binary, Cobol, etc.  What still fascinates me about software development is the same mistakes made before, are still made today.  Below are the top 30 Mistakes that are made within the software development process.  It’s amazing to see that none 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 the 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 you’re 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 you’re 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 you’re 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 you’re more valuable this way?  You’re actually not and there is a plan brewing to get you kicked off the development project, and possibly out of the company.  You might want to brush up your sign “Will code for pizza!”. 
  28. Performing database operations at the application layer instead of the database layer. Not only is this putting the processing juice on your application instead of your server, but you have put your database at risk of data integrity issues, and getting bad data!  Some of my hipster cool friends are always saying “It’s alllll good”, well, if your database can be caught saying this… and If everything looks good to your database, then you should be worried.  It is NOT all good!
  29. Not validating your data! Yikes…  Yes.. let’s 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! By the way, while you’re here, check out our competition to win a free iPod, we are trying to get a software development blog as the number 1 site on Technorati!  All you have to do is add this blog as a favorite, and we will pick a winner as soon as we are number 1! Wouldn’t it be cool if the number 1 Technorati Blog was a software development blog with real content instead of “Boing Boing”, or “How To Make Money Online”?  Help me out!

About Software Development in the Real World

Real World Blogs are about Passion! 

"Live every day with the passion you would live your last day, and with the freshness of your first day on earth!" – Miguel Angel Carrasco

Welcome to Software Development in the Real World – the blog that helps real world software developers by providing valuable, real-world insight into the latest in software development.

My name is Miguel Carrasco, software developer, architect, team leader, and software development evangelist. 

The Innocent Days

I’ve always loved software, and at a very young age became enthralled as to how this "software" was created.  I would go to the library with my mom, and disappear for hours reading BASIC books, Pascal, and Fortran.  Being only 8 years old at the time my mom must have wondered what I was doing with a stack of books taller than me, and more awkwardly enough, the fact that the books did not have any pictures, but instead taught programming languages.

The funniest part of that episode was that we didn’t have a computer.  Nor could we afford one at the time.  I would read the books cover to cover, and write my own programs on notebooks.  I started with algorithms, and later moved to programs, mostly text based games at the time. Who knew if they would work anyway.  Then my Uncle finally purchased a commodore 64.  Finally I could test my programs!  I would stay busy all week long writing my programs, and then, on Saturdays beg my parents to let me go to my uncles.  They assumed it was to play with my cousins, watch television, and eat junk food, however the reality was I wanted to try and type up my program and test it.

This actually taught me to program very well as I didn’t have much time on Saturdays, and had to have my "notebook" code (Hilroy recycled paper coiled notebook).  I learned quickly how to configure modems, tape drives (literally the tapes you had to press record on), and televisions. 

Microsoft Gold Partner in E-Commerce

In 2000, years passed and I saw myself working at ImagiNET Resources Corporation with Joel Semeniuk.  Joel was a great mentor and I had the opportunity to work on some really cool projects over my four year span with them.  As a Microsoft Certified Trainer, I had the opportunity to hold the roles of Instructor, Consultant, Web Developer, Software Developer, Trainer, Team Leader, and Designer.

Why Blog?

Why am I telling you all this?  The title of the blog of course.  Real World.  There are plenty of blogs out there and resources on software development, that is nothing new.  This blog is focused on real world examples, real world perceptions, and real world experiences.

This blog is dedicated to helping software developers learn the skills, share their own experiences, and promote the art of software development.

This blog is free even though it actually costs me money and time to run.  Why not cluttered with ads?  The main reason is I love to help other people, and this gives me a larger venue to share my knowledge and experience.  If you’d like to support what I do and if you’ve found this blog helpful I just ask that you consider adding Software Development in the Real World to your blog side bar or blogroll and let others know about the site.  Help spread the word so we can all learn together!

The “Real World” blog’s have been featured in:

Miguel Carrasco has also been on Future Tense National Radio Broadcast airing in over 100 National Radio Stations.

Please feel free to email: miguelcarrasco@gmail.com

Education Trail

I hope you enjoy Software Development in the Real World!