tag:blogger.com,1999:blog-70518912008-07-22T05:50:08.913-04:00Silent SoftwareIanRaenoreply@blogger.comBlogger43125tag:blogger.com,1999:blog-7051891.post-29961150147293165582008-06-12T13:38:00.003-04:002008-06-12T13:49:47.556-04:00Converting a Class Library Project to a Test ProjectHere's a VisualStudio 2008 tip. Have you ever created a C# project of type "Class Library", and then later you want to change it to a Test Project? Here's how:
1. Edit the .csproj file in Notepad and insert the following line:
{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Just before the first tag in the file
2. Right-click the solution in Solution ExplorerIanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-11305008619229063922007-12-03T17:39:00.000-05:002007-12-03T17:40:37.846-05:00Learning JavaMost developers live in one camp or the other. Few people who work inside the Microsoft ecosystem (Win32, .Net, ASP.Net) spend much time in Java, and vice versa. That's what makes religious wars about languages IDEs so lame; most programmers have never seriously worked with both.
That's why it's refreshing to see Erik Sink trying out Java. I spent last winter going from C# to Eclipse and can IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-42106366424157046182007-08-09T20:50:00.000-04:002007-08-09T21:04:48.152-04:00Chief Programmer TeamsI found an ancient programming book: Top-Down Structured Programming Techniques by Clement L. McGowan and John R. Kelly (1975). It describe Harlan Mill's project at IBM where he pioneered CPT. Guess what. It worked. These reasons for success are easier to see from an agile perspective. Early 70s software development was primitive. The existing paradigm structured programming seemed IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-13463869459640029122007-06-18T08:37:00.000-04:002007-06-18T08:47:48.809-04:00On Code-Generation ToolsThe 90th Percentile had an article bashing code generation as a programming technique. He is suspicous that visual programming is no better (and in many ways worse) than textual programming. The generated code is often unreadable, and in the case of proprietary tools, you'll be forever dependent on the tool vendor for bug fixes and updates.
The IVR industry is especially wed to visual tools, IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-20813330074267622962007-06-12T12:20:00.000-04:002007-06-12T12:31:23.653-04:00Mondrian at GooglePython's inventor Guido van Rossum is at Google. His first project was a tool for code reviews called Mondrian. Described here and in a video.
This is a revealing glimpse of a 21st-century software development organization.
Heavy use of tools to automate the organization's own development process.Social not silos. Developers can view other developer's Mondrian dashboard. The tool is an IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-52479505914245579112007-06-06T07:48:00.000-04:002007-06-06T08:15:37.307-04:00Replacing the OSMarc Andreesen once said that "the combination of Java and a Netscape browser would relegate the operating system to its original role as an unimportant collection of slightly buggy device drivers." Pretty funny, considering Microsoft has fifty billion in cash and Java is nowhere to be seen on the desktop.
Yet the idea remains tantalizing. Change the phrase to "JavaScript and a web browser" IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-7528378236190433822007-06-05T11:27:00.000-04:002007-06-05T11:41:24.852-04:00Speech to Text coming to cell phonesThis video introduces Morpheus's upcoming speech to text technology. The reason this is important is audio bandwidth. The phone network is based on 64 kbps audio of 4 KHz bandwidth, which is fine for humans to understand but is missing a lot of the higher frequencies that speech recognition engines need to improve their accuracy. That's why phone-based speech rec uses discrete grammars, which IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-2020868823808926942007-05-22T11:02:00.000-04:002007-12-05T19:14:24.339-05:00Pat Helland is backPat Helland, the guy who really understands the concept of time in computing, is back. I saw him talk at a Microsoft event in Ottawa. Distributed transactions are bad. He believes that a reserve & cancel approach to business transactions was preferable.
He's also the guy who calls XML the "cardboard" of computing, as in you wrap up something in cardboard, stick a label on it, and send it IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-75788241423883708242007-05-10T13:44:00.000-04:002007-05-10T13:45:10.898-04:00New Release of SpeakRight frameworkHere.IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-46344497222398423812007-04-20T17:33:00.000-04:002007-04-20T17:49:48.753-04:00YouTube video
I was in Southern Ontario last week, and saw some amazing wind energy windmills near Lake Erie near Long Point. These things are massive and dominate the skyline in a war-of-the-worlds sort of way. Thanks to Ian Bigham for the tour -- I took a short movie:
video
PS. Farmers are limited to one windmill per 50 acres so although $5000 per year is nice, it's hard to host lots of windmills.IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-6187112074687278902007-04-13T15:30:00.000-04:002007-04-23T16:52:49.652-04:00Is Microsoft Dead, or just Sleeping?Paul Graham's article is intriguing. Of course Microsoft isn't dead; as Joel Spolsky likes to remind us, they have enough money (40 billion or so) in the bank to continue for years, decades even. They can buy any talent or startup they want. They can throw a hundred programmers at a problem faster than you can say absorb-and-extend. But are they dead as a threat? He makes a good case.
IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-85809810325141577522007-04-12T15:08:00.000-04:002007-04-12T15:17:15.554-04:00DRM and the Viacom - Google SuitScott Rosenberg blogged on the Viacom - Google lawsuit. He pulls apart some fallacies in a NYT article, and calls Viacom's suit more of the same strategy -- sue the customer.
A commenter made the standard comment that people don't mind paying for legal stuff if it's convenient.
>Cheap is always good, but most people actually prefer legal and reasonable over illegal and free.
I just had to IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-53470683947458855962007-04-11T12:22:00.000-04:002007-04-11T12:24:46.169-04:00Adding Simplicity - A Great Architecture BlogArtima referred (via Martin Fowler) to Dan Pritchett's excellent blog Adding Simplicity. Dan is an eBay architect and covers the scalability and reliability issues of distributed web-based systems.
The title of the blog comes from the notion that a great design is "not when there is nothing left to add, but when there is nothing left to take away". Adding simplicity is counter-intuitive; theIanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-79269399231797067512007-04-10T17:22:00.000-04:002007-04-10T17:34:16.907-04:00Dreaming In Code -- The Myth of the Magic ClosetScott Rosenberg's new book Dreaming In Code is a great read for anyone involved in software design over the last decade or two. I'm only on Chapter 4, but it's shaping up well. The book is about a failed project, Chandler, to build a "cross-platform, open-source, PIM in the spirit of Lotus Agenda". The words "in the spirit of" are the big red flag, because it revealed a massive hole in the IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-21516581966074595702007-03-06T11:20:00.000-05:002007-03-06T11:59:01.362-05:00Happy Trails -- The Joy Of LoggingLogging is one of the most important infrastructure activates that a piece of software does. Good logging saves hours of support and troubleshooting time. For instance, every error that is log should indicate a single place in the source code where the error occured. You can do this with unique error code numbers. I often just vary the error text slightly, so errorFileNotFound says "can't IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-67774001420220285182007-03-06T11:16:00.000-05:002007-03-06T11:17:29.417-05:00SpeakRight 0.0.2 is outHere It's definitely starting to take shape. Simple directed dialog apps can now be done.
Next up: mixed initiative and more SROs.IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-68711980056375078002007-02-26T17:37:00.000-05:002007-02-27T00:21:23.401-05:00Announcing the SpeakRight FrameworkThere's been a big change in direction for me in the last month. I'm going open-source. Spent the last month learning Java and Eclipse...and creating an open-source VoiceXML framework called the SpeakRight Framework. It's a code-based approach to writing speech recognition apps that, I believe, results in much higher code re-use and therefore faster development time. Also, modern Java IDEs areIanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-6663501592613765372007-02-13T15:02:00.000-05:002007-02-14T08:07:14.041-05:00Grokking StringTemplateThe StringTemplate template engine is a powerful tool for generating markup text or code. It does, though, take a little getting used to. The templates may like a type of programming language, but there are some key differences. And since it's not compiled, bad syntax may just fail silently. Luckily it's quick to try things.
Update: I have corrected errors in the original post. Namely $if(IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-23071603998447280012007-02-09T23:20:00.000-05:002007-02-09T23:15:41.715-05:00Learning JavaAfter years in the Microsoft I am finally learning Java and Eclipse. For anyone familiar with C#, Java is extremely close but feels its age. No properties, delegates, or events? I can live without them. Eclipse however is another story. What AN AMAZING PIECE OF SOFTWARE! Miles ahead of Visual Studio in many areas. Mainly it just works; which is a huge kudo to any piece of complicated IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-11381030629358999272007-02-03T11:05:00.000-05:002007-02-03T11:15:49.274-05:00Daily backup of a laptopThanks to Gerald Gibson Jr.'s great article I now have a free way to do daily backups of my laptop. Windows natively supports the zip format (as "compressed folders"). The article is a C# program that generates ZIP files using the Shell API.
(Be sure to get the latest version from Gerald's web site)
My app zips several important directories into zip files in c:\zip. Then, using a free IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-59829588157249036102007-01-18T09:55:00.000-05:002007-01-18T10:48:51.550-05:00MySpace is Show BizGreat article by David F. Carr on the behind the scenes mayhem at MySpace, whose exponential growth from a few hundred thousand users to 30 million users overloaded the system.
"MySpace started small, with two Web servers talking to a single database server. Originally, they were 2-processor Dell servers loaded with 4 gigabytes of memory"
Again and again MySpace was re-written to add: IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-27172885975841738112007-01-12T14:56:00.000-05:002007-01-12T15:14:55.935-05:00Why to use code generation techniquesMark Baker comments on the problems with (xml) document validation. Any DTD that is too detailed is a time-limited contract. ProductType may be "1", "2", or "3" today. But a year from now types "4" and "5" may be allowed.
True, but validating, or what used to be called "laundering your input", still has to be done. Whether it's in the gatekeeper or the business object, the code has to be IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-21806264478366266732007-01-12T11:58:00.000-05:002007-01-12T12:04:38.891-05:00The Beauty of UnrealFurther to my recent post on example-centric programming, Tony responded with
I entirely agree with the audience targeting critique you make. I was thinking about the historical roots of programming, the social aspects, and how they must be considered, not just for fuzzy artsy reasons but for because they are part of the sociology of skills and attitudes that mold the field (we are the medium of IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-72078318967785323132007-01-10T14:49:00.000-05:002007-01-10T15:01:34.057-05:00Example-centric programmingThis Jonathan Edwards guy is brillant. His demo of Subtext is the most creative thing in programming in years. But he's basically trying to replace 50 years of programming culture: programs as text. Doomed to fail, like Charles Simonyi's Intentional programming, but may throw up interesting mashups.
End-user progamming is a dubious thing. It comes and goes as the Next Big Thing. The problem IanRaenoreply@blogger.comtag:blogger.com,1999:blog-7051891.post-12382987268547120432006-10-31T14:34:00.000-05:002006-10-31T14:48:22.528-05:00When more is lessIn retooling our QA lab we've dropped the number of machines by half...and become more productive! Our work involves constantly re-installing windows service packes, hardware drivers, and assorted telephony software. Turns out that looking after of lots of machines was wasting time. We didn't used to have an organized way of managing the machines; we didn't know what was already on them, IanRaenoreply@blogger.com