Sunday, July 29, 2007

Test Drive with IronRuby and System.Windows.Forms

Per Scott Guthrie’s blog I was inspired to take a look at IronRuby. Even though it is in pre-alpha, I could not resist given the appeal of Ruby with the rich libraries available in the .Net framework.

After building the IronRuby solution, I took the rbx.exe, along with the related assemblies, and dropped them into a new folder. Here is a look at the folder content.




I then created a file named example.ir.




Next, I ran the IronRuby exe with the new file.




This resulted in the window below.




After clicking the Click Me button:




On a side note, the shot above of the example.ir file is from Notepad2. The syntax highlighting, even with an .ir extension, is from changing the custom scheme in Notepad2. Look at a previous post to see how to change the schemes for syntax highlighting. If you want a build of Notepad2 with Ruby syntax highlighting, go to Scott Hanselman's blog for the build and source code.

Saturday, June 23, 2007

Notepad 2 for MXML and ActionScript 3

I was looking for a way to get color coding, for my favorite lightweight code editor for Windows, Notepad2, for Flex 2’s MXML files when I came upon Josh Tynjala’s blog entry on how to enable color coding support for ActionScript 3 files.

Since MXML files are XML they can use the same color coding syntax information. Here’s what you need to do to enable support for MXML files (or any other file type for that matter).

  1. Click on the View menu and choose Customize Schemes….
  2. Choose the XML Document type.
  3. In the input that contains xml;xsl;svg;xul;xsd;xslt;axl;rdf;vcproj;manifest, add ;mxml to the end. Note the semi-colon.
  4. Open an *.mxml file to see the wonderful color coding.

Friday, June 15, 2007

CAPTCHA (a.k.a Are you man or machine?) to reCAPTCHA

We have all been to sites where we have to type in a word or phrase that demonstrates that we are not a spider or spam bot but a human attempting to access a page or purchase an item. When you look at the word or phrase it looks like a warped rendering with distorted letters. The program that provides the fuzzy looking words is called CAPTCHA. According to recaptcha.net, “The term CAPTCHA (for Completely Automated Turing Test To Tell Computers and Humans Apart) was coined in 2000 by Luis von Ahn, Manuel Blum, Nicholas Hopper and John Langford of Carnegie Mellon University. At the time, they developed the first CAPTCHA to be used by Yahoo.”

I always understood the funky phrase or word was to stop Optical Character Recognition systems from deciphering them, submitting the words back, and falsely validating itself to as a human being. While it does that, recaptcha.net wants to use that few seconds of human effort of typing in the words into a textbox for noble purposes.

About 60 million CAPTCHAs are solved by humans around the world every day. In each case, roughly ten seconds of human time are being spent. Individually, that's not a lot of time, but in aggregate these little puzzles consume more than 150,000 hours of work each day. What if we could make positive use of this human effort? reCAPTCHA does exactly that by channeling the effort spent solving CAPTCHAs online into "reading" books.

reCAPTCHA improves the process of digitizing books by sending words that cannot be read by computers to the Web in the form of CAPTCHAs for humans to decipher. More specifically, each word that cannot be read correctly by OCR is placed on an image and used as a CAPTCHA. This is possible because most OCR programs alert you when a word cannot be read correctly.

To help with this go to http://recaptcha.net/learnmore.html. Moreover there is an API at http://recaptcha.net/apidocs/captcha/.

Hey, in about 30 seconds I helped digitized five words!

Wednesday, May 09, 2007

The Selenium storEval Method in Action

I was creating Selenium tests for the module on a J2EE app at work and noted that the requirements wanted the beginning and end dates in the search text boxes to be the current date. I then thought, "Hmmm, these tests will be run on various dates. How can I get the current date to validate that the current date, in a specified format, is entered into the beginning and end date textbox entries for a search query?"

A little digging on the OpenQA site in the reference for Selenium and I found the storEval method. According to the reference this method, "Gets the result of evaluating the specified JavaScript snippet. The snippet may have multiple lines, but only the result of the last line will be returned." That was just what I needed.

Here is where the method is used in the test that is stored in an HTML file:

<tr>
<td>storeEval</td>
<td>var d = new Date(); var mday = d.getDate();
var mmonth = d.getMonth() + 1; var myear; if (navigator.appName == 'Microsoft
Internet Explorer') {myear = d.getYear();} else {myear = d.getYear() + 1900;}
if (mday.toString().length == 1) { mday = '0' + mday; } if
(mmonth.toString().length == 1) { mmonth = '0' + mmonth; } todaysDate = mmonth
+ '/' + mday + '/' + myear;</td>
<td>todaysDate</td>
</tr>
<tr>

Note that the todaysDate variable above is passed the formatted current date. I then use it later in the test to assert that this is what is entered into the beginning and end date text boxes.

<tr>
<td>verifyValue</td>
<td>searchBeginDate</td>
<td>${todaysDate}</td>
</tr>
<tr>
<td>verifyValue</td>
<td>searchEndDate</td>
<td>${todaysDate}</td>
</tr>

Wednesday, April 18, 2007

Selenium IDE with an XPath Locator

We are beginning to use the Selenium IDE at work to do some UI based testing. One thing that I wanted to test is the sorting of columns in a table.

Here is how I did it.

Tuesday, April 10, 2007

Dreaming in Code Book Review

Just finished Scott Rosenberg's book entitled, Dreaming in Code. The subtitle: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software summarizes this interesting work.

Unlike other tech related books this was composed by a journalist that kept the book moving and informative, all the while viewing software development from an entertaining, fresh perspective.

I highly recommend this book for not only software developers, but for those who work with them. Project managers, software testers, program managers and the like will benefit from the view point of a man who watched the unfolding of the Chandler open source project for a three year period.

As the book details, software is hard:
Why is good software so hard to make? Since no one seems to have a definitive answer even now, at the start of the twenty-first century, fifty years deep into the computer era, I offer, by way of exploration, the tale of the making of one piece of software -- a story about a group of people setting their shoulders once more to the boulder of code and heaving it up the hill, stymied by obstacles old and new, struggling to make something useful and rich and lasting.

Saturday, March 24, 2007

Ubuntu Desktop in Microsoft's Virtual PC 2007

I pulled down Microsoft's VPC 2007, which is free, a few weeks ago and have been using it on my Windows XP workstation and laptop. I even have a VPC machine with Vista and Office 2007.

I setup the VPC machine with Vista and then created a copy of the VPC to test drive. This enables me to play with it, and even break it with no issues. If I mess it up I just make another copy of my master VPC and go at it again. This is great for development and testing.

I even got the Ubuntu Desktop on a VPC machine thanks to a blog post from Arcane entitled Installing Ubuntu 6.10 on Virtual PC 2007 Step by Step.

Saturday, February 10, 2007

OpenID - open, decentralized, free

I was listening to Scott Hanselman's podcast where he featured OpenID - an open, decentralized, free framework for user-centric digital identity.

In a previous show he discussed identity and Microsoft's CardSpace and in this podcast, mentioned that Microsoft is collaborating with OpenID.

All I can say is get your's today!! Open, decentralized, free--why not!

Sunday, February 04, 2007

NSpec: .Net's Behavior Driven Development Tool

I had stated in a previous post about the advantageous of Behavior Driven Development with Ruby and RSpec. Here I am looking at NSpec, an open source tool from Tigris.

Go here to find out more about NSpec.

Monday, November 20, 2006

Setting up menu items in Ubuntu's Edgy Eft build

Have I said lately that I really like Ubuntu!?! What a great Linux distro that makes it easy enough so that the Linux novice can now use Linux on the desktop.

Anyway, I have a brief article on how to setup a menu item in the Edgy Eft build of Ubuntu.

Wednesday, October 18, 2006

An Open Source Team

As I have moved from the .Net team (yet I still have .Net apps I am modifying in my own small business) to the J2EE team at work (day job), I have been busy learning more about the commercial financial software we sell and the inner workings of J2EE.

One thing I am thankful for is a group of co-workers who do not hold their knowledge close to themselves but are ready and willing to share and teach. When I have a question, they are helpful and provide the needed information. Moreover, they have an array of tips and tricks that they provide.

That is the core of a successful team. When members understand that by sharing information, they open themselves up to receive more knowledge. It has been my experience that the more knowledge I share the more I learn.

Wednesday, October 04, 2006

A GoDaddy Ready MySql.Data.dll for .Net 2.0

In a previous post, I discussed how to build a MySql assembly to use with .Net 2.0 hosting on GoDaddy.com.

A blog reader, Bill Clark, recently asked me if I could post the assembly that I created for others to use.

Here you go.

The file includes the compiled (specifically for GoDaddy) MySql.Data.dll assembly that you will reference. Also included in the zip is ICSharpCode.SharpZipLib.dll assembly that is referenced by the MySql.Data.dll assembly.

Thursday, August 17, 2006

Dynamic vs. Compiled Languages

I was doing my usual run this morning listening to my IPod shuffle when on came a particular podcast that I enjoy called Hanselminutes. The host of the show, Scott Hanselman typically has great discussions on all things ASP.Net and sundry other topics.

This show dealt with a discussion on Dynamic vs. Compiled Languages with a particular emphasis on the advantages of Ruby.

The show also details the values of Test-Driven Development and the next rev of C# with more potential dynamic language features.

Sunday, August 06, 2006

Is Untested Code the Dark Matter of Software?

According to Cedric Beust's blog, untested code is the dark matter of software. I like this analogy. Just what is dark matter? Wikipedia states:
In cosmology, dark matter refers to matter particles, of unknown composition, that do not emit or reflect enough electromagnetic radiation (light) to be detected directly, but whose presence may be inferred from gravitational effects on visible matter such as stars and galaxies.
I find it interesting that just like untested software, dark matter has observational evidences such as gravitational effects on galactic motion but we really do not fully know what it is. Our calculations detect its presence, but due to obvious limitations, we lack the current ability to conduct extensive empirical investigations. Similarly, in software development, (not because we can't do extensive test but because we won't) we will run limited tests on a module and observe a small scope of expected behaviors. In essence, like the observable effects of dark matter on stellar objects, we infer that the software is coded correctly because of its observable outcomes. However, if not properly tested with the array of possible circumstances the module may not function as planned.

I understand that the limitations for software programming are different than cosmological research. Shear distance and inconclusive understandings of gravitation hinder a fuller understanding of dark matter. With software development, customer expectations, unmitigated risks, and changing requirements can hinder proper developer testing and confidence. However, if we really want to, unlike the astrophysicist, we have the ability to test and empirically understand most of the potential effects of the software we write.

What do you think would become of an astronomer who had the opportunity to more closely research dark matter and did not because of time pressures at best, and laziness at worst? Now that matter is dark.

Wednesday, August 02, 2006

Microsoft's Port 25 - their Open Source Software Lab

I came across this site today. Of interest is an interview with Tim O'Reilly at OSCON 2006.

My hope is that Microsoft will support cross-platform efforts in the open source community. I am already fond of DotNetNuke, NUnit, and other open source tools that are, at least in part, supported my Microsoft for the Windows platforms. We shall see if they support Mono and the like.

Saturday, July 29, 2006

Moving from Windows XP Pro to Ubuntu

I decided to take the plunge with Ubuntu on my old laptop that had Windows XP Pro installed. First I pulled down the Desktop CD of Ubuntu 6.06 ISO and burned it to a CD. Ubuntu fits on one CD-Rom disk, nice. Then after setting the BIOS settings to boot off the CD-Rom/DVD drive I inserted the CD with the Ubuntu 6.06 ISO.

After booting from the Ubuntu CD, you can test drive it to see if you want to install it on your hard disk. If so, there is a handy install icon. Select the icon, answer a few standard questions for language, timezone, userID, and password and it will install.

Then, I inserted my Linksys WPC11 wireless NIC and Ubuntu recognized it lickety split. I added my WEP settings info via the Administrator|Network tool and I was browsing.

I have to say that this was the most trouble-free install of any linux distribution I have seen. Then, with the help of the Urban Puddle blog, I was able to get Ruby, Rails, and MySql installed.

See my messing with Interactive Ruby (IRB) below on my new Ubuntu install.

Ubuntu Screen Shot

Also of note was that Ubuntu was able to browse to my Windows server shares as Server Message Block (SMB) shares. I did not even have to mess with SAMBA. Sweet!!!

Sunday, July 23, 2006

If you are hosting ASP.Net 2.0 on GoDaddy and using the MySql .Net Connector for MySql please read

First download the Connector/NET 1.0 installer from the MySql site (do not get the source code only download as it is buggy. The installer download contains the source also.)

After installing the MySql .Net Connector, in VS 2005 Add an Existing Project to your solution by browsing to C:\Program Files\MySQL\MySQL Connector Net 1.0\src\ MySql.Data.csproj file.

After adding the project, open the MySql project and add the following to the AssemblyInfo.cs file in the perspective locations:
using System.Security; //added for GoDaddy Host
[assembly: AllowPartiallyTrustedCallers()] //added for GoDaddy Host
Build the project and then either reference the MySql project or browse to the new MySql.Data.dll assembly directly.

Special thanks to a post from Alek at GoDaddy’s Support team on Microsoft’s Asp.Net Forum site. Apparently, as of June 22, 2006 GoDaddy.com, "has updated the custom medium trust configuration to allow the MySql.Data.Dll to work in a medium trust environment for the .Net 2.0 development environment." He then goes on to instruct you to set the AllowPartiallyTrustedCallers attribute in the AssemblyInfo file. Also thanks to others for pointing out the referencing the System.Security namespace in the AssemblyInfo file.

UPDATE: By request I have posted the compiled MySql.Data.DLL Assembly. Get it here.

Saturday, July 22, 2006

The value of multiple input

I was waiting for the app I was working on to build as I was listening to an old Led Zepplin tune and started thinking, what has the great bassist/keyboard player John Paul Jones been up to? A quick Google on John Paul Jones and I found his personal site at johnpauljones.com. A quick look at the photos and I was surprised to see John in a picture with Nickel Creek band member Chris Thile, at a mandolin symposium (See the image below).

John Paul Jones with Chris Thile and others

For the unacquainted, Nickel Creek is a progressive, blue grass group that many would not even label as blue grass. Any way I always read of the various blues and other world music that was the influence of Led Zepplin. I also know John Paul Jones played mandolin at least on Led’s fourth album song, Going to California. The point of this post is to be aware of the value of various influences. One should resist the temptation to limit oneself to only what is comfortable. I then thought of the literary influences that were listed by futurist Alvin Toffler in a recent C-Span interview. He spoke of a array of topics on which he regularly reads. Moreover, he explicitly stated that one needs to expand the genre and subject matter of what one reads to get a better, holistic view.

How does this apply to technology and business in general and software development in particular? One general application is that inputs of various topics helps one to better anticipate the ebb and flow of the information technology market and adjust one’s direction accordingly. Secondly, and more specifically, a broader understanding of things makes one more able to understand the various business domains for which one will have to write software solutions. Finally, the understanding of various programming languages enables one to develop a broader knowledge base by applying the concepts, idioms, and problem-solving patterns of one language to another, potentially combining the strengths of two or more languages to a solution.