Tag Archives: programming

How to Learn

Add to iTunes | Add to YouTube | Add to Google | RSS Feed

Brian writes: “I’ve been watching your videos on YouTube for a few month now. I’ve been learning Java for a year now, and I’ve got some tips for learning computer programming. Hopefully, these will apply to other things, as well.”

  • Learn to use the help section or guide. The first thing you should master when learning, is the skill of using the help area. It’s so much easier to find something you need on your own than it is to ask others for help.
  • Trust books… but have your own mind. When you feel the book isn’t right, you should do research rather than saying “oh, well a book knows more than I do”. Nobody is perfect… even authors could be wrong sometimes.
  • Use the tools. When you are learning something new, always use the tools that can help you. Such as… don’t just use Notepad for programming. Use an IDE, because it can make your life easier. It will also make your debugging easier when you make a mistake. And don’t just use any tool, find the one that is right for you. By the way… I use Eclipse for my Java programming.
  • Take a rest. When you feel you have mastered 2 or 3 new things, take a rest, and think about what you have learned. It will be more effective this way.
  • Don’t research immediately. If you find something in the book that you don’t understand, don’t go do research immediately. Read the rest of the article or book first. Then if you still don’t under stand it… do some further research.
  • Always read twice. If you can, always read an article or book twice. I always learn a lot of things the second time I read the book or article.


Want to embed this video on your own site, blog, or forum? Use this code or download the video:

Game Developer Programming Suggestions

Add to iTunes | Add to YouTube | Add to Google | RSS Feed

Are you interested in become a gaming Programmer? Scott called in the other night when the phone lines were open. He wants to get into game development, and isn’t sure what Programming language he should begin to learn at first.

I feel he should start simple, and download Visual Studio. I know some in the chat room are suggesting different variations of C… but I recommend Visual Studio for a reason. That reason is that it’s designed to help make games for the Xbox. You can learn that way. If you want to really dive into this field, that is one way to go. If you want to learn to walk before you run… Visual Studio is the way to go.

I have never been a programmer myself. I just go off the recommendations of others who are in that field. Find the tool that works for you. Talk to other game devs, and see what they say. Find what’s going to be comfortable for you, in an environment where you aren’t just using Notepad.


Want to embed this video on your own site, blog, or forum? Use this code or download the video:

How Can Software be Perfect?

Add to iTunes | Add to YouTube | Add to Google | RSS Feed

What do we need in order to have “perfect” software? What can companies do to achieve this lofty goal? Here are some excellent tips sent in by a community member. Software manufacturers… pay attention!

  • Software should never crash. I don’t care if I try loading a 10 GB file into Photoshop on a computer with 256 MB of RAM. Checks should be performed and resources balanced so that a run-away program doesn’t bring down the entire system. User input should also never crash a program. This isn’t unique to just Windows. I’ve had hard crashes on both Mac and Linux where hitting the power bottom on the tower was the only way to restart it.
  • Security should be built in and seamless. Grandma shouldn’t need a degree in Computer Science to keep from getting her identity stolen or her computer infected with malware. Virus-like behavior shouldn’t be possible. One reason Mac and Linux have such fewer viruses isn’t just because of their lower market share, but also because they are built securely and self-propagating programs are rare and are difficult to hide from the system. Firefox is another good example of software that integrates security by alerting the user if they are on a suspected phishing site.
  • Protect data at all costs. One horror story comes to mind where a user told me that they had downloaded a document from their webmail but selected “open” instead of “save” at the dialog. After confirming it was the correct document they went to work and subconsciously hit ctrl-s to save their work every so often but didn’t even think about where it was being saved to since they had only “opened” the document. They had kept this window open throughout the day and adding changes and then did a final ctrl-s and closed the window for the night. The next day they looked at their recent documents to see “file not found”. Opening the document put it in a temporary folder which was cleaned out when they rebooted their computer. This kind of thing shouldn’t happen. Operating systems should also keep backups and revisions of documents in case the user needs to go back to a previous draft. Leopard’s Time Machine is an example that comes to mind.
  • Online integration. There is a lot of buzz about this “Web 2.0” (which doesn’t exist) and people thinking that all applications will be run inside a browser. I personally think that is silly. Google Docs & Spreadsheets will never replace Microsoft Office or any other full blown application that is installed to the system. Installed applications have the advantage of performance and being integrated into the OS more than a web application could ever hope to. However, I believe that client-side applications should become more integrated with online services (though not web applications themselves). Imagine OpenOffice, for example, integrated with Google Docs and being able to save data both to disk and online without needing to open up a web browser. My media player can download lyrics for music or provide a link to IMDB when watching a DVD.
  • Maintain a “just works” philosophy. I plug in my printer and it works. The user should never even have to hear the word “driver” or “install”. YouTube is an example that we now almost take for granted. Ten years ago I remember having to mess with Windows Media Player, RealPlayer, and Quicktime plugins with all the installing and rebooting just to play a video in my browser. Dozens of different formats and codecs. YouTube has simplified this process. I visit the site, hit “play” and it plays. If flash isn’t installed a quick “click here to install flash” and boom! It works.


Want to embed this video on your own site, blog, or forum? Use this code or download the video:

How to be a Good Software Programmer

Add to iTunes | Add to YouTube | Add to Google | RSS Feed

I programmed a dog into this live video feed. Can you find him? Go ahead… I’ll give you a couple of seconds to look for him. I have a top five list submitted by Raleigh, full of tips to help you become a good Programmer.

  • Save your code often! You know what it’s like to be working on something only to have the power go out. Imagine losing several hours’ worth of code.
  • Back up your code. This is pretty much the same reason as #1. I backup every night after a day of coding, just as an extra layer of protection.
  • Write proper comments everywhere. Comments are very important. These are useful. WHat if you don’t look at the code for a year? These comments will be helpful later.
  • Keep your code clean. Separate your code into chunks, and use line breaks where you can.
  • Test your code often. Whenever you have made a simple part of code, test it. WHy wait until you’ve written four hundred lines of code before testing? If something doesn’t work… you’ll have to wade through all those lines to find your error.

If you have a top five list related to anything to do with “Geekery” or even something Non-Techie… send them to me! I’m always ready to pass on your knowledge to others.


Want to embed this video on your own site, blog, or forum? Use this code:

How to Get Started With Computer Programming

Add to iTunes | Add to YouTube | Add to Google | RSS Feed

Programming is NOT as scary of a task as you might imagine. I know some people who shudder at the thought of learning any programming language. However, take a read through these tips, and find out for yourself how to get started.

  • Save your coding often! Everybody knows the feeling of having worked for several hours on the same thing and you lose it for various reasons (the computer goes down, program crash, power out). I usually save every five minute or every time I have written a line.
  • Backup your code! Kind of for the same reason as tip 1. When working on a mac it is really easy to back up with Time Machine. I do this every night before I go to bed.
  • Write proper comments everywhere. Comments are very important. Even though you might not find it useful at the time you write the code, imagine how it is if you do not look at the code for a year. It will take you up to several hours to figure out how the program runs if you have to read the code instead of the comments. It is also a requirement to use commenting if you are developing code as a team.
  • Keep your code clean. Linebreaks are free. Separate your code in chunks sorted by what it does. Make it easy to overcome. Combined with tip 3 you are good to go. It is also good to separate the code in files. Files for functions, common used files and so on.
  • Test your code often!!!! Whenever you have made a simple part of the code, test it. Writing 400 lines of code before testing is a nightmare. Do it as often as you can. Output your variables to see if they contain what they are supposed to. Also twist your mind to be predict every possability of program crashing and error reporting. E.g. If the end-user is supposed to input a variable. Check if it is a variable, if not, stop and tell the user. Not checking stuff can be fatal and is the main reason websites get hacked.


Want to embed this video on your own site, blog, or forum? Use this code or download the video:

Express Software

The voting booth for that Made in Express contest is now open. Twelve finalists, as linked below. I have to give every one of these guys “props” for participating, but that doesn’t mean I’m going to turn off the snark filter:

Tim Shay – Here’s YARS (Yet Another Radio Station), claiming that it was NJAORS (Not Just Another Online Radio Station). I’m not quite sure what’s wrong with Last.fm? That, and… Tim proves that all Microsoft platform developers translate UI as “unimportant interface.” Suggestion: find a Web interface partner.

Sanchez Roman Canlas – For those of you who think that Microsoft Agent is teh shiz, you can place John C. Dvorak a curmudgeon chat bot on your desktop. Cute, but… about 10 years too late. Maybe if my real-life therapist wasn’t so darn entertaining, I might like the desktop curmudgeon bot a bit more. Suggestion: no comment.

Mark Johnson – He’s got a community-based video remix tool. So, this is a Web-based video editing tool? If so, that’s very cool – and very needed. Mark hasn’t uploaded any files for us to see, though. Suggestion: drop the remix/mashup thing, focus on the basic editing features.

Edmon Begoli – Let’s throw Web services at the X-10 protocol. Not a bad idea, although I think home automation is still 20 years away – and the products have to get 1000% more reliable. The big problem with X-10 is the brand association – pop-unders, anyone? Suggestion: develop it for all wireless home automation protocols, not just X-10.

Daniel Crenna – A “poker bot” is nice if you like the game. I, however, live in the state of Washington – where it is now illegal to discuss, write, or think about poker. Suggestion: polish the UI, release it as the first video poker game that doesn’t try to upsell you.

Ali Khalid – Dude, an instant (live) IM translation plugin is long overdue. This is the most original idea in the entire “Made in Express” contest. It shouldn’t be an MSN plugin, it should be a Trillian plugin. Microsoft Research allegedly developed a similar tool a few years ago, but never released it! Suggestion: don’t stop until this works with every IM client out there.

Douglas Steen – As a “visual learner,” I appreciate the concept – but his execution leaves something to be desired. Couldn’t figure ‘er out, got confused, kept clicking, got more confused. Suggestion: make it more imagey, less texty.

Chris Fuenty – How many of you don’t already have an IRC client? Here’s an AJAX-driven Internet Relay Chat script. On the surface, it’s rather blase – but I’d give my left nut to eliminate all Web-based Java (and ActiveX) IRC Web applets. Suggestion: work on the interface, send it to chat mods for suggestions, domainte the Web-based IRC chatosphere.

Ernie Hall – What kid wouldn’t want his or her own all-terrain, self-maneuverable robot? The problem with robots, however, is that they’re not very sexy. Suggestion: slap a camera on it and let it videocast adventures.

Jonas Martinsson – Newspaperize your fave feeds into PDF. Still has a long way to go, but I’d say that sample output is quite nifty. The only thing that keeps me from installing and recommending the app wholeheartedly is the need to install SQL Server 2005 Express Edition first – which I’m not going to do on my desktop. Suggestion: push forward with this one, but rely on something else for feed information storage (sorry, but installing SQL is overkill for users like myself).

Daniel Bryars – How are you feeling right now? That’s the questions all playlists should ask, and don’t. Song ratings should be based on emotion, not stars. Milton’s got a good idea here, but the Windows Media Player team will promptly ignore it. Suggestion: make it a WMP plugin.

Neil Bamber – Watch out, we’ve got another relationship tracking system on our hands! The only way you’re going to get my attention with these types of tools is by completely automating the “friendship management” process (which is never likely to happen). I don’t even use Outlook Journal, and I live in Outlook. Suggestion: look at all the Web-based social networks out there and then do something really different.

There you go – my gut reactions. A few gems, a few gomers. I’d really like to see Mark, Jonas, Ali, and Daniel continue their work (seriously, they MUST keep me posted). Next time, Microsoft should select six male developers and six female developers as finalists – unless fewer than six female developers stepped forward in the first place?

Users vs. Developers

In prepping for my talk at BloggerCon tomorrow, I thought I’d incite a riot tonight. Most of the world won’t be there, but you can tune into the live stream at some point right after lunch (when I’ll be leading the discussion). I put all of this in tonight’s Lockergnome report for the Windows Fanatics channel, but I figured it was worth repeating here… where I’m likely to get flamed out of existence.

What would the world of software be like if the inmates were running the asylum? I’d argue a lot more useful, and a lot more beautiful. But users are usually in the back seat when it comes to the evolution of a utility – from beginning to end. We have all the control in the world, but few of us ever choose to exercise that power. We are expected to treat developers like they’re gods – but they’re no more important in this cycle than the average user. Let me put it to you this way: software is useless if there isn’t anybody using it. There are certainly users who are content to take whatever programmers hand to them, but I don’t believe that this Utopian level of interaction will exist for too much longer. The world of software is getting larger by the day, and more people are finding new and different ways to improve lives with digital code. I got sick and tired of meeting programmers and developers with attitude, so I decided to get an attitude myself – as a power user. I expect better, I expect faster, I expect smarter, I expect more.

Base functionality is crucial – but I would argue that software should look twice as good as it runs (which should be fast to begin with). I’ve been labeled a “nitpicker” for pointing out font inconsistencies and pixel discrepancies. But if you don’t complain about the things you’d like to see change, how do you ever expect them to change? Developers develop, users use – but it’s up to both parties to communicate with one another. When I see a new piece of software that holds promise, I call out its shortcomings in the hopes it will be closer to perfection with the next revision. Programmers believe that they’re in charge – but I believe the true power lies within the user. Years ago, when I started Lockergnome, there were few people writing publicly about good (or bad) digital tools on the desktop or the Web. The blogosphere has since exploded with a flood of positive and negative opinions – and if you’re not a part of that revolution, then you’re missing out on an important part of history. I’ve seen countless developers struggle to get their apps recognized – but most of those same programmers suffer from an overinflated ego and miscalculation of a uesr’s wants, needs, and desires. Users don’t talk – but I’m asking you to start flappin’ your electronic gums for the sake of making the software landscape better for all of us.

FWIW, I love developers – couldn’t live without ’em. Can’t live with ’em, either. 🙂


As Dave mentioned the other day, I’m leading a discussion on the power of users at BloggerCon IV. Take a look at my recent string of Windows Vista and Office 2007 posts. Try to look past the “Chris is really ripping apart Microsoft’s flagship products” angle, focusing instead on the “Chris is really a passionate user” position. This is the foundation of our impending BloggerCon discussion. As a blogger, you have tremendous opportunities to tell developers what you need, what you expect, and what you want. You are the user – power or casual. If you don’t stand up for yourself, nobody’s going to do it for you. And contrary to popular belief, developers aren’t gods – and neither are users. If this is a real ecosystem, we need balance where none currently exists. Problem is, as users, we have to deal with the developers – who don’t always see the world from a user’s perspective. I’m not suggesting a revolution – I’m merely asking for other passionate users to start speaking up for the things they care about. I want to know if I’m the only user out there who isn’t afraid to say something (right or wrong) about the applications I work with (good or bad).