Software Design Engineer
| | Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|---|
| 28 | 29 | 30 | 31 | 1 | 2 | 3 | | 4 | 5 | 6 | 7 | 8 | 9 | 10 | | 11 | 12 | 13 | 14 | 15 | 16 | 17 | | 18 | 19 | 20 | 21 | 22 | 23 | 24 | | 25 | 26 | 27 | 28 | 29 | 30 | 1 | | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Search
Navigation
Categories
Blogroll
|

Wednesday, September 28, 2005
Funniest Algorithm Names
So I was looking at the list of algorithms page on Wikipedia, located at http://en.wikipedia.org/wiki/List_of_algorithms, the other day when I noticed a few funny sounding ones:
Blum Blum Shub – a pseudorandom number generator (named after the creators)
Bogosort – sort that generates random permutations until it finds “the one”
Blowfish – type of block cipher
Doomsday – calculates the day of the week of a given date (apparently each year has a doomsday, the day of the week on which the last day of February falls)
Leave a comment if you know of others :)
9/28/2005 1:29:45 AM (Pacific Standard Time, UTC-08:00)
Worldly Observations
SharpLogic Summer BBQ
It has actually been a couple of months since we all got together for some hamburgers and it turns out that some pictures were taken, unbeknownst to me at the time, while we played basketball at SharpLogic Arena.
I am actually quite proud of the first picture because I am able to successfully demonstrate my remarkable ability of holding a basketball over my head. Notice that both Ezju and Chris are fascinated by my feat.

After a long awkward moment of holding the ball over my head I decided that I should move closer to the basket for a higher percentage shot. Closer = higher percentage right?

So I moved closer to the basket and boldly lifted the basketball over my head once again. Unfortunately, I quickly ran into another problem, that being the backboard. You see, the basket is read-only from this side. Thanks to Ezju for pointing that out to me.
The highlight of the day came when Ed showed off his force powers as he slowly moved a levitating basketball towards the hoop without lifting a finger. Notice that Ezju is there to help supervise the action once again.

9/28/2005 12:40:03 AM (Pacific Standard Time, UTC-08:00)
Compelling News

Tuesday, September 27, 2005
Amusing Exception Message
I was recently working with GDI+ drawing when I found the need to modify a Pen's Width property. I often use the Pens class as a matter of convenience so my first thought was to simply write the following:
Pens.Yellow.Width = 3;
However, that did not work too well as I was greeted with the exception "You may not change this Pen because it does not belong to you." When I read the message I immediately realized that I had made a mistake, but the wording of the exception message also made me laugh a little. It sounds like the Drawing namespace is a little kid that doesn't want me to play with its toys, although in that case it would probably just say "Mine!"

In case you are wondering, the Pens class houses a number of static properties representing a number of colors, including Yellow. The static Yellow property will create a new immutable Pen object with width 1 when you first use it and then store it in a hash table for future use. Future calls to Pens.Yellow will get the same Pen object that was previously stored in the hash table. This is done because GDI Pens are a limited resource that needs to be conserved.
9/27/2005 11:11:15 PM (Pacific Standard Time, UTC-08:00)
Shrewd Programming

Wednesday, July 27, 2005
Return Me.PortlandCodeCampExperience
Portland Code Camp v1.0 was unleashed July 23 and 24 and I am happy that I was able to attend. I went to a number of sessions covering the following topics:
• Visual Studio Tools for Office (VS 2005)
• Intercepting API Calls
• ASP.NET 2.0 Web Parts
• SQL 2005 Development
• .NET Windows Forms Tips & Tricks
• Extensible .NET Applications
• ASP.NET Tips & Tricks
• Forensic Development
• Versions Gone Wild
Proof I was there (not that anyone really cares):

Now admittedly some of the content was over my head, such as in the Intercepting API Calls session, but that does not mean that I did not take anything away from it. When security experts or DB administrators start talking about their specialties and glossing over many of the prerequisites, it is not hard for me to get a little lost. This session could have used more demos, but I understand that the content was in the nitpicky details which take a lot of time to actually show.
Tips and Tricks sessions are always nice because you can cram so much information into a single hour time slot. These types of sessions are good because they present seeds of information that you can take with you and use later. Details are not as necessary here, but general ideas on where to start with a given problem can be very valuable.
The Extensible .NET Application session was essentially a case study which focused on a specific solution. While it would be nice if the entire range of possible design choices could be covered in more detail, I realize that only so much can happen in one hour. It was nice to get into the details of the code and listen to some of the gotchas that were found during development of a particular solution.
Braindump for other Code Camp related thoughts: donuts, lots of donuts… Seattle to Portland traffic and the reverse = System.OverflowException… Subway for breakfast, lunch, and dinner… Portland has enough bridges…
7/27/2005 1:03:19 AM (Pacific Standard Time, UTC-08:00)
Compelling News

Thursday, July 21, 2005
Napoleon Dynamite and XXX Stole My Thunder
Have you ever felt like you had a good thing going before someone famous decided to give it an entirely new meaning altogether? Believe it or not, it has happened to me but I will not be appearing on Oprah anytime soon.
Here is the story. A few years ago I received a nice orange t-shirt from a family member as a gift, and it said something like “XXX Workwear” on it. So I happily wore it around for a few months, and then Mr. Diesel starred in a movie called XXX. Needless to say, everybody started to make comments when I wore the shirt, which isn’t bad or anything, but I felt the obligation to tell people, “I HAD THE SHIRT BEFORE XXX EXISTED!”
More recently I had a white custom t-shirt made that has black rings around the sleeves and collar and says “I Support Rabid Llamas” on the front. My design even used a nice red font to stand out. Now those of you familiar with the movie Napoleon Dynamite will know about the “Vote for Pedro” t-shirt. Guess what? I made the shirt before the movie was out! When I wear my shirt I am guessing that people think I am copying the movie or something, which is far from the truth.
I am kind of amazed that this situation has happened to me twice in the last few years, and even more surprised that it has been over a t-shirt. Oh well, let those darn movies ruin the meaning of my wardrobe. At least we have all learned something from the movie XXX – you can deflect a missile with a serving platter!
7/21/2005 12:18:04 AM (Pacific Standard Time, UTC-08:00)
Indiscriminate Complaints

Wednesday, July 20, 2005
Funniest .NET languages
What are the funniest .NET language names out there? Here are a few that tickled my funny bone. By the way, I ran them by my wife and she authenticated their funniness. While I do openly poke fun at the names, it is all in good fun. No harm came to the languages used in the making of this posting.
Boo
Common Larceny
Objective Caml
Hotdog
Tachy
TickleSharp
7/20/2005 11:30:01 PM (Pacific Standard Time, UTC-08:00)
Shrewd Programming

Tuesday, June 28, 2005
Visualization Tools for Computer Science Education
One of my favorite subjects within the realm of Computer Science topics is computer graphics and visualization. Part of the draw, especially early on in my school career, was the instant gratification that could be found in implementing graphics code. You get to directly see the results of your labor plus you can easily share it with others who do not understand the implementation details.
There are basically three types of learning methods – auditory, visual, and hands-on. Of course, most people use a combination of all three throughout their life. I am not sure if I am more hands-on or visual, but I am certain that I do not learn best through auditory means. Therefore, unless I am somewhat familiar with a topic to begin with, lectures seem like a waste of time to me, at least the prototypical theory-only college lectures. I take notes, but I have no chance of “getting it” until I sit down and have some hands-on time with the material.
I think that students could benefit greatly from tools that help visualize core computer science topics such as search algorithms, recursion, data structures, etc. Unfortunately, for whatever reason, my instructors did not know that these types of applications existed, and neither did I until recently. There are some very sophisticated scientific and data visualization tools out there, but I am currently just referring to fairly simple instructional tools with good interfaces.
Here is a link to a J# application for visualizing sorting algorithms, recursion, simple image viewing, and an oscilloscope simulation. It allows you to even test your own algorithm implementations and see how they perform (Visual J# .NET Product Team, Microsoft).
https://www.mainfunction.com/DotNetInAction/Technologies/display.aspx?ID=2710&TypeID=2
The next link has some Java applications that help visualize automata and formal languages (Susan Rodger, Duke University).
http://www.cs.duke.edu/~rodger/tools/tools.html
Here is a well written paper titled “Helping Learners Visualize and Comprehend Algorithms” by Hansen, Narayanan, and Schrimpsher.
http://imej.wfu.edu/articles/2000/1/02/index.asp
I am sure that there are more visualization tools out there. So are these tools being used at the high school or even undergraduate college level? Aside from the elected computer graphics classes that I took in college, I do not remember having an instructor utilize visualization software in any way.
6/28/2005 2:16:14 AM (Pacific Standard Time, UTC-08:00)
Worldly Observations

Saturday, May 28, 2005
.zip file problems
There seems to be a few different species of .zip file out there in the wild now. I have run into problems decompressing some .zip archives recently and decided I should look into the problem further. According to one article from the September 2003 PCWorld, http://www.pcworld.com/news/article/0,aid,111772,00.asp, the problem with incompatibility typically comes from proprietary encryption schemes being used. Even implementations of the AES encryption scheme can vary by .zip software package.
Unfortunately, I have run into situations where I get a .zip file from someone else and the Windows .zip software states that there is an error with the file. The problem is not encryption. I have not found the root problem yet as using another third-party tool is usually successful at unzipping problem files. Next time I run into the problem and the file is not multiple gigabytes in size, I will set it aside for a more detailed investigation.
I typically use the .zip implementation that is provided by Windows XP for convenience and compatibility reasons. Since I rarely have a need to encrypt files then this simple implementation is just fine. The XP .zip implementation uses compression method “deflated” from the .zip specification and “normal” for the compression sub-type. These options should make XP .zip files compatible with all other .zip software, but at the same time I realize they are not all that modern or optimal.
Another interesting thing that I learned while skimming the specification for the .zip format was that 4GB is the upper limit for file sizes. Definitely something to keep in mind when working with large files like Virtual PC images.
5/28/2005 1:26:22 AM (Pacific Standard Time, UTC-08:00)
Indiscriminate Complaints

Tuesday, May 10, 2005
Rebates - a hideously complex marketing scheme that, although quite ingenious, sucks for consumers.
The word “rebate” invokes a variety of primal emotions, including fear, anger, hunger, and an itchy ancient cortex. It can also lead to a number of physical ailments including hair loss, old age, arthritis, paper cuts, and sometimes even lockjaw. While the cure may be many years away, support groups may be able to help. If you know of any, let me know.
I think that many consumers will buy a product over another similar one because of a rebate offer. Even consumers that have been burned by the rebate system before will repeat their behavior, hoping that this time they will win the lottery. They think that maybe there have been enough complaints by consumer groups since their last rebate attempt that it will be a smoother process now. I have received a rebate before, but it did require a few phone calls, emails, and general fuss to get it.
For me, there may be a certain monetary threshold to cross which forces me to take action like many others. I no longer buy products just because they have a small rebate attached to them. I know that it is not worth my time or aggravation. The sad part is that I am still slightly aggravated because I know that the business marketing teams are winning. Instead of playing the rebate game to save money, I think I will start a coupon collection. Just by themselves they are worth something like 1/1000 of a cent.
My most recent rebate redemption attempt starts at Staples. I purchased a wireless USB Ethernet adapter for my laptop and gathered all of the required rebate paperwork. Now, at this point, I was not sure if I was going to go through the trouble of filling everything out and sending it in. However, they now have this new rebate submission process code-named Staples Easy Rebates where you can submit for rebates online with no paperwork or UPC required for mail in. The submission process was very easy, except for the fact that it took three attempts to enter my information. After my submission I received this prompt email notice:
Thursday, March 31, 2005 2:25 PM
Subject: We got it. And soon you will get it back.
Thank you for submitting your rebate request(s) through Staples Easy Rebates.
We have received rebate information for the following product(s):
NETGEAR 54MBPS USB 2.0 ADAPTER
We will begin processing your request(s) shortly.
Much to my surprise I received this email next:
Wednesday, April 13, 2005 6:42 PM
Subject: The check is in the mail! (Really.)
Thank you for submitting your rebate request(s) through Staples Easy Rebates.
We have processed your rebate information for the following product(s):
NETGEAR WG111 54 MBPS WIRELESS USB ADAPTER
We have mailed out your rebate, so check your mailbox! You should receive it shortly.
Thank you again for shopping Staples and for using Easy Rebates!
They must have some very excitable people writing their automated emails! I especially like the way they worded their subject line in their last email to me. Unfortunately, I have not received the rebate check that is currently circulating in the mail system, desperately seeking to get to Washington, hoping dearly to find Redmond, itching to locate my street, and we will see if it ever arrives in my mailbox.
5/10/2005 9:56:05 AM (Pacific Standard Time, UTC-08:00)
Indiscriminate Complaints

Saturday, April 30, 2005
Skype (VOIP Internet Telephony) API is available for developers
In case you are unaware, Skype is an Internet telephony (VOIP) application that provides free voice communication, chat, and file transfer capabilities in an easy to use, cross-platform package. For fee, Skype allows users to call regular phone numbers and allows regular phones to call into Skype.
The popularity of Skype has grown rapidly over the past two years since its introduction for a number of reasons. Although I do not plan to go into many technical details here, I will say that Skype is a well engineered piece of networking magic. It takes full advantage of modern decentralized peer-to-peer technology to deliver end-users a highly responsive system for communication. The user interface is very simple to use and Skype is well known for simply working out of the box with very little configuration.
Skype released an API for the Windows platform at the end of 2004. This alone sets it apart from a lot of the other big players like MSN and AOL. As a developer, having an API available with this much power is an exciting thing. If you are interested in taking a look, check out http://www.skype.com/community/devzone and look for the documentation and example code.
There are a number of third-party applications and utilities that have been developed for Skype. You can check some of them out at http://www.skype.com/community/devzone/doc.html. Skype also recently announced a contest for developers and they are calling for utilities, development tools, and other applications to help showcase their product. After taking a look at their example C++ code I can see why they need some help with developer tools. Here is a link to the competition. http://www.skype.com/community/devzone/apicomp.html.
So long, and thanks for all the fish.
4/30/2005 12:05:07 AM (Pacific Standard Time, UTC-08:00)
Compelling News