Saturday, June 30, 2007

GPLv3 is out and Stallman wants you to upgrade

Well, Version 3 of the GPL is out, the software license used for a lot of open source software has been out for a little more than a day now. It seems to have to support of the top brass in the open source community such as Richard Stallman, Check out the post here.

Friday, June 29, 2007

The Craziness of iDay

Alright, I'm technically breaking one of my rules for the blog, but the madness that has/is occurring today is just too much to ignore. So what the hell is iDay? Only the day that Apple or the iCompany is set to release its latest iDevice incarnation... no I'm not going to reference it by its iName, instead I will be referring to it as that really expensive iThing, you'd love to have but don't want to throw that kind of cash at. So in a slight protest to the iHype device that is taking over my RSS feeds. I thought I'd recap all the iNews, because thats all I can read and apparently talk about.

The iHype has had a pretty warm reception by the 4 people who we allowed to have one before the launch(WSJ,NYT,Newsweek,USA Today), which left even a few of the tech luminaries green with iEnvy. In which the iReviewers basically stated its shiny, has decent battery life, has an average call quality, and EDGE sucks...oops I mean iEDGE, but does it still suck? Which quickly convinced everyone without an iLife or those with a day off to start lining up next to their friendly neighborhood iStore....sort of.

The iDevice will set you back around $499 and $599 for the iCoolGuy and iFanboy (basically the iCoolGuy + 4GB=8GB) models respectively. The data plans that go with the iDevice is actually pretty typical and striaght forward basically take all standard cell rates, add $20, and you'll have yourself an iPlan, for a minimum of two years(of course).The iHype device will work with iTunes to allow its iCustomers to leave the Apple iStore in a nice orderly fashion and run straight back to their iHome and setup their new fancy iPod with its new snazzy phone support.

There won't be any third party iApps on the iHype at least for a little while, instead the iWeb Devs of the world have been asked to make iSites that sound remarkably like Web 2.0 sites.

Oh yeah and his Jobiness announced to the Mac minions of the world or better known as the iEmployee, that all Apple employees that have been with the iFaith for longer than a year will recieve their very own iHype device of their very own to iFlick, iSmudge, and iDrop and get this they get it for free.

By the by if you think its just random iPeople waiting in those crazy iDay lines at the Apple iStore's you'll be happy to note that you've got a few other pretty important iPeople waiting too, such as co-iCompany founder iWoz and the iMayor of Philadelphia.

Feel free to send me an e-mail with any other topics regarding iDay that I may have missed.

Thursday, June 28, 2007

Garbage Collection in .NET

Ever wonder how .NET handles garbage collection works? For those of you with who aren't sure what I mean by garbage collection, its basically how managed languages handle memory management. Here is a nice collection of articles that explains the process and how it works.

Wednesday, June 27, 2007

1-800 Magic E3



With Red vs Blue 100th episode, coming out in a matter of days, its time to fill the void with another episode of 1-800 Magic. Enjoy!

Tuesday, June 26, 2007

Random Music Video of the Day: Ben Fold Covers "Such Great Heights"



As of late I've been on a cover song itch, while coding and came across this great cover of "Such Great Heights" by Ben Folds, which in my opinion is just awesome and worth sharing

Monday, June 25, 2007

Debug Tutorials

If you've done any kind of major software development, you'll know one thing debugging is king. So here is a good set of tutorials on how to debug for the Windows environment. (Check the code project site for other little tutorials that are extremely useful)

  1. Debug Tutorial: Part 1
  2. Debug Tutorial: Part 2
  3. Debug Tutorial: Part 3
  4. Debug Tutorial: Part 4
  5. Debug Tutorial: Part 5
  6. Debug Tutorial: Part 6
  7. Debug Tutorial: Part 7

Sunday, June 24, 2007

Cool little project of the day: ToDoList

If you've read the blog you know that I'm a Windows developer but you'll probably find out that I'm a pretty big on open source software. Today's post sits in the spirit of open software. ToDoList is a pretty full featured To Do List application, its written in C++ and oh did I mention has a nice little code project page dedicated to it. Which means code and all is posted so you can figure out how it all works. So check it out here.

Saturday, June 23, 2007

Top 10: My Favorite Windows Application: Open Source Version

It's that time again to take a look at my top 10 applications applications for the Windows platform. Of course, this is going to be an open source version so put away those credit cards and take a look at my top 10:

  1. Firefox (Web Browser)- I use it, I like it on any platform and with solid performance and a huge list of powerful extensions what's not to like.
  2. Pidigin (IM Client) - A while ago I too use to use applications like AIM and MSN messanger, today Pidigin. Why? It works very well and has no advertising, reason enough?
  3. VLC (Media Player) - This is the swiss army knife of media players supporting just about every video codec under the sun.
  4. GIMP (Image Editor) - If you don't want to drop the cash on Photoshop and MS Paint just isn't hacking it, then GIMP might be a good alternative. This image editor is a solid as it gets for a free (as in beer) application.
  5. Cygwin (UNIX/Linux Shell) - when you need a more powerful shell than DOS, Cygwin will help you bring the power of bash to your Windows environment.
  6. HandBrake (DVD to MPEG4 rip/encoding software) - for the times when want to backup your DVD's into a nice digital format, HandBrake is a nice little application that helps you convert to the MPEG4 format with very little effort.
  7. FileZilla (FTP Client) - It's not that often I have to grab anything from FTP anymore but when I do this little application is my client of choice.
  8. Azureus (BitTorrent Client) - this Java application is packed with features and oh yeah it downloads over BitTorrent too.
  9. 7-Zip (File Archiver) - this file archivers has a long list of supported file types that makes download worthy on its own.
  10. Notepad++ (Source/Text Editor) - most of the time I develop in Visual Studio, however, on the days that I can't I use notepad++. Which has quite a few features over the basic notepad application.

Friday, June 22, 2007

The power of the finger



Well it seems Microsoft is really sold on the idea of creating touch sensitive interfaces. So much so that earlier this month(June)/the end of last month(May), they announced a new device known as the Surface Table, which basically begins to deliver on the idea that touch screens are going to be the interface of the future. Well todays post/video shows how they're adapting it current products in this case a laptop, meaning the future maybe coming sooner than we thought

So now that you've gotten the basic press pitch, here is my two cents. The technological approach Microsoft is taking to implement this technology seems to be pretty solid, however, I have some concerns:
  1. Will these devices deliver good image quality? Flat display technology is quickly becoming a mature technology but it does have a rather rough track record with behind the glass sensors. When it does work it give the screen a slightly grainy look (a la Tablet PC) so the question is can Multi-touch interfaces integrate well into portable devices, such as laptops , and still retail the great display quality we all know and love?
  2. Are people really going to want to reach out can touch their display interface? Now this just maybe because I'm pretty well fixed into the input and display paradigm, but think about it are you really going want reach and touch your screen all the time? If not then you're at least going to want a keyboard like device in the very least and possibly a mouse just because it seems more of a natural feel. Personally I think the concept works better as a table since it puts the interface at your finger tips rather than your finger tips at the interface.
  3. Isn't this just an interface device and not entirely a mouse replacement? The main issue I have with the notion that touch interfaces will replace our good old little pointers is that they're inherently less accurate meaning they not good for very precise pointing. If you want to know why that's important ask any gamer or computer graphic artist. So have we just found a fancier pointer or is this just an interface problem no ones really addressed yet?

Thursday, June 21, 2007

1-800 Magic E2



Since I refuse to do any iPhone coverage and I haven't written any more XNA code, it seems like a good day to sit back and enjoy another episode of 1-800 Magic.

Wednesday, June 20, 2007

A little guide to Writting Plug-ins in .NET

If you've ever been curious on how you write plug-ins for your .NET applications, then its time to pay attention. The following post gives you a basic run down on how to implement an application that supports a very basic plug in architecture. The basic idea revolves around creating interfaces that your plug ins can use to interface with your main applications.Check out the post here.

Tuesday, June 19, 2007

1-800 Magic E1



With Red Vs. Blue about to post its 100th episode, I though you'd all like a new machinima series made by those folks over at Rooster Teeth, its call 1-800 Magic and is produced with the Shadowrun Game.

Monday, June 18, 2007

Writing your own Quicksilver interface

The Unofficial Apple Weblog, has post that deals with code and not random Apple tips and news. Which is note worthy in itself, but this post also deals with one of my favorite OS X applications. Quicksilver, check out the post (here) for details. In short its a quick run down of how to code interfaces and plug-ins for one of the most powerful utilities on the OS X application.

Sunday, June 17, 2007

Linux Tip: Getting more out of the Shell

As a long time Linux user, I'm pretty comfortable with the command line and love to find new ways to do cool stuff. I know that's not terribly descriptive but in my experience there is very little you can't do on the command line in Linux. So I was glad to find a post some shell tricks. Check out the post here. My favorite tip deals with how to parallelize loops.

Saturday, June 16, 2007

Coding Stuctures and Algorithms in Parallel Environments

Today's adventures in coding, has brought me to an interesting article on techniques and heuristics that are used when developing applications for a parallel environment. To all of you in the XNA world going why do I care? Well its simple the Xbox 360 is a parallel environment and for that matter so is any Machine that has multiple processors/processor cores. In any case it's a pretty good read and you'll probably learn about a few new algorithms, check out the article here.

Thursday, June 14, 2007

Avoid Booleans... are they bad?

As I surfed through the vast tubes of the inter-webs I often read about different programming conventions. Most of the time they're the same thing I've heard a thousand times, comment often, don't use magic numbers, etc.. Except for today where I stumbled upon an argument (check out post here) on why you should really avoid using Boolean values. In particular as parameters, the problem seems to lie with the fact that booleans aren't very descriptive. So for example if I had a routine that looked like the following code and used it in this manner is it obvious what that boolean value means?

Draw("Circle",True)
Draw("Circle",False)

Instead isn't it a lot clearer to use an enumeration value like the following?
Draw("Circle",ColorMode.Fill)
Draw("Circle",ColorMode.Outline)

Really this is a matter of preference, but I'll have to admit the latter version is clearer in what the parameter is triggering.

Formatted Code in HTML

If any of you noticed my last XNA post was in a formatted code form, I used a code to HTML converter, which I was able to generate with the help of a cool little macro that I found on Coding Horror. This is a macro for Visual Studio 2003 .NET but I'm pretty sure it'll work on other versions like 2005. Check out the post on the details on how to set this up for yourself.

Tutorial First Person Perspective in XNA

For those of you following the blog, you know that I've been dabbling a bit in the XNA Framework. For those of you who are wondering what that is, it a Microsoft framework that is specifically designed to help academics and hobbyists build home brew games that can work on the Windows or XBox 360 platform. Pretty Cool huh?

However, like all frameworks that aren't quite mature there is still a lot left to be desired by the XNA framework and its supporting IDE (XNA Express). Okay so most of my complaints are with the latter but I won't get into that now, instead I'm going to go over a quick and dirty way to create a first person camera perspective. Anyone who's played and FPS should have an idea of what I'm talking about.

NOTE: A lot of the code below is based on the How To Display a 3D Model, I posted about before. So I'd recommend checking that little tutorial before cutting your teeth on this one.

Now since I'm assuming you understand how to display 3D models in your code and have a working little demo of it I'm going to explain what you need to create your first person camera. The idea is very simple, in the 3D world you have objects, a camera (think of it as your eyes), and most importantly you have a point of reference for your view. Now I'm not very good at explaining the technical aspects of 3D graphics so just bare with me.

The idea of camera requires two things one of which is obviously the camera but in this case I'm referring to its position in 3D space. The second is its reference perspective which is a really fancy way of saying what direction in 3D space the camera is looking. This is important for this tutorial since its the reference position we'll be manipulating to create a pretty basic first person perspective. Still with me? Great!

So let's look at some code, more specifically the Draw routine in your XNA project, if you followed the tutorial you'll see something like this:


protected override void Draw( GameTime gameTime )

{

    graphics.GraphicsDevice.Clear( Color.CornflowerBlue );



    
// Copy any parent transforms.

    Matrix[] transforms = new Matrix[myModel.Bones.Count];

    myModel.CopyAbsoluteBoneTransformsTo( transforms );



    
// Draw the model. A model can have multiple meshes, so loop.

    foreach (ModelMesh mesh in myModel.Meshes)

    {

        
// This is where the mesh orientation is set,

        //as well as our camera and projection.

        foreach (BasicEffect effect in mesh.Effects)

        {

            effect.EnableDefaultLighting();

            effect.World = transforms[mesh.ParentBone.Index] *

                           Matrix.CreateRotationY( modelRotation ) *

                           Matrix.CreateTranslation( modelPosition );

            effect.View = Matrix.CreateLookAt( cameraPosition,

                                               Vector3.Zero,

                                               Vector3.Up );

            effect.Projection = Matrix.CreatePerspectiveFieldOfView(

                                          MathHelper.ToRadians( 45.0f ),

                                          aspectRatio, 1.0f, 10000.0f );

        }

        
// Draw the mesh, using the effects set above.

        mesh.Draw();

    }

}



What we're interested in is the line that looks like the following:




effect.View = Matrix.CreateLookAt( cameraPosition,

                                   Vector3.Zero,

                                   Vector3.Up );


Basically we're going to replace the Vector3.Zero vector with a reference vector that will dictate which direction we're looking. Make sure that you put the reference point in front of the camera, so basically on a shallower Z axis value




// Set the position of the camera in world space, for our view matrix.

Vector3 cameraPosition = new Vector3( 0.0f, 50.0f, 5000.0f );



//Put your reference position in front of the camera

Vector3 refPosition = new Vector3(0.0f,50.0f,4900.0f);


Now update the CreateLookAt call in your Draw routine




effect.View = Matrix.CreateLookAt( cameraPosition,

                                   refPosition,

                                   Vector3.Up );




Now all you need to do is setup some camera controls to update either the camera position or the reference position to create your first person experience. Basically all you need to do is subtract a movement scale value (this value dictates how quickly your perspective moves in the 3D world, think of it as look sensitivity) from the reference positions X axis to turn left and add a movement scale value to pan the camera right. In order to pan the camera up add your movement scale to the reference position's Y axis and subtract to look down. That's it! The CreateLookAt() call will keep your camera locked on your reference point giving you camera panning.



I should note that this isn't a true First person perspective since the camera pan to the right/left has a limitation, so basically this won't allow you to do a complete turn around. However you can break the reference plan and have it reverse your axis direction, basically right becomes left, left becomes right, etc.. You do this by having the camera position go past the reference positions, specifically on the Z axis, so basically have the camera's Z position be less than the reference position.

Wednesday, June 13, 2007

Creating a .NET installer using NSIS

If you've ever dealt with the Visual Studio .NET installer project, you'll notice its just a tad on the tedious side to update specific settings and just plain awkward to use. Since I come from a Linux background I like to script things, so on that note todays post is about how to create a scriptable installer thats compatible with Visual Studio builds. So check out this quick tutorial on how to build an installer with the nullsoft scriptable install system, check out the article here.

Tuesday, June 12, 2007

Red vs Blue E99



Here is the second to last episode of the "popular web series" Red vs Blue - The Blood Gulch Chronicles. The series will end with episode 100 which looks like its going to be a good one. Oh yeah, I would have posted Episode 98 but I couldn't find the embedded flash code and well I'm just lazy.

Monday, June 11, 2007

XNA Tutorial: Displaying a 3D Model

Today I've been working pretty heavily in the XNA framework and have started to incorporate 3D models into my games. Microsoft has decent tutorial on how to do this on their MSDN site, its even got a screen capture video, check out the link here.

Sunday, June 10, 2007

My Wishlist for Halo 3

With the Halo 3 Beta count down clock near the double zero mark, there are a few things I would love to see happen in the final version. So here is my wish list for Halo 3, most of which are pretty minor:

  1. Grenades should kill a lot of people not just the person thats directly on top of it.
  2. On the grenade note, the brute shot should kill in one hit with a direct hit, I'm tired of pegging people with three solid shots to get one kill.
  3. The assault rifle needs a larger clip, if I can kill two people per clip with the battle rifle why not the assault rifle?
  4. Stop kicking me out of the individual player carnage reports while joining a new match making session.
  5. The infamous black screen, don't know why this happens but its annoying as hell. I'm pretty sure this is will probably be related to the Beta, but still please fix.
  6. Have a few multiplayer modes that don't use the motion tracker. Some times this "feature" is over used and really doesn't add much to the game play.
  7. The spawn system, this is probably the weirdest system I've seen some times you get spawned at your base, some times with your team, other times right in the middle of a fire fight.

Saturday, June 9, 2007

The month of Apple news

Well as of late I've been surfing the inter-webs as I usually do and realized that Apple is going to be blanketing the major tech/gadget sites for the entire month of June. With WWDC and the iPhone launch just around the corner one can only assume that the tubes are going to jam packed with Apple news for pretty much the rest of the month.

Personally I'm a fan of Apple products, so I'm pretty excited, in particular I'm hoping Leopard (OS X 10.5) will bring new programming API's the OS X platform that will re-kindle my interest in developing for the platform. On that note I won't be one of the mac legion in line for an Apple iPhone, at least for a while, its not that I don't want one its just that I don't want to drop that much coin on a phone that I won't be able to develop for (for the time being) or at least hold and play with a bit. Along side WWDC and the iPhone, Apple has just updated their iTunes software that supports those new DRM free tracks, in the form of iTunes Plus.

If that's not enough news directly from Apple to keep those RSS feeds a-flown then I can only assume that analysis of the Steve Jobs and Bill Gates interview at the D conference will still be going for a few more days. And oh yes a new version of Parallels is out enticing even more switchers to come into the fold .So I'd say its a pretty good bet that Apple will be all over the internet for at least a month and expect the "Reality Distortion Field" to be in full effect. June your officially on notice.

Friday, June 8, 2007

Top 10: My Favorite Linux Applications

As of late I've been giving OS X and Windows much love since I use them everyday, but today I'm going back to my roots. Thats right ladies and gents I'm doing a top 10 of my favorite Linux Applications.

  1. Firefox (Web Browser) - I'd recommend this browser on any platform, but if you want to know the main reason why I keep going back to this piece of software. Extensions, this feature allows for a ton of additional functionality to be added to the browser with little effort.
  2. Gaim (Pidgin) (IM Client) - This has been on of my favorite IM Clients for a while, it works with AIM, MSN, Jabber, etc...
  3. VLC (Video Media Player) - VLC is the swiss army knife of video codec players, there is a good chance if it can't play your video file, then its probably DRM'ed or broken (some might argue there is no difference)
  4. Vim (Text Editor) - in the Linux world they say your either an Emacs or Vi user, I'm the latter. So I do all my text editing in one of the best text editors out there.
  5. IP Tables (Firewall) - you may think that because your using Linux your safe from attack but one should not surf the inter-webs without a firewall and IP tables gets the job done.
  6. Evolution (Email Client) - This e-mail client is the closest thing to a Linux alternative to Outlook.
  7. Open Office (Office Replacement) - Some time you just need a word processor, its not Microsoft Office but its a pretty good alternative.
  8. K3B (CD Burning Software) - I know Nero has a Linux version of their software now but I've been a fan of this software for a while. It's simple, easy, and works a lot like Nero.
  9. E-Term (Terminal) - if you run in Linux you'll want a decent terminal window client.
  10. GKrellem (System Monitor) - got to love fancy system monitor widgets.
Note worthy applications:

Democracy (IPTV Media Aggregator) - integrates RSS subscriptions and Bit torrent what's not to like?

The plus side to this list is that all of the software is open source meaning its free as in beer.

Thursday, June 7, 2007

Today's post a cover?



Every once in a while, you just get a song stuck in your head, in my case its a cover of Red Jumpsuit Apparatus's "Face Down".

Wednesday, June 6, 2007

Software Pick of the Day: Democracy

Bring TV to the Tubes! Today's pick has been a favorite of mine for a while now and if you a fan of video podcast or just watching video over the web, this little application is your new best friend. The Democracy media player has all the media play back capabilities of VLC, while adding functionality for RSS subscriptions, and a built in Bittorrent client. Since its an open source project, you get it on the cheap (free!). Did I also mention it supports just about every OS under the sun? Check it out here.

Tuesday, June 5, 2007

Microsoft threatens one of its own MVPs?

If your one of the many developers who use Microsoft's Visual Studio IDE, you probably have experience or at least are aware that Microsoft as a company is usually pretty good at supporting their third party developers with useful tools such as the Visual Studio Express Editions. The Visual Studio Express Editions (link here) are cut down versions of the Visual Studio 2005 development environment, which are meant to encourage hobbyist and students to develop for applications for their Windows environment. Today's story revolves around this concept and how Microsoft will risk its image with its third party developer community. The Register has a post up about a fellow Microsoft developer named Jamie Cansdale who developed the a third party plug-in for Visual Studio called TestDriven.NET which is a plug-in that allows users to setup and perform unit test within the IDE itself. Cansdale who is also recognized as one of Microsoft's MVPs (Most Valuable Professionals), which is like an award classification for exceptional developers in the community who contribute a good amount of their expertise to the Windows developer community. This is a big deal since the MVP's are the closest things to Window application guru's you can get without being on the staff of Microsoft.

So this all sounds good right? You've got big company supporting its development community with powerful development applications both commercial and free. Along with that you have a powerful development community that is also recognized with the company, you'd figure that Microsoft wouldn't want to mess with the good thing they've got going for it right? Well apparently not, big M, has apparently threatened legal action against Cansdale for his TestDriven.NET plug-in because it supports the express editions of Visual Studio (i.e. the free version). The reason Microsoft gave according to the Register, Microsoft is claiming (actually its some executive that apparently has too much time on his hands) that Cansdale's plug-in is in violation of the Visual Studio Express Edition's EULA, since it must have used undocumented API calls... or something to that extent (see the Register post for more details). Thus Microsoft is threatening legal action against Cansdale, check Cansdale developer blog for the most update details.

So you get the the gist of the story right?If not, here is the run down, big company develops product, encourages community to develop for their platform, the community does and their was much rejoicing. Until big company realizes that someone in that community that they recognize as a significant contributor releases a plug-in for one of their development products. All is still good plug-ins are fine, but wait why does is support our free tools? Big company can't have plug-ins extend their free software can they? Think of the loss in sales! Lets strong arm the developer into not supporting our free version of the software by threatening to sue.

So now that we're on the same page, here comes the rant.

First off kudos to you Cansdale, you've created something that the community can use, as I understand it even use to be free. I hope you still continue to support the development community you've long been apart of.

Alright now for the rant. Microsoft holds dominance in the computer industry for two main reasons one their tight with the OEM's which guarantee Windows (whatever version) will circulate in mass numbers (this will happen over time for Vista) and the second reason being that they've got one of the the largest (if not the largest) group of professional developers writing software for their system that everyone else uses. If you start messing with any of those core points your only asking for trouble. This incident won't be enough to stop your community from developing but if you continue down this path of upsetting your community, your company will fall like a ton of bricks. In the mean time you've done nothing to affect your bottom line, TestDriven.NET is a plug-in that your software supports. Don't like it? Don't support plug-ins! If all of this hasn't sunk in yet, here is the bottom line, you've angered at least one of your developers (an MVP at that!!) , tarnished your image some in the face of an important community, and you haven't even made/saved any money from it, so what was the point?

Sunday, June 3, 2007

Flash Pong 3D



Click to Play!


Since I recently did a re-creation of the 2D version of Pong in the XNA framework I thought it appropriate that I put up a web based one, which apparently has been around a while. In any case enjoy!

Saturday, June 2, 2007

Software Pick of the Day: Blender

Since I've been working playing around with Microsoft's XNA framework I've been on a game development kick. I don't think I'll be writing the next Halo but at least I'll have dabbled in it a bit. In any case I've been learning a little bit about 3d modeling, which would typically drive a person to applications such as 3D studio max or Maya. Instead I'm going to recommend a different piece of software that is very powerful and open source, which means you can get it on the cheap. Blender is an extremely powerful piece of 3D software that has a bit of a steep learning curve but will help you get the job done. I've been playing with this tool on and off for a few years now and I have to say that it may seem like a daunting interface, but so are most other applications of this type. Check it out here.

Friday, June 1, 2007

Quicksilver: Power Tips by the Mann

Like many Mac users I've discovered the Quicksilver application to be one of my new favorite applications. It give you so much within a few key strokes. I only wish that this was a cross platform application that ran on Windows and Linux. (I know there are close alternatives but they aren't as powerful or functional) So I thought I'd share this post by the Mann, that's Merlin Mann of 43 Folders fame, that posted some really powerful power tips for all Quicksilver fans. It's got a bunch of cool new things that I never thought of before like archiving your clipboard and making it quickly accessible with a few keystrokes is just amazing. Check out his post here for all of the good stuff. I'll be posting more tips and tricks as I find them, on that note send in your Quicksilver tips and we'll see if we can create a master list!