Add to Technorati Favorites

August 26, 2007

I'm on a Mission, and Need Your Help

Software Development Should be Number 1

I woke up this morning, and I was thinking, wouldn't it be cool if a Software Development Blog became number 1 on the Technorati Top 100?  After all, without software developers and software development, we would not have the Internet at all.  Right now, the top sites are "Boing Boing" and a site about making money!  Let's change that!

If you have spent some time on my blog, you will see the purpose of this blog is to improve software development, and more importantly, try and help everyone improve their lives.  Help me spread the word, and let's put Software Development on the top of Technorati!

Win an iPod

To motivate everyone and put everyone into action, I will be giving away a free Apple iPod (80GB Brand New!) when Software Development in the Real World makes it to the top spot!  With the amount of readers we have and daily visitors, this should take no time at all!  All it requires is 2,700 or so people to add the site, and it takes less than one minute to do it!

What to do.

  1. Click here to add this site as your Technorati favorite.
  2. Once you have added the site, just leave a comment behind with your email address.
  3. When Software Development in the Real World is number one, I will add all the valid email address's in the comments into a random draw application, and pick the winner.
  4. The winner will be emailed, and I will send them a shiny free iPod!

Pretty sweet eh!

I will be checking hourly over the next few days, and the second we are number one, I will post the winner on my blog!

Add Software Development as your favorite here.

August 14, 2007

How To Kill Your To Do List, Developer Style!

Are you one of those people that creates to do list's, action plans, project plans, and seems to have millions of things to do?  There is actually a simple "Hack" you can use today to get your life back on track.  I just finished reading David Allen's book Getting Things Done: The Art of Stress-Free Productivity: Books: David Allen, and have taken some great ideas from the book!  I highly recommend reading it. Follow along with me on this journey to getting more stuff done than you ever imagined, developer style!

Set Yourself Up For Success

Before we start, the whole idea here is to process things fast!  If you can't do something in two minutes, figure out what you will do with it.

Create 5 folders on your computer.  Inbox, Action Items, Incubate, Current Projects, Archive.  Create shortcuts to these folders on your desktop.  Get the same 5 folders in front of your desk in physical folders.

desktop folders

The Inbox Folder

The Inbox Folder is where you want to put things you haven't processed yet.  What goes in here? New music you downloaded that you haven't had a chance to put away, files you are sent from colleagues, software installations you've downloaded, random text clippings, bookmarks you want to keep track of and don't know where to put them, meeting minutes, invoices to pay, etc. Your main goal for this folder is that at the end of the day, this folder is completely empty!

Action Folder

Anything that will take you more than two minutes to complete should go in here.  This could be files that you need to clean up, but can't delete until you read them, HR forms that need to be processed, etc.

Incubate

Here you will put things that you might want to do at some point, but aren't totally ready to do at the moment.  You can even create a file within the folder that says "The Incubation List".  This is where you can write out anything you might want to do at some point, but are not getting to.  You will want to review this folder regularly.

Current Projects

These are current projects you are working on, live projects if you will.  On my computer I keep an expenses folder, a client projects folder with all the clients we have, a research folder for current research I am doing, and I keep some employee files in here as well that are current and pertinent.  The idea here is that you keep everything you could use in an instant on hand and readily available to you.

Archives

This folder is easy.  Once things in current projects are completed, we would move it to the Archives folder.  For example, you can keep Archived Clients, Achieved Projects, Resumes, etc in this folder.

Now Kill The To Do List

Now that you have setup your computer, and physical folders, you are ready to rock and roll!  This part is actually fun.

  1. Take every file that you have on your computer, important emails, anything lying around, and place it into your Inbox.  Do the same with papers that are lying around your office.
  2. One by one, go through each item and ask yourself if you can do something with it right away. 
  3. If you can, do it right away!  Then once you’re done, put it in Archives if you want to keep it around.  If not, dispose of it!
  4. If you need to delegate the item, send it to someone else and forget about it!
  5. If it’s something you need to do, but will take more time, put it into the Action folder!
  6. If it's something you need to do, but want to do later, put it in the Incubate folder.
  7. If you don't want to do anything with it, throw it out or delete it!

Every day, make sure you never end a day with your inbox full.  At the end of the week, move any competed projects in Current Projects to Archives.  Go through the Incubation folder and see if you want to take action on these items now.  At the end of the month, go through the Archives folder and delete things you won't need anymore.

This process is discussed in detail in "Getting Things Done" which I highly recommend you read.  The book goes into much more detail of course, however this should be enough to get you started.

Quick Recap

Create these folders on your computer and desk:

Inbox --> Action --> Incubate --> Current Projects --> Archive

Follow the process:

Take Action Now --> Take Action Later --> Delegate --> Archive --> Incubate --> Delete / Trash

Review Process:

Daily --> Weekly --> Monthly

Follow these steps, and you will be on your way to destroying that to do list that you can't seem to complete!

August 11, 2007

How to Rate a Software Developer

15 tips to getting the promotion you want, and the salary increase you will deserve!

How do you rate a software developer?  That's a fantastic question!  There are so many theories out there, and there are so many forms that HR teams try and come up with to help you conduct performance review.  However, what really makes a great developer?  And if you are a Software Developer, how can you improve your career today!  Below is my bible for rating the developers on my team.  By following these tips and rules, you will improve your status from "good developer", to "great developer"!

  1. Time spent writing great code
    It's not about the quantity it’s the quality!  However a twist to this is: It is about the quantity, and the quality.  Far too many times you will get one of two scenarios. 

    In scenario A, you have a developer that pumps out code like mad, things seem to be working... then bugs start happening, you don't know why, seems to take forever to fix!  Or they fix 10 and cause 5 more!  But you get a lot of code...

    In scenario B, you have a developer that seems so smart!  You interview him and he knows everything about everything, can speak the theory up and down!  Yet for some reason, you have assigned him three features, and three weeks later, he is still working on something that should have been done in 3 days!  You are so confused!  He is so smart! He knows everything about generics, multi-threading, and can explain pointers to your grandmother and make her excited to want to code! Why is nothing getting done?!

    In your dream scenario, you get great code!  Great code is done by a great developer that is super smart, knows what quality code is, and writes code like Tony Hawk rides his skateboard.  It looks so natural!  He or she is almost entertaining to watch!  They also get it done at blinding speeds!  They know how long each problem should take, and do not get caught up in finding the world’s best solution, that has multiple threads and layers, to write a game of pong.  Bugs are nonexistent because they write unit tests for themselves, and just plain can code in their sleep!  These guys are worth their weight in GOLD! 
  2. Interpretation of the problem
    So there is a problem out there, with millions of ways to solve it.  Some people are just natural quick thinkers and can come up with multiple solutions instantly.  However, what a great developer would do is totally define the problem before doing anything!  A great developer will create a document or whiteboard the problem out.  They will email their managers and say things like "Can we meet so I can explain to you how I understand the problem?"  Next they will start giving you various solutions, etc.

    See, a great developer knows that the way they see the problem and interpret the problem, is probably not the way that the problem creator intended it to be understood. This is a key point, commit this to memory! A great developer will want to understand it fully, before attempting to approach a solution.  Do you understand the problem 100%, no?  99%?  Go ask more questions and be sure you are 100% clear!
  3. How the problem is approached
    So once you have clearly defined the problem, you start coding right? Wrong!  A great developer will look at the layout, and start thinking of various options, and based on the problem, will start thinking about the best approach to solve the problem.  I view this like a game of chess.  You can know how all the pieces move, know all the rules of the game, but do you just start moving?  No!  You analyze the board, come up with a game plan, look at your opponent, and look at what he or she usually do.  It’s the same case when you approach a problem. 

    Look at the problem, figure out what the outcome needs to be, what kind of time you have, the quality being expected, the tools you have to work with, etc.  Then, start solving the problem. 
  4. Confidence in code
    As a manager, how confident can you be in their code.  Some developers you can say "I need this completed by Friday"  come Friday, you get an email saying "I have checked the code into the branch, it is ready for testing" and you  just know that there will be very little, if any, bugs found by the quality assurance team.  On the flip side, there are some developers that will email you instead and say "I am still not done, and it will be done on Monday morning first thing."  And you are nearly 95% sure that it will be there, however it will be ridden with bugs, and basically unusable for days, if not weeks, until bugs are completely ironed out of the code. 

    Bottom line: The higher the confidence you can have in a developer, the closer they get to being great developers!  Imagine being your manager, and the weight you lift off their shoulders if he doesn't have to worry about your code!
  5. Confidence in the solution
    It's one thing to be confident in the code.  If you have a great developer on your hands, you are confident in the solution.  These great developers will be great architects.  They are able to dissect the whole problem, and figure out how the problem needs to be solved. See it’s not just about coding with great code, it’s also largely about how you architect the solution!  This is a key point, and really what separates the good, from the great in the software world. 
  6. Meets user requirements
    At the end of the day, you can have the best code, and the best solution possible, with all the best architecture, but does it meet the user's requirement?  It's possible not!  And you have completely failed.  Now there are various degrees of missing the mark, but a great developer will hit the bull’s-eye consistently!  They find out exactly what the user wants, come up with a great approach, show the user what they will get every step of the way with weekly builds that have no bugs, and continue to build upon the last version.  Requirements are bang on, and the users do the jig!
  7. Staying up to date
    Great developers are constantly updating their skills independently and proactively!  They thirst for new knowledge and perfection like a cat with milk.  They don't wait for their managers to come to them and set goals, ask them to take courses, or are given books to get up to speed on.  They go and get these things on their own! 

    They find the conferences they want to go to, and send emails like "I would really love to go to Tech-Ed This Year!  I will learn <insert reasons here>, and I will be able to contribute to <insert projects here>.  I foresee this saving us <money/metric reasons here>.  If it's at all possible, can the company help me pay for this trip?”  If someone sent me this, I would not only help pay, I would pay the entire trip! 

    Great developers are always attending all the user groups, like a .net user group for example, or a Java user group.  They go to the "free local" meetings, and do whatever it takes to feed their brains!  Do you read all the latest blogs and magazines?  List your top 5 favorite development blogs right now!  Can you do it? You should be able to drop them like you can do the actions to the YMCA!  Stay up to date, it will stretch your mind!  You will have the next big idea!  You will be rewarded! 
  8. Contributes to team
    You can be one of the best, if not the best coder, architect, most brilliant guy on the team, but as far as I am concerned, if you are not able to share and contribute to your team, you are losing about half your value, if not more!  A great developer makes others great around them! See, a good developer keeps getting better and better, but doesn't share the knowledge they obtain, or how they obtain it. 

    They learn new things, find out about new technologies, but don't let anyone know about them!  A good developer finishes their projects on time, but when push comes to shove, is not there for the rest of the team.  A great developer is in touch with all the projects that are going on within the team, and is ready to lend a helping hand when needed! They will say things like "I noticed team A is working on <issue>, and I think I can help out, do you mind?"
  9. Makes great meeting minutes
    This is incredibly important!  There is nothing worse than calling a meeting, taking the time to explain new concepts, new ideas, brainstorm, come up with great designs, and not have anyone taking meeting minutes!  Even if you have a designated meeting taker, I want to see everyone showing up with a pen, and paper (developer notebook is preferred).  A great developer takes great notes!  They write out all meeting minutes, and at the end of the meetings can be heard saying "So just to confirm, my action items are:  <action items here>.  Did I get everything?” 

    Next, a great developer will send their meeting minutes to the manger, listing the date of the meeting, the topic, and attendees.  Following this, you will have the action items at the top, with who is the champion of the item.  Below that, you have the detailed meeting minutes.  A good developer, takes no meeting minutes, says yes every time you add something to his list... and hopes that his memory will serve him well.  He then later emails you to check out his changes, and you cringe as you see he forgot a few things, but got 90% if it correct.  This is a HUGE WASTE of time!  For no reason at all!  Take Great Meeting Minutes! 
  10. Teachable and takes criticism well
    If you have read this far, then hopefully you are taking all this in and will be trying to implement some of my suggestions in your day to day development efforts.  See, another key area is the developers’ ability to learn from others, and take criticism well!  By making yourself a teachable person, you turn into a sponge, and absorb enormous amounts of knowledge faster!  Your seniors are there for a reason!  Sure, they might be rusty at day to day coding, but they have gone through the trenches, and been through hundreds of battles, and have the wounds and scares!  They have the "Blink" instinct to make great decisions, and make you great!  They are in the position they are in because they LOVE to see you succeed, and want to make you grow! 

    Of course, this is the ideal work environment, but that's where you want to be anyway if you are a great developer!  I absolutely guarantee you, and promise you, that the better you can improve this skill, make yourself extremely teachable, make notes on suggestions and criticism, and make a point of improving them, the better chance you have at becoming greater than you have ever imagined possible!  If you on the other hand, choose to think of yourself as "elite", and have nothing more to learn, you will always be stuck where you are.  If you are not growing, you are not even staying at status quo, you are dying!  Grow! 
  11. Always available when needed
    This is a give and take.  If you are working for a great company, they will be flexible with you.  They should never question doctor’s appointments that you couldn't schedule after work, start times, end times, or lunch breaks.  They should encourage you to go to the gym at lunch, pay for lunches when you go out with the team, etc.  They should give you a few days off after some crunch time work.  This list goes on and on. 

    However, with all those perks, comes responsibility, no question!  If it’s crunch time, a great developer will suggest to you that he will come in on the weekend if needed.  They will stay as late as possible and as late as is needed to ensure the job gets done!  See, great developers take responsibility for their creations!  Now, this is not a necessity of course, but it is the mark of a great developer. Some people just want the 8-4:30, and will be good developers, but they will never be great. Great developers are team players to the end, and view their work like art, and view their team, like a family.
  12. Dress's professionally every day
    You never know when a client will come by on a tour.  You never know when you will be called into a meeting, not everything is planned.  And when that time comes, you have to be ready to dance!  A good developer wears normal clothes Monday to Friday, even stretches it with black jeans, and runners that look like dress shoes.  On casual Fridays, they wear shorts, runners, and a T-shirt.  When the tour comes by on Friday with a new huge account, you can’t call on him to join you for lunch because he is not dressed appropriately.

    A great developer dresses in great business clothes Monday to Friday. They dress for success!  See, by looking the part, you become the part!  Of course, if you have no skills, you will not be promoted to a manager or team leader just because you dress sharp.  But if you have great skills, and dress in a suit and tie, you have just catapulted yourself up in rank, no question.  The 400 dollars you will spend on a decent suit and tie will pay you back within the year.  I promise you! 
  13. Communication Ability
    This is another critical category!  There are so many good developers out there, but there are not a lot of great developers.  Why?  Because a lot of the good developers, are terrible communicators.  There are many levels of communication, ranging from email, to small SCRUM meetings, all the way up to large executive meetings and your ability to contribute at the executive level.  Then you get to "The Show" where you are presenting for hundreds of people, showing off software.  While you don't need to get to the final stages, you need to be able to at least communicate your ideas clearly and effectively in meetings.  The better your communication, the farther you will go. 

    Bottom line:  If you want to be an executive, you have to be a 9 or 10 at communication. Even when you take meeting minutes, or send out status reports, you need to communicate extremely well!  Don't just say "I fixed bug 1371" on your daily report!  Show off; explain how hard it was to solve the problem, how long, or how quick you solved it!  Explain the technology you used!  And explain how you will ensure the problem doesn't happen again.  Your status reports should not be a bad thing you don't like to do!  They should be an exciting part of your week where you get to show off to your manager!
  14. Goal Setting Skill
    Good developers can get things done, and go throughout their day to day by doing what you tell them to do.  They don't really think far ahead and think of what they want to be doing in a year, five years, or even 10 years.  Some good developers know what they want... but have no real plan to get there!  A great developer has the goals for the year, the next five years, and knows roughly where he will be in 10 years.  

    Great developers also take it to the next level by not only thinking about their goals, but also visualize it!  They can see exactly what they will be doing in five years, to the level of where they will be doing it.  Even more, a great developer will create a detailed plan for his next year, complete with courses he will take, projects he will complete, and relationships he will build. 
  15. Organizational Skill
    The final key component that really brings everything together is organization.  You may be the best developer in the world, but if you are not organized, you will fall apart and become bogged down!  Eventually you will be overwhelmed and start losing your edge.  Great developers keep an extremely clean desk, they keep all their notebooks, and write very clearly.  They print out their daily outlook calendar of meetings and tasks.  They have an inbox process to deal with emails, meetings, and new assignments.  They keep file folders and can instantly pull up projects, meeting minutes, and other details when asked to produce them.

Bonus Tip:  Passion!
One of my team members read my post and reminded me of something that every single person on my team has in buckets!  Passion!  Without passion in what you do day to day, you will not be a great developer, or great at anything for that matter.  Lack of passion is the number one reason so many developers never become great!  It is also the number one reason people do not succeed! A passionate developer will outperform even the best technical developers if they are not passionate about their job, their role, and their project.  Think about it, if you have read this far, are you going to make an effort to make all the changes I listed?  They seem simple, but without the passion to do these things, are you really going to commit today and be successful?

So there you have it!  These are some of the key principles I am using in rating my development team during the review process.  Mind you, I provide my team members with the best environment I possibly can, and in return I want great developers!  And they want to all be great developers!  You can use these rules to rate your developers, or if you are a developer yourself, please use this list to make changes if needed, and catapult your career past your peers! 

Follow these tips, and you will get the promotion you want, the increase you have been waiting for, and you will overall be happier with your achievements!  Try it out and post your results in the comments below!  I'd love to hear from you!  Also if have other points you think I should add, let me know!

August 08, 2007

Best Web 2.0 Web Sites - July 2007

We have a returning Web 2.0 champion this month, facebook!  We also have a few other awesome web sites that you have to check out!  Improve your web experience today by checking out the top 10 sites, and seeing which ones you love the best!  Let us know your comments by using the comments below the posting!

  1. logo_facebook-rgb-7inch-785733
    For the second month in a row, Facebook is ranked at number one for Web 2.0 companies and web sites.  With traffic growing at a ridiculous rate, new users signing up by the thousands every hour, Facebook is perfectly poised to be the reigning king of Web 2.0.  While myspace still has the most traffic on most accords, facebook with launching its new development platform has really propelled itself ahead of the competition.
  2. logo_182x40_000000

    One of the world's largest social networking sites, Fotolog is an ever-evolving global network where members communicate and connect through photographs.  A simple and fun way for anyone to express themselves on a daily basis, Fotolog allows members to easily publish an online photo diary, or photo blog, and share it worldwide.

    What makes Fotolog special is not just the ability to post photos, but the ability to connect with people. While many people use Fotolog to stay in better touch with their friends and family, others use it to explore the wider Fotolog universe, discover the photos of new people from around the world, participate in group projects and, perhaps most importantly, receive personal feedback on their photos.

  3. logo_home
    As flickr's tag lines states, flickr is the best online photo sharing application on the Internet today.  It by far has the best tools for uploading your photos, organizing your photos, and sharing them with your friends and family.  You can use your browser, mobile phone, PDA, and literally any device that can take pictures, to upload your photo's to flickrflickr then takes it to the next level by allowing you to share your pictures in a million ways! 

    Friends and family can search the pictures on the web, subscribe to an RSS feed to be notified of new pictures, sending emails from the site, and other crazy ways that you might want to suggest!  If you want to share pictures, flickr is your tool!

  4. delicious 
    del.icio.us is a social bookmarking website -- the primary use of del.icio.us is to store your bookmarks online, which allows you to access the same bookmarks from any computer and add bookmarks from anywhere, too. On del.icio.us, you can use tags to organize and remember your bookmarks, which is a much more flexible system than folders.

    You can also use del.icio.us to see the interesting links that your friends and other people bookmark, and share links with them in return. You can even browse and search del.icio.us to discover the cool and useful bookmarks that everyone else has saved -- which is made easy with tags.

  5. maps_results_logo
    In the old days, Google Maps would still be the new kid on the block, however, in Web 2.0 days, Google Maps is ancient.  However, there is no better way to help you get from A to B quicker.  Sure there are other tools on the market, some of which have been around even before Google itself, but they are terrible in comparison to the speed and ease of use!

  6. vimeo
    Because everyone shouldn't see everything.  What a great slogan, and a great way to compete with YouTube and other clones.  vimeo is extremely clean and easy to use, and I love it and enjoy the experience much better than YouTube.  If I want to see ridiculous videos, and read comments with people bashing each other, I use YouTube.  But when I want to share a video with my family, I use vimeo.  Check it out today, I guarantee you will love the site and visit it daily!

  7. 43 things
    People have known for years that making a list of goals is the best way to achieve them. But most of us never get around to making a list. 43 Things is great for that! Make a list on 43 Things and see what changes happen in your life. Best of all it’s a way of connecting with other enthusiasts interested in everything from watching a space shuttle launch to grow my own vegetables. So the next time someone asks you, “what do you do?” you can answer with confidence, “I am doing 43 things!”.  Check out 43Things.com today!

  8. zillow
    Zillow is an amazing real estate site!  It not only provides you with actual housing value for millions of homes across the country, but it also provides an extremely visual and easy to use interface for finding the data!  With its integrated mapping capabilities, you can even zoom in on the area the house is located in, and see visually the location! 

    Zillow really gives you the edge and a great high level overview on homes and their values.  If you are in the market, or just curious to what is going on in real estate, check out Zillow.com.  You won't be disappointed.

  9. farecast
    Chances are you haven't even heard of Farecast.  Too bad.  It's awesome!  Farecast.com is the first airfare prediction web site. They help online travel shoppers save money by answering the question; should you buy now or wait? They offer airfare predictions from over 75 U.S. departure cities to top domestic destinations.  So next time you start wondering, should I buy my ticket now, or later, and what timeframe, just go to Farecast.com!

  10. odeo
    Do you love podcasting?  Do you love finding new and exciting podcasts to listen to?  Are you a publisher of podcasts?  If you answered yes to any of those questions, this is the site for you!  What they are trying to build here is the ultimate podcast center on the Internet, and from the looks of things, they are succeeding!  If you need to find fresh content to listen to on your iPod, or want to promote your own new podcast or music, check out Odeao.com today!

June 10, 2007

Java Not Worth Building In

Steve Jobs with iPhone

"Java's not worth building in. Nobody uses Java anymore. It's this big heavyweight ball and chain..."

Those were the exact words of Steve Jobs in January of 2007.  You have to keep this statement in context.  Jobs was talking about the portable device market, and the desktop market.  In 2000, Jobs actually made a valiant effort of bringing Java to the desktop with the launch of Mac OSX.  The harsh reality for Java supporters out there is that software developers don't want to write desktop application in Java.

I mean sure they want to write games, and small applications here and there, but for the most part now, desktop applications are ruled by C, C++, or .net.  For every one (1) Java application released, there are 10 .net, C, or VB applications released.

Java does have its place still in the enterprise market, but they have lost the desktop battle.  The only other "desktop-ish" battle they had a chance to win was the browser battle, but on that battle field, Flash is the master, hands down.  Adobe made a brilliant move in acquiring Macromedia.

When the iPhone is released at the end of the month, it will sport the most sophisticated, well thought user interface ever written for a portable device.  It will not run Java.  This will make the device a hundred times more stable as it will protect people from going to download badly written Java applications onto their mobile phones.  It will force anyone that wants to write an application for the iPhone, to go through Apple.  Here is where many will call fowl, however, I call "hurray!".  It will start forcing application standards and performance requirements on people!  And this of course is only if Apple decides to open this up.  And they will, once they own the cell phone market and make it the platform for cell phones.

Listen to the D 2007 Conference and watch Steve and Bill chat.  Steve Jobs knows that the mistakes he made in the past were partnerships, or lack thereof. 

"We weren't so good with partnering with people. Bill and Microsoft were really good at it."

Look at facebook, they own the social network market (There are others, but for usefulness and most avid users, they win hands down), and have now opened up the development via the facebook API.  This was sheer genius on Mark Zuckerberg's part!  This will surely catapult facebook into the stratosphere!  Steve Jobs will make the iPhone the cell phone.  Sure there will be others, but the iPhone will capture market share you would not believe when compared to other phones.

 

At the end of the day, people want great software that is fast, easy to use, and performs the way they expect it.  The iPhone will do this, as the iPod did. 

Now what if Apple decides to sell the iPhone "Operating System" to phone companies once they smell defeat...  This could be Apple's chance to take a road that was once not taken, and saw Microsoft become what Apple could have been.

May 03, 2007

Top 10 Reasons Silverlight Will Change the Web

Silverlight

Microsoft Silverlight is a XAML based WPF technology for vector graphics, video, design, and development of applications for the desktop, as well as the web.  It is cross-browser, cross-platform browser plug-in that is less than 2 megabyte in size!  It will change the web as we know it, finally creating a feasible, professional platform for building the most rich user experience websites out there.  Silverlight is not a competitor to Flash as some would have you believe.  In fact, Silverlight and Flash work extremely well together!  Here are the top 10 Reasons Silverlight will change the web!

  1. Highest Quality Video Experience
    Prepare to see some of the best quality videos you have seen in your life, all embedded in highly graphical websites.  The same research and technology that was used for VC-1, the codec that powers BluRay and HD DVD, is used by Microsoft today with its streaming media technologies. Video overlays, custom menus, all become possible!
  2. Cross-Platform, Cross-Browser
    Finally build web applications that work on any browser, and on any operating system. At release, Silverlight will work with Mac as well as Windows!  The Mono project has also already promised support for Linux!
  3. Developers and Graphic Designers can play together!
    Developers familiar with Visual Studio, Microsoft.net will be able to develop amazing Silverlight applications very quickly, and they will work on Mac's and Windows.  Developers will finally be able to strictly focus on the back end of the application core, while leaving the visuals to the Graphic Design team using the power of XAML.
  4. Cheaper
    Silverlight is now the most inexpensive way to stream video files over the internet at the best quality possible.  Licensing is dead simple, all you need is IIS in Windows Server, and you’re done.  Currently if you want to stream Flash video files, you would need to purchase Flash Media Server and license a few components.
  5. Support for 3rd Party Languages
    using the power of the new Dynamic Language Runtime, developers will now be able to use Ruby, Python, and EcmaScript!  This means a Ruby developer can develop Silverlight applications, and leverage the .net Framework!
  6. Cross-Platform, Cross-Browser Remote Debugging
    If you are in the need to debug an application running on a Mac, no problem!  You can now set breakpoints, step into/over code, have immediate windows, and all that other good stuff that Visual Studio provides.
  7. The best development environment on the planet
    Visual Studio is an award winning development platform!  As it continues to constantly evolve, so will Silverlight!
  8. Built to allow Mashups
    Microsoft spent a lot of time enabling Silverlight to easily consume web services, and easily consume various services and data from around the web.  Silverlight supports LINQ and LINQ-to-XML.  All of this data can be easily accessed via RSS, POX, REST, and JSON.
  9. Silverlight offers copy protection
    Have you noticed how easy it is to download YouTube videos to your computer, and save them for later viewing (If not, read here.)?  Silverlight will finally have the features enabling content providers complete control over their rich media content!  Streaming television, new indie broadcast stations, all will now be possible!
  10. Extreme Speed
    There is a dramatic improvement in speed for AJAX-enabled websites that begin to use Silverlight, leveraging the Microsoft .net framework.

Silverlight is the biggest launch since Microsoft .net 1.0.  My guess is a lot of people will take it as a Flash clone, and not understand its true power until it takes over the web.  This is not a Flash clone at all.  This is the new web development platform for a whole new era of Web Applications.

April 26, 2007

Worst Video Game of All Time

Simple post, simple question.  What is the worst video game of all time, and why?

The worst game by far for me was E.T.  What a piece of garbage. Terrible graphics, no point to the game, unless you like the idea of falling in ditches, and trying to get out with a stretch neck fun.  What was worse was if you didn't time it right, you would fall back into the same hole.  Even worse, if you timed it right, you might still fall into the same hole, or find another hole that might be different!  You get the point? This game was actually so bad that I don't think anyone has a copy of this game, I'm fairly confident if you didn't return it to Atari, you must have burned it or smashed it into a million pieces.

That's my worst game ever! Please use the comments below to post your worst game ever!  The best postings, and most quantity will make it in an upcoming Blog Entry, The Worst Vide Games of All Time! Post away, don't be shy!

December 29, 2006

Web 2.0 Design Guides

Web 2.0

What is Web 2.0 anyway?  In reality, Web 2.0 is the second coming of web services that put an emphasis on collaboration and sharing between users of the systems.  Another clear aspect of Web 2.0 sites, although not mandatory, is the clean design of these sites.  Big clear buttons, less columns, extremely simple interfaces.  All this makes these applications much more user friendly and useful.  I was going to set out to write a Web 2.0 Design Guide, and I still might, however, based on some searching on the internet, I decided I would first compile a list of excellent resources you can already use today!  Please comment below on your favorites, and any other additional resources you would like to see!

Anyway, this list should get you started on the path to Web 2.0 greatness.  From the overall, to how to actually make the buttons, all is covered in the links above.  Hope this helps you on your quest to enhancing your web sites!  Ok, time to get back to my Wii, I’m approaching pro status on boxing!

November 11, 2006

Software Development Events to Attend in 2007

Lets face it, the year is almost done.  Although I did get out and do a lot of traveling, I wanted to make sure I would not miss the major events of the year in 2007.  Therefore, I have made a list of the top Technology Conferences to attend in 2007!  I will be attending all of these conferences as we slowly reveal what the heck Anvil Digital has been developing for the last two years.  Feel free to add conferences you feel are full of passion, knowledge, and great networking by placing comments below!

  • Web 2.0 Summit (November 2007)Software Development
    The Web 2.0 Summit focuses on emerging business and technology developments that utilize the Web as a platform and defines how the Web will drive business in the future. Now that the Web has become a robust platform with countless innovations driving its ongoing development, widespread disruptions in traditional business models are well underway. But within the chaos of disruption lies the seeds of opportunity. We'll focus on the startups and financiers tending those seeds, of course - including the second annual Launch Pad. But we'll also highlight how the incumbents are also taking advantage of disruption, or, at the very least, how they are responding to it so as to protect their market positions.
  • Mix (April 30 - May 2, 2007, Las Vegas Nevada)
    Software DevelopmentMIX is Microsoft’s premiere conference for web developers, designers and business professionals. MIX07 will explore the next generation web technologies that help businesses unlock new revenue opportunities and lower development costs. MIX is a forum for discussing ways to bring technologies such as ASP.NET AJAX (“Atlas”), Windows Presentation Foundation/Everywhere (WPF/E), Media Center Edition, Internet Explorer, and the Expression suite, together in a way that enables developers and designers to deliver rich web experiences that drive business results.
  • TED - Technology Entertainment Design (March 7 - 10, 2007, Monterey California)Software Development
    TED2007 will be different. Instead of a subject-matter theme, we are simply going to put on stage FIFTY REMARKABLE PEOPLE... ...and let them share whatever it is they are passionate about. This, of course, is what TED has always been about. Bring together extraordinary people from every area of thought, work and culture, and lo and behold, astonishing connections are made, excitement and inspiration follow.
  • Tech-Ed (June 4 - 8, Orlando Florida)
    Software Development Regardless of whether you service an IT infrastructure or write code, you’ll want to be at Tech·Ed 2007. Discover the tools, information, and resources you need to better manage your company’s infrastructure or develop new applications using current and upcoming products from Microsoft and our industry partners. You can personalize a Tech·Ed program to help you do what you do better.
  • PDC (September 2007)Software Development
    Although not confirmed, there are some rumblings of .net 3.0, in which case, it could happen.  PDC's only occur when Microsoft has a significant software development announcement to make. At the last event, Bill Gates discussed advances in the Windows Vista operating system and the next version of Microsoft Office – code-named Office "12" – during his keynote address at the Microsoft Professional Developers Conference, Los Angeles, Calif., Sept. 13, 2005.
  • DreamForce (October 2007)
    software development Be the first to hear the latest industry updates at Dreamforce! This year's conference features an incredible array of executives and visionaries who'll give you an insider's view on the future of business and technology. Whether you're looking for trends, cutting-edge tools, mobile advancements, or more, we've got you covered.
  • Inforum (September 2007)Software Development
    Amidst the buzz of the Las Vegas Strip, at the Sands Expo, Infor will host key speakers, breakout sessions, roundtable discussions and a full-blown technology expo as a forum to exchange ideas, share knowledge and strategies to overcome the essential challenges customers like you face in manufacturing and distribution.  If your company focuses on the manufacturing sector, and even supply chain, this is the conference for you!  Infor is now the third largest supplier of ERP Solutions, just behind the big two.
  • VSLive! (March 25 - 29, 2007, San Francisco)
    Software Development You know that VSLive! provides the best mix of pragmatic, useful information, plus the context to understand where technology is headed. With Vista about to ship with .NET 3.0, our focus on giving you insight to help you do your job will be doubly important next year. Come to VSLive! San Francisco to put all of the pieces together – from Ajax to Vista, from ASP.NET to UI design, and from data access to .NET 3.0 fundamentals.
  • Software Development MITX Awards (November 7th, 2006)
    The MITX Awards is the largest and most prestigious awards competition in the country for technology innovations and celebrates the best creative and technological accomplishments emerging from New England.


  • JavaOne (May 8 - 11, 2006, San Francisco)
    software development JavaOne is an annual conference (since 1996) put on by Sun Microsystems to discuss Java Technologies, primarily among Java developers. JavaOne is held at the Moscone Center in San Francisco, California usually between April and June and typically runs from Sunday to Friday. Technical sessions on a variety of topics are held during the day. In the evening, Birds of a Feather (BOF) sessions are held at the Moscone Center and surrounding hotels. BOF sessions allow people to focus in on a particular aspect of Java technology.

 

These are the hottest Software Development events you will want to attend in 2007!  Please let me know if there are others we should be attending, or that you would like to see on the list!

Also, don't forget to vote for this software development article on dzone!  If you haven't seen dzone yet, check it out!

November 02, 2006

The Complete List of Software Development Frameworks, Process's, Methods, or Philosophies

There are so many software development process's, best practices, philosophies, and frameworks out there that I just wanted to create a complete reference list of valuable things to remember.  Note that some of these I recommend NOT using, however I have listed them so that we can ensure to remember what not to do.  However, you would be surprised how in some cases some of these practices are valid, even though they might see ridiculous.  Anyway, here is the list, and as always feel free to post your comments and I will try and review them and add the ones that are valid!

 

  • Agile Software Development
    • Extremely popular at the moment, Agile tries to minimize risk by developing software in short iterations.  Each iteration is a small project in itself.
  • Agile Unified Process (AUP)
  • Best Practice
    • The best way to get a specific outcome your looking for.
  • Constructionist design methodology (CDM)
  • Cowboy Coding
    • Your screwed, well.. I guess unless your trying to learn something new, some quick solution for an extremely small problem, or seeing if something might work.
  • Design by Use (DBU)
    • A software development technique that helps if your working with multiple teams building components that will be integrated to build a larger system.  Communicate early and integrate immediately.
  • Design-Driven Development (D3)
    • An Agile process for creating really cool and innovative requirements to build awesome solutions.  Works really nicely with SCRUM and XP.
  • Don't repeat yourself (DRY) or Once and Only Once (O3)
  • Dynamic Systems Development Method (DSDM)
    • A framework based originally around Rapid Application Development, now an agile method based around continuous feedback from users and responds nicely to changing requirements.
  • Extreme Programming (XP)
    • A set of rules to run a team based around:  Communication, Simplicity, Feedback, Courage, and Respect.  This is done by: Coding, Testing, Listening, Designing.
  • Pair Programming
    • An extreme programming practice, works great!  Two programmers working side-by-side, alternating turns on the keyboard and mouse, while the other watches and analyzes.
  • Iterative and Incremental Development
  • KISS principle (Keep It Simple, Stupid)
    • Everything should be done as simple as possible.
  • MIT Approach (Worse is better)
  • Open Unified Process
  • Quick-and-Dirty
    • A crude solution or programming implementation that is imperfect, inadequate, but solves the problem, or masks the problem, at hand.
  • Rational Unified Process (RUP)
    • A well known refinement of the unified process, it is an iterative software development process created by Rational Software Corporation (now a division of IBM).
  • Scrum (management)
  • Spiral model
  • Software Scouting
    • Experiment before building (proof of concept, prototypes, mocks, simulations, etc.).
  • Test-driven development (TDD)
  • Unified Process
    • Iterative and incremental software development process framework that can and should be customized before use by any organization.
  • Waterfall Model
  • Worse is better (New Jersey style)
  • You Ain't Gonna Need It (YAGNI)

October 27, 2006

The Complete List of Visual Studio Add-Ins and Tools

This is a listing of Microsoft Visual Studio Add-ins and tools that you need to get your job done faster, more efficiently, and with much higher quality than you thought possible.  Think of these tools as the different components that make up a swiss army knife.  These products are designed to be used in conjunction with Microsoft Visual Studio.  Since there are so many versions of Visual Studio (6, 2002, 2003, 2005, etc), some of these may not be compatible with the flavor you are running.  I have tried to find at least 3 tools for each area that I feel are best of breed, however in some cases their is really only one or two great tools.  Make sure to submit the tools you love in the comments below!

Build Tools

Refactoring

Profiler / Visualizer

Code Search

UML Modeling

Source Control

IntelliSense

Faster Coding / Templating

Testing

Documentation

Code Snippet Management

Working with Win32 API's

Window Management

Web Services

Team Foundation Server

Deployment

Reflector

Resource Editors

Mathematics

Metrics / Code Coverage

All-In-One

Shorthand Tricks in CSS

There are many ways to write short handed CSS.  Below are some of the best ways I have found to reduce the size of my Cascading Style Sheets.  These tricks let you specify several properties by using one line instead of endless line after line.

 

Fonts can he made a lot shorter than you might think.  When I work with CSS I find myself doing a lot of this:

font-size: 1em;
line-height: 1.5em;
font-weight: bold;
font-style: italic;
font-variant: small-caps;
font-family: verdana,serif;

This works fine, however there is actually a much quicker way:

font: 1em/1.5em bold italic small-caps verdana,serif

 

Backgrounds can also be condensed into one line commands vs. writing out each line.  As an example, here is the long way:

background-color:#f00;
background-image:url(background.gif);
background-repeat:no-repeat;
background-attachment:fixed;
background-position:0 0;

and here is the short way:

background:#f00 url(background.gif) no-repeat fixed 0 0;

 

Colors can also be short handed.  This is a little known trick that works really well.  Here is what most people would write for code using color:

#000000
#FFFFFF
#445566

However, as long as you have three pairs, you can easily shorthand your annotation to only 3 characters following the pound symbol.  Take a look:

#000
#FFF
#456

 

Margins and padding code can be much simplified from:

margin-top:1em;
margin-right:0;
margin-bottom:2em;
margin-left:0.5em;

by doing this:

margin:1em 0 2em 0.5em;

 

Lists can be shortened as well by using the shorthand properties for ordered and unordered lists.  Typical CSS list code might look like:

list-style-type:square;
list-style-position:inside;
list-style-image:url(image.gif);

but would be much simpler expressed as:

list-style:square inside url(image.gif);

 

CSS shorthand is quicker and more efficient to use in many situations.  Support for this can vary among certain browsers, and it can also make it slightly more complex to read your CSS file.  This brings me back to the Computer Science days where we would try and write the shortest lines of code to perform a task.  In the end you could do so much in one line, however the readability of the line really suffered.  The choice is up to you!

October 26, 2006

The Complete List of Ajax Tools

Ajax has really taken off over the last two years.  Ajax is really just the combination of Asynchronous JavaScript and XML.  I actually remember almost over 5 years ago now working with XML and JavaScript to auto-magically update navigation bars from the database.  With the advancement of Ajax, new frameworks, utilities, and software packages have been built to make the production of Ajax web sites much easier.  Below is the complete list of these tools, and the only list you will ever need!  Please feel free to submit more sites in the comments below as they will be added!

 

AJAX Libraries / API's

AJAX .NET Frameworks

AJAX ColdFusion Frameworks

AJAX Flash Frameworks

AJAX Java Frameworks

AJAX Perl Frameworks

AJAX PHP Frameworks

AJAX C++ Frameworks

AJAX Toolkit Frameworks

AJAX Toolkits

AJAX Application Models

 

Other Great Real World Lists

Best of the Best Web 2.0 Web Sites

Web 2.0 sites are cropping up all over the place!  From Social Bookmarking Sites, to Real Estate sites, this list has only the best Web 2.0 Sites available today!  What makes a site a Web 2.0 Site?  Web 2.0 is the second coming of World Wide Web. New and improved sites that make the web their platform, provide users a way of interacting with each other, and organize and categorize their content are perfect examples of Web 2.0.  Below is a list of web sites that are the best of the best!  If you would like to see some added to the list, please comment below!

Best Web 2.0 Guides - July 2007

Best Web 2.0 Guides - June 2007

If you enjoy this blog, please help us out by adding this blog to your technorati favorites! It's really simple to do, just Add To Technorati Favorties here.

Social Bookmarking Sites

Software Development Web 2.0

Social Communities

Software Development Web 2.0

Start Pages

Software Development Web 2.0

To Do Lists

Software Development Web 2.0

People News Production

Software Development Web 2.0

News Sites

Software Development Web 2.0

Image Storing and Sharing

Software Development Web 2.0

File Storage

Software Development Web 2.0

Video Storage

Software Development Web 2.0

Blog Filters

Software Development Web 2.0

Word Processing

Software Development Web 2.0

Calanders

Software Development Web 2.0