Monday, January 29, 2007

Contemplating ViM

A conversation with a colleague got me interested in ViM once again.  I've used ViM on and off for a few years now but never gotten really adept at using it.  For those that don't know, ViM stands for Vi Improved and Vi is one of the two dominant text editors in the *nix world (the other being emacs).  Vi was written by Bill Joy.  It is hard to learn but very powerful once you put in the time.  ViM is the most popular of the modern incarnations of that editor.  I may have to dust off my installation and try to master it once again.  In my newfound interest, I located a few things which I thought I'd pass on.

First off, I figured out a good way to get the 64-bit version of ViM installed on a x64 Vista.  You can install the 32-bit version but tell it to go to the x64 "program files" directory on install.  This will set up all of the shortcuts and shell extensions will later need.  Then you download the x64 build of ViM from here.  Finally, you just unzip the contents of that package over the top of the previously installed ViM.  Done.  So far it seems to work fine.

Next, I found a few useful documents to help me get back into the habit.  The first is this graphical cheat sheet.  It's a bit hard to print as I had to download Inkscape and play with the size a bit.  Once printed though, it is a great way to quickly find the needed keystrokes to accomplish most tasks.  The most frustrating part about using ViM is knowing what you want to do but being unable to locate the right keystrokes.

I also ran across this tutorial called Efficient Editing with ViM that laid out the key ViM instructions better than most.  I've read a lot of ViM tutorials and they tend to be hard to follow.  They probalby make sense if you already understand ViM but they are hard to approach as an outsider.  This one does the job better than most.  Either that or I'm an insider now...

Finally, I've been hearing good things about ViEmu which is a ViM-like editor which works inside Visual Studio.  No longer is one required to give up Intellisense to edit code efficiently.  I haven't tried it yet but I'm about to.

Mac Users Respond To Vista

I have heard several Mac users talking very kindly about our new OS.  This is encouraging as these are a bunch that are pre-inclined to view Vista in a negative light.  Impressing them is a hard task.  It appears that, at least in some cases, we have done that.  Here's a sampling:



  • Many of the commentators on TWiT had good things to say.

  • Andy Ihnatko writes in MacUser about several features he thinks Microsoft got better than Apple.  It's a quite entertaining read too.

  • The Apple Blog also lists 9 features they want Apple to borrow from Microsoft.  This one is more about XP than Vista though.

There are a few themes here.  They seem to be:



  • Voice recognition that works well.

  • Aero Glass including the 3D wind-tab view, the live previews, and the bouncy windows.

  • Media Center in every (premium) build

  • Working search.

  • Sidebar

Of course, there are also a lot of contrarian reviews too.


 While I'm on the subject, here are some of my top reasons to upgrade:



  • User Access Controls & better security.  You can be a non-admin and still get your work done.

  • Search.  Find everything on your system.  Quickly.

  • Better audio UI.  Change volume for each application.  No more annoying midi sounds or competing myspace pages.

  • Aero Glass.  Pretty.

  • 64-bits.  Because I'm a geek.

  • DVD burning in Media Center.  Now a way to archive the shows.

  • Sidebar gadgets.  On a widescreen monitor, set it to always on top.  Very cool.

Friday, January 26, 2007

History of Programming Languages

I saw this on someone's wall a while ago but just now ran across it on the web.  This is a chart of all major programming languages, how they are related, and what years they were around.  It's an interesting view of where we have come from.  Two of the first 4 languages (Fortran, Lisp, B-O, and IAL) are still in use today in one fashion or another.  I find it intriguing to look at the ancestors of many of our modern languages.

Wednesday, January 24, 2007

Recommended Reading for New Test Developers

I've previously written about how to teach yourself to be a test developer.  That post included an extensive reading list.  It assumed that you were a tester and wanted to learn to be a test dev.  What if you are a new CS grad and you just got hired as a test developer?  What should you read to get a leg up on the competition?  What follows is my list of recommendations.  Some of this list assumes you'll be working in C++.  If you are going to be working in C# or Java or some other language, you'll have to make substitutions.

Testing Skills:

I'm not a big advocate of formalized testing skills.  There are those who think there is as much to learn about testing as there is about design and development.  I don't happen to subscribe to that philosophy.  Testing isn't trivial, but I'm not convinced it is rocket science either.

My only recommendation in this area is James Whittaker's How To Break Software.  This book is very practical.  Not a lot of theory but it will give you a good, working knowledge of how to test software.

Programming Skills:

With a CS degree you should have learned the basics of programming.  I liken this to learning a written language.  You know what sentences, verbs, and nouns are.  This makes you capable of writing but doesn't make you a good writer.  School projects tend to be small and throw-away.  You don't often have to deal with large code bases and the quality of the code itself is often not related to the grade achieved.

The Practice of Programming by Kernighan and Pike.  This gives you a lot of tips on how to write good software.  Short and meaty.  A great book.

Refactoring by Martin Fowler.  This book consists of two parts.  The first part explains the concept of refactoring.  How and when to make pre-existing software better.  The second part is a lexicon of refactoring patterns.  These are recommendations to handle specific situations in code.  The latter half of the book I find less useful.  Feel free to skip it.  However, the first half is extremely useful.  Make sure to read this.

Design Patterns by Gamma et al.  Also known as the "Gang of Four" book.  The most enlightening part of the book is the first few chapters.  It shows how to design an editor using an object-oriented approach.  I personally found this to be an "a-ha" moment.  If you didn't cover design patterns in school, read this book.

Design Patterns Explained by Alan Shalloway.  Great explanation of practical use of design patterns.  Read this before you start designing programs.  You'll find yourself writing better code and you'll find maintenance a whole lot easier.

Advanced C++ Skills:

These books will help you go beyond the basics.  Going back to my written language example, consider this to be like gaining a strong vocabulary.  You can communicate your ideas with just basic vocab words but to communicate the nuance, you need a deeper understanding of the language.

Effective C++ by Scott Meyers.  If you feel comfortable with C++, this is a great next book.  It will help you to avoid many of the gotchas in C++.  This book will help you be a better programmer at the syntax level and have a much deeper understanding of the language as a whole.  Skip the More Effective C++ book though.  It's not a bad book but there are better uses for your time.

Inside the C++ Object Model by Stanley Lippman.  Deep explanation of how C++ works under the covers.  If you want to be a coding guru, give this book some of your time.

These are my recommendations.  There are certainly books that I missed.  What recommendations do you have?

Monday, January 22, 2007

How Much Memory Does Vista Need?

With Windows Vista coming soon to a retail channel near you, one of the important questions to ask is, "How much memory does it really need?"  There are the official minimum requirements of 512 MB, but we all know that minimum requirements don't translate to a great experience.  What are the real memory levels that get good performance?  After having used it for several years during the development process, I figure I'm in a pretty good place to help answer that question.  Vista definitely requires more memory than XP did to achieve similar levels of performance.  That is to be expected with all of the new functionality invovled.  To run Vista at its best, I recommend you have at least 1.5 gigabytes of RAM.  In my experience, the following is a mapping from XP RAM to Vista RAM requirements for eqivlaent performance.

XP RAM      Vista RAM

128 MB       512 MB

256 MB       1 GB

512 MB       1.5 GB

1 GB           2 GB

In my experience, XP ran very well with 512 MB and only slightly better with 1 GB (unless you were putting it through a very serious work load).  To get this kind of performance out of Vista, you really want 1.5 GB.  1 GB will work but it will be sluggish at times.  Anything less than 1 GB will feel very slow.

If you have experience with Vista through the business release or a beta, what sort of memory performance levels do you see?  Do you concur with my recommendations?

 

Note:  This is not official guidance.  This is based merely upon my personal observations.  Your mileage may vary.

Thursday, January 18, 2007

Back To School

When I'm not trying to deliver the next great operating system or spending time with my family, I'm working on a masters degree in computer science.  It makes for a busy life.  As I'm doing this on the side, I'm only able to take one class a semester.  Last semester it was Theory of Computation (automata, turing machines, NP, etc.).  This semester it will be computer security.  I look forward to getting back to a class where we might see a compiler.  Theory of Computation is all about math.  Let us just say that isn't my favorite subject.  It will be interesting taking this class.  I was here for Microsoft's security stand-down.  I've been to numerous security-related classes and talks.  I'm not an expert but I do have a working knowledge of the subject.  I will be looking to see how what I'm learning coincides with my practical experience.  This is a class that could be very useful or way too theoretical.  We shall see.

Wednesday, January 17, 2007

The Fat Man Speaks

George Sanger, aka "The Fat Man," is interviewed by The Escapist.  George is the founder of Project BBQ which I mentioned a few weeks back.  He's also a well-known game music designer whose credits include Wing Commander, Loom, and Master of Orion.  In this interview he comments on the current state of game audio (poor) and talks about Project BBQ and his new game-design think-tank, Project Horseshoe.