Tuesday, February 14, 2012

June Rose Games

Wow, it has been a really, really, really long time since my last post. In my defense, I have been very busy. Since my last post, my wife and I had our first child, and are now expected our second this April. It is amazing how much you lose track of time once you have children. Plus, work has been crazy busy.
Oh, and there is one more reason why I have not had much time for blogging (which brings me to the point of this post), I have launched a side business – June Rose Games.
Our first game – Photo Challenge is now available in the Windows Phone marketplace. If you have a Windows Phone, check it out. It is free, so what do you have to lose? :-) If you do not have a Windows Phone, no need to worry, the game will also be available for other devices in the near future. The game is of the photo difference finding genre, here is a teaser screen shot.

Tuesday, March 17, 2009

Verizon Network Extender

I was really stoked when I heard that Verizon was going to release the Verizon Network Extender, a femtocell device for directing cell phone traffic over your broadband internet connection. I live in a very rural area, and cell service at my house is non-existent. When I decided to order the device, there were not many user reviews on the web yet, however there does appear to be a few on CNET now. I decided to give it a try anyway, because as an existing Verizon Wireless customer with no service at home, it seemed like an obvious choice.

The Extender has been hooked up for a few days now, and so far it has been working great. Installation was simple, and phone calls have been crystal clear. My phone went from literally no service to four bars. The signal is strong throughout the entire house, including the basement and garage. If you’re interested, Verizon has a helpful installation video here.

If you live in cellular ‘dead zone’ like I do, I highly recommend the product.

Friday, January 9, 2009

Visual Studio and Auto Toolbox Populate

When I began working for my current employer, I joined the largest .NET software project that I have worked with to date. One of our standards is that virtually every UI element is contained within it's own user control. This makes for great re-usability however, it causes increased build times because each build caused the controls within Visual Studio's toolbox to be refreshed. I was told that there was no way around this, and I just assumed that this was correct. However, recently during what felt like a rediculously long wait for a build to complete, I decided to research the issue. Wouldn't you know it, I stumbled across an old post from ScottGu that mentioned an AutoToolboxPopulate setting (along with lots of other useful information). Setting "Tools --> Options --> Windows Forms Designer --> AutoToolboxPopulate" to False prevents the Toolbox from being populated with each build, and has dramatically improved my build times.

The only drawback to setting this to False, is now your user controls will not automatically appear in the Toolbox. At first, I found myself enabling/disabling the setting depending on if I needed to work with UI elemenets, or not. But, then I discovered a function under the Project menu, "Refresh Project Toolbox Items". This allows you refresh Toolbox on demand, instead of with every build. Problem solved.

Saturday, November 22, 2008

Tile Fill Addin

I just finished up a second Paint.NET addin. The first is available here.














This addin fills the current image with a tiled version of another image.Just copy an image to the clipboard, create a new image that is larger than the first, and run the addin.
For example, start with something like this:
And the tiled version could look like this:





It can be useful for creating textures, or patterned backgrounds.

Downloads:

Friday, November 21, 2008

Radius Fill Corners Update

I have gotten some feedback from the Paint.NET addin that I recently created. Most of the feedback has been positive, except for strange results occuring when a large radius is selected. This issue is related to how the code determines how to color each pixel for the image. Basically my calculations fall apart if the radius greater than a quarter of the height or width of the image. I knew this would be an issue, but decided not to restrict the radius size because I did not want to limit users who were working with large images.

I now realize that it is better to restrict the radius, but base it on the current image's size. This way you should always get the desired results.

Here are updated links:
source code
addin dll

Sunday, November 9, 2008

New Paint.NET Effect Addin for rounding the corners of an image

After searching through existing Paint.NET effect plugins, I did not find exactly what I was looking for (quick and easy way to round off the corners of an image, like the one below), so I decided to create one.


























With the help of Sepcot's template and tips from BoltBait’s site, the process was not too difficult, and it was an interesting learning experience. Most of the code is pretty similar to other examples, except that I decided to use some WPF libraries to help make the math calculations easier. The source code is available here, or you can just download the DLL for your personal use. Due to the WPF use, the .NET framework 3.5 is required for the effect addin to function. If you need help deploying the addin, there are tips here. Once you have got the addin working, just select the entire image and run the effect with the desired settings.

Tuesday, November 4, 2008

Paint.NET community

I used to spend a lot of time in Adobe Photoshop, but as the years have progressed I have spent more time coding, and less time performing graphics work. This eventually led the purchase price of Photoshop to be unjustifiable considering the limited amount of time I would spend using it. However, I still had a need for the occasional image manipulation, re-sizing, or touch-up. This is when I discovered Paint.NET. It is a great tool for the price (free!) and is very popular (so, you probably already know about it)...


What I had not realized until this week, is how great the community support for Paint.NET is. The application always just did what I wanted, so I had not taken the time to search for tips, tutorials, addins, etc. This week, I had a need to perform some more advanced task in Paint.NET, and found myself missing Photoshop’s capabilities. This lead me to search for some better ideas on how to accomplish the tasks I was working on. I quickly found out that there is a great community surrounding Paint.NET. There are tons of helpful blog posts on the net, and the Paint.NET forums are full of helpful users, tutorials, and free effect addins by developers such as Michael Sepcot, BoltBait, and Ed Harvey. This makes Paint.NET an even more useful product, and I’m looking forward to diving deeper into some of these community resources.

Wednesday, October 1, 2008

Remote Desktop Copy & Paste problem

I am consistently amazed by the wealth of information available in the blogosphere. Here is an example:

I spend a lot of time working in Remote Desktop sessions, and lately I had noticed that quite often I would lose the ability to copy and paste text between my local machine and the Remote Desktop session. This finally became annoying enough that I decided to research the issue. After a quick Google search, the first link took me to a blog post by Pinal Dave that explained how to solve my exact problem. The summary is that the problem can be solved by following these steps in the Remote Desktop session:

1. Open Task Manager
2. Kill the “rdpclip.exe” process
3. Restart the process by using Start >> Run >> rdpclip.exe

This simple solution has saved me a lot of aggravation.

Wednesday, September 24, 2008

XNA Tutorials

I have wanted to experiment with XNA ever since Microsoft released it. Well, over the last few weeks I have finally had enough semi-free time to dive into some of the code. My eventual goal is to create a racing game, so when I discovered that there is a Racing Game Starter Kit I could not help but start by hopping straight into its code. However, I quickly found out that the Starter Kit was going to be overwhelming without picking up some fundamental gaming code knowledge first. The next step was to check out the 2D and 3D Game tutorials. This turned out to be a much better starting point, and I now feel prepared to move on to some more advanced learning. Now, I just have to hope that Xboxs are still available for retail sale by the time I actually complete a real game. :-)





Tuesday, September 9, 2008

The elusive Orca download

Recently, I was having problems with a Windows Installer Merge Module and turned to the web for help. Upon searching, I found a suggestion to use Orca to edit the .msm file. The site simply stated to download Orca from Microsoft, so I searched MSDN for Orca and found that it is only available in the “Windows SDK Components for Windows Installer Developers”. This sounded simple enough, so I downloaded the SDK. After a brief download, I began the installation process and was horrified to find that it was going to require another 2GB+ download for a full installation. I was in a hurry, so I de-deselected the samples and documentation, which brought the install down to a more manageable size.

After the install completed, I happily navigated to Start->Microsoft Windows SDK -> Tools. Hmmm, no Orca in sight... I was just about to bite the bullet and run the full installer when I came across Aaron Stebner's blog post explaining how to get Orca, complete with a direct link for the software.

This saved me a lot of wasted time waiting on the download, just to use one small tool.

Monday, September 8, 2008

Browser shortcuts

Lately I have found myself searching for deals on used parts for our Jeep. As part of this routine, there are several sites that I navigate to, typically opening them in multiple browser tabs. As lazy as it may sound, I got tired of right-clicking items in my favorites list to open the site in a new tab. I decided it would be easier if I had a shortcut for opening all of the sites at once. I know that IE allows you to set multiple home page tabs, but this was not what I wanted because I don’t want the sites to load every time I open a browser.

I decided that a batch file might be an easy solution, and began researching IE’s command line options. While IE, does have a nice selection of options, unfortunately I could not get IE7 or IE8 to yield the results I wanted (the sites were opened in new windows instead of tabs). However, I got exactly what I wanted with Firefox (not a big issue because I routinely switch between the two browsers anyway). I just created the batch file in Notepad and saved it as a .bat file on my desktop. Here are example contents of the file:

cd\"Program Files (x86)\mozilla firefox\"
start firefox.exe http://www.cnn.com http://www.msn.com http://www.yahoo.com


After creating the batch file, it dawned on me that it would be easier to create a copy of my Firefox desktop shortcut, rename it appropriately, and then simply modify the shortcut’s target with the desired sites, as shown here:


Both methods are a great way to quickly navigate to a group of sites.

Thursday, September 4, 2008

Strings....

Today I was doing some research on the performance of strings in .NET, and as I started a Google search, I noticed in the dynamic search results that there are over a million more results for String Theory than String Bikini. There are obviously too many people using the web for serious work, and not enough using it for more perverse reasons. :-) Just some humor, to start the day.

Friday, August 29, 2008

Internet Explorer operation aborted


For several weeks now, I had been experiencing a problem in Internet Explorer (and just had not had time to research, or correct it). Almost every time I navigated to a page on MSDN, the page would display briefly, I would get an “Internet Explorer cannot open the Internet site http://msdn.microsoft.com/xxxx. Operation aborted” message, and then the page would be switched to a navigation error screen. I quickly discovered that pressing the back button would allow the page to display correctly.

Since I work with a lot of Microsoft products, and spend a lot of time on MSDN, this was becoming very annoying. So, today became the today to try and solve the problem. It was occurring on my work PC, but not my home PC. Both are running Windows Vista and IE7. Since one was ok, and the other was not, I thought the problem probably caused by an IE security setting. Rather than digging through IE’s huge list of security options for possible culprits, I decided to search the web to see if anyone else was experiencing the problem.

First, I found this discussion listing a bug in sitemeter.com that had caused issues on a lot of sites; but this bug had already been corrected. The thread also suggested IE addins as a possible cause, but this was not the cause for my issue, either. Another suggestion in the thread was to Reset IE’s options, but this did not fix it for me either. There was also a link to a blog post describing how this error is typically caused by JavaScript manipulation of the HTML DOM. The post stated the problem has been corrected in IE8. Soooooo, I am now running a beta of IE8, which seems to have corrected the problem. Hopefully, it does not introduce new problems!

On my next visit to MSDN, I was promptly greeted with a JavaScript popup message that Microsoft was taking a survey(which was not appearing previously). So, it looks like the survey was the root of my problem, but I have not determined why it occurred on one PC and not the other. At least IE8 seems to have solved it, for now.

Tuesday, August 26, 2008

VMWare Beeps

The other day I was doing some testing in a VMWare virtual machine, and kept getting an annoying beep every time a dialog box was displayed. I changed every sound setting I could find, but could not get rid of the beep. So, it was time to begin google’ing. I found several recommend solutions that involved adding “mks.noBeep = TRUE” to a .ini file, but it seems that the file name, location, and syntax vary slightly depending on your OS and version of VMWare. Ultimately, the easy solution that worked for me was to:

Open Windows Device Manager on the virtual machine.
Go to the View menu and pick “Show hidden devices”.
Go to Non Plug and Play Devices; there is now a Beep item that can be disabled.

Problem solved.

Experts Exchange and Google Cache

I really hate the site experts-exchange.com. It seems that no matter what I am searching for, this site appears in the results list. Just when you think you have found the page with an answer to your question, you find out that you have to buy a membership to see the details of the page. Most of the time, I just skip the search result if it is on experts-exchange, but I occasionally overlook the domain name and find myself frustrated again by the site. I suppose that I should just “suck it up” and buy a membership to the site, but I just can’t bring myself to do it, considering how much information is freely available on the web.

Today, a co-worker shared an interesting trick with me. It doesn’t always work, but most of the time, you can click on Google’s cached version of the page and the answers will appear. Nice!

XML Comments and Nullable data types

I had not worked with XML comments until joining my current employer.  The syntax is pretty simple, and Visual Studio Intellisense handles most of it, but I occasionally find cases where the correct syntax is not obvious.  For example, I needed to change an int variable to a nullable int.  I updated the variable definition to int?, and changed the XML comment <see cref="int"/> to <see cref="int?"/>. This resulted in a compiler warning: “syntactically incorrect cref attribute 'int?'”.  I searched, but could not find a complete listing of the correct syntax for all data types.  Eventually, I found enough examples to learn that nullable data types are listed as Nullable{type name}, like <see cref="Nullable{DateTime}"/>, <see cref="Nullable{Int32}"/>, <see cref="Nullable{Bool}"/>, etc.

Thursday, August 14, 2008

Shortcuts revisited

Two days ago, I posted about some of my favorite keyboard shortcuts. Coincidentally, yesterday I was catching up on my podcast listening, and Hanselminutes #125 is an interview with Saqib Shaikh, a blind developer with Microsoft Consulting Services in the UK. Without sight, Saqib is unable to use the mouse, so he must make extensive use of keyboard shortcuts. I have trouble remembering twenty, or so, shortcuts and can’t imagine what it must be like to need to remember them for almost every task. If you haven’t heard the podcast, check it out. It makes you think about the overall development experience, and you might even pick up a few new shortcuts (how many people knew that Ctrl+Shift+Esc opened the task manager?).

Tuesday, August 12, 2008

Favorite Shortcut Keys

Like most developers, I make extensive use of shortcut keys. However, I seem to only have the mental capacity to remember 20-30 at one time. So, I have a tendency switch them in and out of my regular rotation depending upon what type of project I am working on. Here are the ones that I get the most use out of:

Visual Studio
(Note: some of these are different dependent upon your installation settings)
Control + g : Goto line number
Shift + Alt + Enter : Toggle full screen mode
Control + Space : Launch intellisense
Tab : Accept intellisense selection
F5 : Start debugging
F6 : Build
F10 : Step Over
F11 : Step Into

Windows
Windows Key + f : Search for documents
Windows Key + r : Run
Windows Key + m : Show the desktop (minimize all applications)
Alt + Tab : Toggle between applications

Most applications
Control + s : Save
Control + c : Copy
Control + v : Paste
Control + z : Undo
Control + n : New document
Control + x : Cut
Control + a : Select all
Control + h : Replace
Control + f : Find
Control + Tab - Toggle between documents

Thursday, August 7, 2008

iPhone-a-licious

Up until now, I hadn’t jumped on the iPhone bandwagon. However, yesterday I was listening to an automotive podcast, and they mentioned a new iPhone app called Dynolicious. You install the software on your iPhone, and then place the phone in your car while driving. The software can then be used to calculate the car’s performance statistics, such as 1/4 mile ET’s, 0-60 times, horsepower, etc. While, there are devices (such as the G-Tech) that can calculate these statistics, they can’t be used to make calls, take pictures, play music, surf the web, etc., etc., etc.

Hearing about this software was one of those “blow your mind” moments for me. It is an amazing application of the iPhone’s technology, and also made me think about just how powerful the iPhone is. It will be interesting to see what other creative applications will become available for the phone. Gaming possibilities could be a huge use of the technology. While it’s not exactly a Nintendo Wii, tapping into the accelerometers could lead to some exciting gaming on the small screen. After a quick look at the iPhone app store, and it looks like there are already a few games that utilize the accelerometers, but it could be fascinating to see what else is available in the upcoming months.

It might be time to go phone shopping this weekend….

Tuesday, August 5, 2008

Quantity leads to Quality…

A few days ago Jeff Atwood wrote a blog post about the parallels between software development and the advice for artists in the book “Art & fear”. This quote sums up the basic idea:

“When it comes to software, the same rule applies. If you aren't building, you aren't learning. Rather than agonizing over whether you're building the right thing, just build it. And if that one doesn't work, keep building until you get one that does.”

I found this to be an interesting post because I had recently came to the same conclusion. At my current employer there is a senior developer who is effectively my mentor (we’ll just call him Frank). He insists that all code should follow his standards, which is ok because they are typically good standards; but the whole thing can be a little intimidating. During my first few weeks at the employer, I had a difficult time completing any work because I was constantly worrying about “how would Frank handle this task?”. Once I overcame this, and just let the code flow, I have been much more productive and have learned more by writing the code as opposed to trying to over-analyze the existing code base.

Jeff suggests that the same idea of “Quantity always trumps quality” applies to blogging as well. As an aspiring blogger, I guess I should take that message to heart….