April 18, 2006

Impressive List of Languages Ported to .NET Runtime

As Worf would say, most impressive.

A couple of thoughts. First, if you are designing stuff for the long term, going with one of these ports (eg a non-.NET-native language) should be considered. You always have the native runtime to fall back on. The reverse is true of C# thanks to Mono. Second, the .NET programming stack may now be officially certified as robust. Haters now dismissed, lesson over.

Posted by Noel at 05:32 PM | Comments (6) | TrackBack

March 29, 2006

Whahooohooo: Efficiency & Coworkers

Efficiency rules. That's why I've been a happy clam with the new Visual Studio 2005. Yes, it's as nice as they say. The ads are funny too; I think my co-workers & I were properly nailed.

If you pay close attention, it's not the technology or the people that makes things inefficient, but the processes and standards.

Posted by Noel at 05:01 PM | Comments (0) | TrackBack

February 08, 2006

Formal Methods Don't Work For Consumer-Specific, Heterogenus, Event-Based Programming

I actually don't quite believe that, but hey, it got you reading.

At the core of my thoughts is the observation that formal methods (and software development methodologies that are based on proofs of correctness and such) seem to only find limited application. Basically, they only work in embedded systems for specific customers, and not for everybody to run on their PCs. I have no knowledge of any product on the consumer/IT market which used formal methods in its development (Know of one? School me with your comments).

I think that this is due to two reasons. The first is the institutional sin: ISVs/major leaguers don't care enough about quality code. That is due to a variety of things that I'm not going to get in to here, as Slashdot covers it well anytime the topic comes up. The second reason there is no formally-developed software on the consumer/IT market is due to the nature of the computing platform in majority use: the personal computer.

Formal methods find success in systems like air traffic control, financial processing, military/space control, etc. What strikes me about these fields is that they are fully concerned with running one program on one (at least logically) system with little human interaction. These environments are the antithesis of contemporary PCs: general purpose computation devices which run many programs on a single system with lots of human interaction.

Once you define requirements such that there is a tightly regulated input/output, with fully defined human interaction and fully defined system & software interaction, the ability to use such formally developed software on a general PC vanishes. This leads me to believe that formal methodologies will never be used outside of their current narrow application scope. When you rigidly define how you are going to solve any problem, the scope of solvable problems shrinks.

Rigid and defined is the opposite of rich and messy, aka innovation, something which the general computing market demands.

Becky, I know you live in embedded land. Care to share thoughts?

Posted by Noel at 05:39 PM | Comments (0) | TrackBack

September 16, 2005

Huh: MS Open-Source AJAX Library, OO API, Free and Available Now?

You must read between the lines, but that what it seems. They call it ATLAS, and it combines a .NET-based API with a client-side javascript library. And the team wants feedback as they do their semi-weekly public releases leading up to 1.0. Interesting times, as always.

For the record, this is cool because it brings AJAX voodoo into the nice, friendly, standardized Visual Studio IDE and the nice, clean, modern, OO .NET languages and the nifty, mostly-standards-based .NET technologies.

Posted by Noel at 05:38 PM | Comments (2) | TrackBack

August 16, 2005

"I can't believe it. He was always such a stateful monad..."

The self-dubbed "Swiss Army Knife of Admin Tools" that Microsoft, for reasons which I am very curious about, has code-named Monad, seems quite the little bag of tricks. It's a command shell, it's a scripting language, it's a strongly-typed object-oriented .NET language, it's interpreted, it's dynamic, it's scriptable, it's a bird, plane, a bit of cheese, and your dessert.

Now, as to the name, all I might wager is this. Objects know their states, and the states of others, better than the text that current command lines must parse in order to pipe and slice. This makes the user the Chief Monad of the system, arranging objects into a pre-existing harmony of computery goodness. Eat it, Voltaire.

Posted by Noel at 05:38 PM | Comments (0) | TrackBack

April 06, 2005

Microsoft Team System: Good Riddance, Right?

I'm perfectly willing to accept, after dealing with the massive tool chest that is Visual Studio Team System, that this is not the right dogfood for us small developer groups. Fine. That's cool and all, and though most small developer shops are the ones that kind of didn't get the memo about the pricing in the first place, but whatever.

So, what do we use? I ate up the chunky stuff in the bowl of Team System, and it was yummy. What's the diet brand, then? We want version control, unit testing integration/regression testing, bug-tracking, architecture, process methodology, and those other 25 vitamins and minerals. Is there an ISV that is showing this stuff off for VS2005? Is it time to switch to FOSS solutions (eg NUnit, Subversion)?

Recipes for success are greatly appreciated.

Posted by Noel at 05:40 PM | Comments (0) | TrackBack

March 01, 2005

Transparency & The Atomic Bomb

I first learned about transparency from Photoshop. Beginning in version 3, Photoshop's editing metaphor became layer-based. Images are 2-D, and in Photoshop each image becomes a 2-D layer sitting in a z-axis stack of layers. Play now with many layers stacked on top of each other. What good is this? Well, if part of a layer is transparent, you are able to see the layer underneath (and if that layer is transparent, the layer underneath that continued). So if you make the background of a layer transparent, the foreground will be set in the background of another image. Repeat about ten times and mix with vaguely medieval religious imagery, and you're well on your way to becoming a mid-90s graphic designer of the Seattle grunge style!

Transparency, I've come to realize, is vital in more than image-editing. It's a fundamental ethical virtue. The present moment hosts a struggle between transparency and opacity that must galvanize us into living more transparently and calling for more transparency from our institutions. Government, business, education, and science must be transparent in important ways for their future fundamental integrity.

Korby Parnell tells a motivating tale of transparency at work in the splitting of the atom. But significantly, other institutions must act transparently as well. Higher-Ed springs to mind, perhaps from recent experiences. So does Enron, WorldCom, Google, and Microsoft. There's varying degrees of transparency in each of those companies (and varying degrees of failure therein). For lawyers and their firms, there's even less transparency, as Evan Schaeffer humorously relates.

Transparency. Not like a Johnsone-esque glass house, but like a piece of open code. Transparency over processes, models, and compliance. Not over execution and decision-trees. Think about why I believe it to be so important over the week.

Posted by Noel at 05:25 PM | Comments (0) | TrackBack

February 23, 2005

object-oriented design versus information-hiding design

“Traditional object-oriented design provides the heuristic power of modeling the world in objects, but object thinking wouldn’t help you avoid declaring the ID as an int instead of an IdType...the difference is one of heuristics—thinking of information hiding inspires and promotes design decisions that thinking in objects does not…Asking ‘What needs to be hidden’ supports good design decisions at all levels.”

--McConnell, p. 96-97.

Posted by Noel at 05:32 PM | Comments (0) | TrackBack

February 18, 2005

The Difficult Internet, Part 1: In the Clever Evil Phishers Dept...

Last weekend, to my mom's horror and indignation, I explained "phishing" and how web users are at risk to it. The example I used was paypal.com versus paypel.com, a small but distinguishable vowel shift that could viably crop up either as a typo or as a phish attempt via email etc. "They can do that?!" she exclaimed, "Wow, I had no idea! That's so dangerous."

Yes, I've been thinking for a while that this whole internet thing has spectacularly failed to become easier to use since, oh, ARPANET. Online life is still too tricky for all except the 1337.

Anyways, this jives with a difficult conceptual problem as the web moves to allow Unicode chars in domain names. Suddenly, my example to my mom seems quaint. This stuff is subtle and hard. For the record, good going on the FireFox team for disabling IDN until they work out the issue. Protect your users and they will love you for it. Right, MSFT & APPL? Right Verisign? Right, all ye TLD registrars who allow obvious phish attempts to register domains?

Want an example?
IDNSpoof.jpg

Posted by Noel at 05:35 PM | Comments (0) | TrackBack

February 08, 2005

Windows Source Code Revealed. Bid for the Brooklyn Bridge on eBay. Atlantis--Found!

By rough calculations, 15% of the source code for the current version of Windows XP was leaked onto the internet late last week. BillG, SteveB etc furious. FOSS advocates incredulous that Microsoft comments their code. The sky falls.

I remember using some of the same techniques to solve some Linguistics puzzles back in the day. Also reminds me a bit of the classic DeCSS haiku [Google]. In unrelated news, I am now embarking on a year-long campaign to rewrite helloworld.c in > 100,000,000 loc (comment inclusive).

Posted by Noel at 05:00 PM | Comments (0) | TrackBack

February 04, 2005

A Small Primer on Unit Testing Using Visual Studio Team System 2005

As promised, here's a small primer on testing.

Note: if you're an inveterate tabbed-browsing researcher like me, hit up my testing linkblog page for hot hyperlink action with all the sites mentioned herein.

The best introduction to testing in general, and developer testing specifically, and test-first versus test-last religiously, is found in "Chapter 22: Developer Testing" from Steve McConnell's Code Complete, Second Edition on Microsoft Press. This book is absolutely superb, and if you can't reach onto your shelf to look that chapter up, delicious this post and buy the book now.

Next, digest a more academic, but still informal, paper on modern computer-assisted testing.

CoDe magazine ran two very basic articles in it's Nov/Dec issue that show simple test cases and the basic capabilities of common unit testing.

Microsoft as a company seems to be at the forefront in pushing full-on testing methodology with equivalent positions for developers and testers. A Test Lead blog creates a jumping off point for Microsoft-centric testing by describing and then discussing & linking what a testing developer position is and does.

Burton, aka Team System 2005, has a fully integrated testing environment that encompasses unit, load, and manual testing. The FAQ is a nice intro to its capabilities. The name ‘Burton’ also surges forth the desire to carve fresh pow-pow on a sweet ride.

The Tester edition of Burton has its own little web page where you may grok features, etc.

Strangely, the built-in Whidbey [December 2004 CTP Beta 1] Help does not contain any testing information, but did point to this, and only this, third-party article, which comes at things from an odd and less-than-useful perspective. Hey guys, you can always link to me instead.

If you haven't noticed, there are a ton of MS bloggers, and I found several blogs helpful in understanding testing in general, and in how to use Visual Studio as a testing tool specifically.

Sara Ford's blog is the largest and most frequently updated. She has been posting some quizzes, some internal practices, etc. Quite useful stuff.

The Braidy Tester, besides carrying an amazing name/photo 1-2 ko, is an always-thoughtful blogger that addresses larger issues in testing.

My obligatory Joel on Software "This isn't quite apropos but damn he writes so well" link.

[Note] I will update this page as I grok additional resources.
[Update] Fixed broken link.

Posted by Noel at 02:08 PM | Comments (0) | TrackBack

February 03, 2005

Don't Worry, Nobody's Gotta Know! An Easy Introduction to Keeping Secrets on Computers

Fabulous Adventures in Coding assays this week a, well, fabulous adventure, in simple cryptography. I know enough to get myself in deep trouble with this subject, but Eric has put together three short and knowledgeable posts that begin easy and scale to easy. But you learn stuff along the way. As a side benefit, you get the answers to the dumb questions that some .NET programmers ask, saving you the trouble and face!

Posted by Noel at 02:59 PM | Comments (0) | TrackBack

February 01, 2005

A Lazy Primer on Code Snippets in Visual Studio 2005

Cut & paste is so 1984 for your code. Grok the new marvel: Code Snippets. In Whidbey (aka Visual Studio 2005), reuse your old code like the object it was written to be. (That's a shot across the bow, o OO zealots.)

The write-code-without-touching-the-keyboard way: right click on your open project file, select Intellisense, then Code Snippets. Marvel at all the submenued options. Plot your next project to use *only* those handy pre-made Microsoft samples.

The lazy way: drag n drop your highlighted code onto the Toolbar. Code appears like another tool, drag back onto your open windows for easy Snippet action. Persists across projects.

The test-driven-development way: grab someone else's hard work for generating unit test stubs.

The lazy-in-the-Larry-Wall-way: roll your own paramertized code snippets that you can Intellisense into existence. Unfortunately, there's no handy "export as code snippet" right-click menu option--are you listening, Soma? However, uber-.net-dude Wei-Meng Lee at the O'Reilly geek mecca gives a nice tutorial on how to modify the xml-based snippet files to make your own. One piece of good news: it's easy, and VS2005 parses the files on-the-fly, so you don't need to restart to use your snippet. One piece of bad news: the parser dies a silent death if it encounters escape characters in your xml.

The Dick Stallman way: share and enjoy with everyone. Code wants to be free.

[Update: added formatting]
[Update #2: added new info on a vbsnippet gotcha]
[Update #3: forgot ondotnet.com link]
[Update #4: added more info on vbsnippet gotcha with link]
[Update #5: struck #2 and #4 out]

Posted by Noel at 11:31 AM | Comments (6) | TrackBack

January 21, 2005

Unit Testing...Testing My Units...Unit My Test...Test Unit Zappa...

Didn't ever touch upon unit testing in college (in my hazy recollections, admittedly. Sometimes I think I remember more of Miles Davis' Bitches Brew than from any given CompSci class I took). Don't know much about it; boss wants to use it in the Big New Project. Suggested lines of research? I'll of course be posting off of what I find. In particular, I'd love a couple of good "Primer on Unit Testing" or such. Off to Google and the blogs, then.

[Update: if you are looking for links on testing, unit tests, test driven development, how to be a tester, etc., watch my linkblog.]

Posted by Noel at 04:00 PM | Comments (0) | TrackBack

January 19, 2005

Easiest Whidbey Install Ever

Those of you who have suffered/are suffering through the hours-long Whidbey Beta 1& 2 install--envy me. I have apportioned the sufferings of others towards my own lazy gain. To wit: I grabbed my boss' .vhd of his Beta 2 install, copied it to my machine, created a new .vmc that uses this existing .vhd, and booted the new vm. Voila, a working Whidbey virtual machine with only 5 minutes of actual work. Now if it were only easier to push around 6 gig hard disk images while sitting on a beach...

Posted by Noel at 12:43 PM | Comments (2) | TrackBack

November 15, 2004

Fascinating Article on Software Monoculture

Props for dissing C/C++ myopism. Let's move into the 5th generation languages, people!

This also colludes nicely with recent Microsoft postings about why they're keeping C# and VB.NET in rough parity (plus or minus some refactoring issues). Of course, both run off the IL, so there's another monoculture. But there's Java, which is isomorphic to C# (or vice-versa, really) and based on a different below-covers paradigm

Also reminds me to "write into a language, not in a language" as Steve McConnell is so fond of saying.

What are shaping up to be the sixth-gen langauages? Is anybody talking, because I want to be clued in!

Posted by Noel at 03:13 PM | Comments (0) | TrackBack

November 11, 2004

New Flame War Weapon: Photoshopped Menu Screenshots

Recalling the roflol Clippy debacle, it seems another flame war between VB.NET and C# developers has sprung up over at Panopticon. Which leads, as always, to name-calling and comments about whom carries the real set of geek-cajones, played out over a funny exchange of photoshopped menu screenshots. I for one will refactor myself to welcome our new C# overlords.

Posted by Noel at 05:00 PM | Comments (6) | TrackBack