Monday, January 11, 2010

2010: The year of the eReader?

The 2010 Consumer Electronics Show is over now, but there were some pretty cool devices on display (best of CES awards). While many people are gawking at Google’s Nexus One phone or Apple’s tablet pc, I see eReaders as coming into their own this year as the technology matures, the prices go down, and more content becomes available. I almost bought one for Christmas, but just didn’t feel that they were quite ready yet (Non-color displays, limited books, no web browser, etc).

Today on channel9 there was an interview with Ray Kurzweil, who has been working on electronic reader technology for a long time now and is pretty good at predicting where technology will take us in the future. His company is releasing an eReader platform, but instead of focusing on the hardware they instead built software and algorithms that utilize existing hardware to provide a great electronic reading format. It is based on XPS (Microsoft’s competitor to PDFs) and can be used to merge audio, video, and interactive content into a electronic book format. The Blio software is set to be released in February, but I highly suggest checking out this video to see what’s coming:

 

Get Microsoft Silverlight

Thursday, December 31, 2009

Nova video about evolution, genetics, and nature

I had the day off from work today and decided to catch up on some of the TV shows recorded on my DVR. There was a new Nova episode called What Darwin Never Knew that was 2 hours long, but it really did a good job at covering Darwin’s theory of evolution as well as the advances that have been made in the last 150 years from analyzing DNA, genes, and “switches” (I believe this refers to the Epigenome). Anyone interested in science, genetics, or nature should really enjoy this episode. I also couldn’t help but make correlations with many computer science topics (flow control statements for one) and was tickled pink when the final segment talked about using computers to statistically determine what makes humans different from other species. I highly recommend watching the full video online here:

http://video.pbs.org/video/1372073556

Tuesday, October 27, 2009

Computer Science at the University of Utah: a look back at team software projects

Joel Spolsky wrote a piece today about Capstone projects and time management for Computer Science students and the new UCOSP program to help get undergraduates more involved in open source projects. While I completely agree with the inefficiency of long term deadlines and the UCOSP program sounds great, I feel like I need to write a bit to defend my recently acquired bachelors degree from a top 50 ranked university.  About 18 months ago I graduated from the University of Utah with a degree in Computer Engineering (CE), which is basically a combination of Computer Science (CS) and Electrical Engineering (EE). It took 6 years to complete (also worked part time), and during that time I was exposed to many different programming languages (Scheme, Java, C, C++, C#, SQL) and a diverse array of subjects ranging from Survey of Jazz and the History Rock and Roll to Discrete Mathematics and, yes, Linear Algebra. While not all of the coursework was directly related to real-world work conditions I firmly believe that the mix of theory and practice made me well prepared to work in software development anywhere from embedded systems to “cloud computing”.

While other universities may not emphasize team programming, many of the CS faculty at the University of Utah tried to simulate real-world situations as often as possible. The Team Software Engineering class that I took from Robert Kessler in spring 2006 was my first experience solving a non-trivial problem using Visual Studio 2005 and Team Foundation Server. In that class teams used source control and project tracking to design and create a location aware communication library for PDAs, laptops and desktops using WiFi and IP network rule-based location detection. I also learned a lot about MSDN, web services, the software development process, and systems integration, and it was probably one of my favorite classes. The courses have changed a lot since I took them, but it is my understanding that the concept of building software in teams using real tools is still very much a part of getting a CS or CE degree at the University of Utah.

When it came time to complete my degree I had the option to do a theses or a personal project, but like most students I ended up doing a team based capstone project in cooperation with industry sponsors instead. CS students take a semester long Software Engineering Laboratory class in which they submit bids for projects sponsored by local companies. For the CE capstone experience students can team up with EE students to be part of the Engineering Clinic Program. Both projects start with a semester long class dedicated to project planning with a faculty advisor and improving professional written and verbal communication skills by working with the CLEAR group from the College of Humanities. The Engineering Clinic then has a team of 4-6 students spend a full 2 semesters working with an industry sponsor to solve a real world problem using real world tools. The project culminates in a 15 minute presentation for each student at the ECE Open house and a team written paper to be submitted to the IEEE student paper contest. The team that I worked with had a Google Code project site and even ended up presenting at the 2008 Flash Memory Conference in Santa Clara, CA.

The CS department also has an Industry Forum class that is “designed to expose students to topics that are not discussed in depth as part of the normal curriculum, but that are likely to be important after they graduate.” Each week they bring in speakers from software development companies or large industry players to help prepare graduates for the real world. They also have the Organick Lecture Series and various Colloquiums that bring in distinguished members of the computer science community. While these classes and events are not part of the normal curriculum, most ambitious students will recognize their value and attend as many as they can.

To summarize, during my 6 years at the U of U I can think of at least 4 significant team based projects that helped introduce me to standard software development techniques such as system design, source control, project management, team collaboration, and end user documentation. Some classes such as team software engineering or database systems provided the infrastructure for students to use (IE.. TFS, SVN, Oracle, Wiki, File server, Virtual Machines, etc) but others took a DIY approach and let students choose which technologies they wanted to use. I gravitated towards DotNetNuke, SVN, and Google Code, but I would have jumped at the chance to use hosted products like FogBugz if cost and implementation were not prohibitive. Also there was a very large emphasis placed on written and verbal communication skills, for which I will be eternally grateful! The more time and energy that you put into the education, the more you are likely to get out of it, but at the University of Utah there is ample opportunity to get a world class Computer Science education.

Monday, October 5, 2009

IronPython Texas Holdem Poker Spreadsheet and other .NET Poker applications

Earlier this year I created a Monte Carlo Texas Holdem Simulator using an IronPython powered spreadsheet in Resolver One. The main goals were to learn IronPython, test how well it worked for creating complex spreadsheets, and enter a few of those spreadsheets into the Resolver One competition. Well I can honestly say that I exceeded even my own expectations on all three accounts, and it didn’t stop there either. After learning IronPython I started using it for the occasional random “Hey could you ...” tasks that get assigned to me at work, and I found a few other interesting uses for Resolver One as well.

I also found that I really like coding contests! After the Resolver One competition ended, I came across another .NET coding contest sponsored by the International .NET Association (INETA) that was trying to promote reusable components from various vendors. I submitted Windows Form and Windows Mobile versions of the Texas Holdem hand evaluator, along with a short video clearly showing why my younger brother is a professional radio DJ and I am not :-P I didn’t have enough time to get everything that I wanted to into the new versions, but it was still enough to get an honorable mention and score a few free licenses for .NET components from the sponsors.

Shortly after the INETA contest, I found a Silverlight contest sponsored by Telerik. Since I learned IronPython in the Resolver One contest I figured that this was a great excuse to spend a week or two learning Silverlight, WPF, and XAML. While I didn’t end up winning the contest, I did get a license for their Silverlight controls and was able to create a pretty cool Silverlight 3.0 Texas Holdem Monte Carlo simulator that runs entirely in the browser. I also organized all the source code and various versions of the application into one website for all your Poker needs.

I have had a few people ask about how to modify the poker spreadsheet for different purposes, such as analyzing the outcome for specific hand groups or being able to include multiple hands in the player’s pocket card set. The original spreadsheet was designed to show the hands in a specific layout so it is not very easy to customize. Instead I made a new spreadsheet that uses a standard column layout and lets you enter hands using the Hand Query language that is integrated into the C# HandEvaluator library. This new spreadsheet lets you customize the opponent hands and allows you to define multiple hands for the player (ie: What would my odds be if I had AK offsuit or AQ offsuit?). It also lets you specify the number of trials to run for each Monte Carlo simulation and is smart enough to enumerate the cards if you specify more trials than it would take to go through all possible board cards.

Texas Holdem Spreadsheet

If you want to try out the new poker spreadsheet you can download it from the Resolver Exchange. The free player license for Resolver One will let you open and run the spreadsheet, but you will need a commercial license or research license if you want to make any changes to the code. I would like to add multi-threading and a hand win type breakdown table, but there is another coding contest deadline coming up, so I have to work on another project for a little while :-P

Enjoy!

Wednesday, September 23, 2009

Hi-Def video from the edge of space (Motion sickness bag not included)

High altitude balloons have been used to perform experiments and collect data from the earth's stratosphere for over 200 years now, but recently with the availability of cheap consumer electronics some universities and amateur radio groups have started using them to take pictures or videos at "near space" altitudes. For about $150 you can assemble a balloon, prepaid cell phone with GPS, and a used camera to take some pretty cool pictures from pretty high up. If you want better tracking and the ability to shoot video you can spend a bit more to get some truly amazing pictures and awesome videos, not to mention gobs of data that would make even the Mythbusters jealous.

Some balloon projects use multiple cameras so that they can take pictures both downwards towards the ground and sideways to see the curvature of the earth. Last month the Balloon Experiments with Amateur Radio group launched their BEAR-4 balloon with an Hi-Def camera. They got over 4 hours worth of wicked cool video, even though the camera was spinning like a top over Canada half the time. Check out the highlights:

 

The only thing cooler than seeing one of these things rise and then drop from the sky would be to see the Entry, Descent and Landing of a rover on Mars :-P

Wednesday, September 9, 2009

Microsoft Translator throws it’s hat into the ring!

Microsoft is stepping up their game in the translation market with the new Microsoft Translator service. While it does not have the community feedback system like the Google Translator Toolkit, it does offer the ability to translate documents directly in Microsoft Word or a webpage in Internet Explorer 8 and display the documents side by side. The JavaScript widget also lets you embed the translator directly onto a webpage so that users can view the content in different languages. Checkout this short video from Office Casual that outlines the new features. As a plus, it includes silly hats!

Tuesday, September 1, 2009

How to be number one: Make people happy, Make it pretty, Make it cool

Life, liberty, and the pursuit of happiness are just a few of our "inalienable rights”, but if you are anything like me then you probably focus the majority of your time on pursuing happiness while letting your elected officials manage your liberties and your subconsciousness manage keeping you alive. If you are an entrepreneur or master of marketing then you might have come to realize that the success of your product may be directly related to the happiness that it subconsciously brings to your users. No matter how far we have evolved, we are still but simple creatures.

Today Joel Spolsky released a video of his talk at the 2008 Business of Software conference, in which he discusses what it takes to become a market leader. He recognizes that it takes more than simple technical superiority to become number one, which is an issue that has baffled me many times. I personally dislike the iPhone, but I do have to admit that Apple does a very good job at paying attention to all the little details that make the overall use of a device more appealing to their users (thereby Apple-ing the user :-P). By spending extra time on the aethstetics and appearance of a device and building an aura “coolness” that the community associates with them Apple is able to consistently deliver products that become market leaders even if there are other devices with more power for less price. The video of the talk is about 46 minutes and is a great example of how to keep people interested during a long presentation:

 

 

The 2009 Business of Software conference is coming up on November 9th and I really wish that I could go if only to see Don Norman’s talk. He wrote The Design of Everyday Things, which is an excellent book about the functional and visual importance of design that I would highly recommend to anyone designing a building, writing software, or trying to create the next cool gizmo. Reading a book that was written in 1988 but still very applicable in the age of Web 2.0 gave me a new respect for the design process. He also has other books on the topic of design, and I would love to hear his advice applied directly to the design of software.