Someone just told me that comments are not working (I tried it, sure seemed that way to me). So I guess no one can call me an idiot today then. :)
I am having some weird problems with Visual Studio lately.
Here you are working on a window all happy and smiling. You go away from the designer for a second (to build, work on code, whatever) and when you come back things are missing. Big things like that grid you spent and hour on.
And when I say missing, I only mean from the designer. The code for the objects still seems to be there and it is still listed in the properties box object list. And about 50% of the time you can close Visual Studio and reopen with everything back in place (that is assuming you didn’t compile or otherwise save mucked up version).
Right now it happens about 15-20 times per day but sometimes it is much worse. And it doesn’t just happen to me, it happens everywhere. So I must be wasting at least two hours a day just waiting for Visual Studio to open and close. Yuk.
Anyway, it just happened and I felt the need to vent. Thanks for listening.
And if you have the fix for this, please send it!
It has taken hundreds of millions of dollars and several billions man-hours to get to Longhorn. And what do I use it for?
Like I said, some things never change.
Mr. Peter Coffee over at eWeek opined that developers should start writing software that knows what updates to some other company’s software might possible break our application at some point in the future. \
I think Mr. Coffee has seen too many IBM commercials. He does know that there is no magic pixie dust right?
Anyway, maybe I need to go see a woman about obtaining a crystal ball…..
I had the pleasure of attending a presentation on Longhorn at the Boston .NET User Group last night. I’m sure most of us left with more new questions than answers, but that is to be expected; it is a ways off after all. All-in-all it was worth sitting though, if just to get a glimpse of XAML, Avalon, and WinFS in action (WinFS flat out blew me away).
There was one theme that dominated the questions however, “What parts of ‘Longhorn’ will be available to the old O/S group (XP and 2003)”. We already know that some things like Indigo will be made available (or at least some part of it), but what of the other technologies? No one seemed to have an answer for this one. With this question in mind I started searching for some sort of XP/2003/Longhorn Roadmap, but there doesn’t seem to be such a beast available. Maybe someone like Chris Sells or Robert Scoble would know about such things?
Scoble seems to have a negative view of group blogs (“sucks” was the adjective he used). I understand some of his points, but I disagree with him on the bigger picture.
I’m a developer in a small company in the tiny Boston suburb of Hudson. For the last 8 years I’ve developed commercial shrink-wrap products in a miniscule vertical (independent automotive repair shops). I’ve never written a book, I have nothing from MIT on my office wall, and I could count the number of close friends in the software industry on my hands. And yet my blog is read by thousands each month (maybe more).
Without the collective power of .NET Blogs behind me I would have little chance of gaining such a voice in the community. I certainly wouldn’t have a chance of my comments on Scoble’s post read by the man himself. And while I do risk the signal-to-noise ration drowning me out, I have a greater chance of being heard simply because I share a podium with some rather impressive individuals.
I do agree that communal blogs lend themselves to comparisons with newsgroups, but I disagree that this is a bad thing. Newsgroups have so much noise that I often wonder if there is any signal in there at all. Newsgroups are often dominated by rude, obnoxious, and strangely porn obsessed megalomaniacs while the communal blogs are moderated by the site owner and the individual blogers. And where I once searched newsgroups to find code solutions, I now start with .NET Weblogs. So yes, they are like newsgroups in many ways. But I don’t see it as a bad thing; I see it more like evolution of the medium.
It is a great place for startups and established ISVs to get partnered with Microsoft. From a startup’s perspective, it is very inexpensive and gives you a lot of tools that would otherwise occupy a good chunk of your budget (5 MSDN licenses are quite expensive). And for an established ISV (like us) it gives offers a painless path to a Microsoft partnership with no certification or testing requirements up front.
With Empower, we were able to partner with Microsoft during while migrating off our existing development environment rather than having to wait for our staff to pass certification tests or complete and test our .NET product line up front.
Damn it is cold here today. Thank god for left over turkey because were it not for my cup of warm turkey soup I might have packed up and followed my dear old dad to Florida. Burrr.
No, I'm not kidding. If I even think about thinking about Microsoft's license options for another second, my head will explode. Figuring out what license you need is about the most painful thing I've ever been though (and am still going though for that matter).
Is it a CAL? A TS-CAL? Is that a User CAL, Device CAL, User TS-CAL, or Device TS-CAL? Is that a CAL and a TS-CAL that you need? OK then, is it a FPP, Open Business License, Select Open Business License, or FPP Open Select Selective OEM System Builder Excalibur-Is-Cool License? Hello? Sir? Would you like a napkin that gray matter?
There is one thing about those forums that drive me nuts (and a big reason why no one uses them), you cannot search them. And by that I mean, the search always returns nothing. At least I assume when I search for “ink” I would get something (right now I get nothing).
Julia talked about it, so has Peter, and recently Dumkey chimed in as well. What we're all talking about of course is developing applications that target the Tablet PC platform. More specifically, the surprisingly sparse resources available to those of us who want to do so. While the hardware has made quite a splash, the software community is still struggling to find a footing.
There are a number of obvious reasons why the Tablet PC is so tempting to develop for. They are cool, but it is more that just the "new toy" factor at work here. There are any number of solid business reasons to target the platform as well:
Low Learning Curve. I, and a number of others, have found that almost anyone can learn to use the Tablet is a matter of minutes. For folks who use a computer every day, this isn't surprising; they are very similar in operation after all. But what is socking was how well the computer-illiterate and technology-adverse are able to operate it (and even love doing so). One of the important things to remember is that for all of our technological advances in the last 30 years, the bottleneck for the average user still remains the keyboard. By removing the keyboard Microsoft has removed a substantial bottleneck.
Fast User Acceptance. A few months ago I took a tablet home to test our. My wife, who has a completely irrational hate all modern technology, started using it and fell in love with it. Rather than the usual "when will this thing be out of my house" I got "do you really have to give this back". I've told this story to many developers and almost everyone one of them have had received similar reactions.
Extreme Portability. Portability has been somewhat of a holy grail in the computer industry for a while now. The Tablet PC represents a significant step closer to grabbing that grail. While laptops help bring our desktop with us, it still requires (despite to it's name) a desk to sit at. The Pocket PC made the leap to working while standing, but the small screen and limited input options has pretty much limited its use to isolated tasks. The Tablet PC however gives the user all of the power of a laptop with the portability of the palmtop. No, it isn't perfect; but it is a great improvement.
High "Buzz" Value. When it comes to financing or selling technology solutions, nothing is more important than "buzz". And no, I'm not talking about hype. Hype is the ugly beast that invades the executive offices at Large Company X and suddenly forces development to being integrating Product Y for no legitimate reason. Buzz on the other hand is quite different. Buzz is what happens when a new product seems to build a massive audience without anyone noticing it is happening (the Blackberry is a good example). Buzz is the sound of synapses firing as someone thinks of every conceivable use for a product.
I've experienced Buzz first hand when I demonstrated the Tablet PC to some of my customers. They simply lit up at the sight of me using it and you could feel the "Buzz" in the air. At this particular demonstration I showed a Pocket PC with a Barcode scanner, a PC with three 20" LCD screens, an HP laptop with a 17" screen, and previewed the next major release of our software. I answered questions for an hour and only 2 of them were not about the Tablet PC. That my friends is Buzz at its finest.
So there is a lot interest in these devices. People that own them, love them. And yet, even after a full year of availability, there is very little development support for them. And without a solid developer support system in place there will be very little ISV support. We simply cannot afford to put in the R&D necessary on our own.
It is somewhat confusing that 2 years prior to release we have an MSDN Development Center for Longhorn. But we still don't have one for the Tablet PC. Sure, they have Tablet PC Developer. But I'm pretty sure there are Y2K bug sites out there less devoid of life than that place. So all we are left with is the SDK (albeit a decent one).
To be fair, I have only minor issues with the current SDK. The current SDK ships with 2 controls for developers to use; InkPaint & InkEdit. They work, but only in the most limited scope imaginable. InkEdit in particular is cute but completely impractical. When entering information in ink it either converts it to text or it leaves it as ink. Most of our users express the desire to keep the ink as ink. The only issue is that it immediately shrinks that ink to the same size as the current font. When you ink a smiley face, it is a smiley face. But when you shrink it to 8.75pt font it is unrecognizable scribble. And it just isn't what the end-user expects to have happen.
What I need, and most users want, it to be able to insert ink just like they do in Microsoft Word today. And by that I mean the ability to draw on my RTF control and have it display that ink exactly as it was originally entered. If I could have an RTF editor that gave me real support for ink, I would be replacing every single RTF editor in my application today.
So if anyone out there knows of some solid 3rd party controls for Ink, please send them my way. I'm going to try and get an comprehensive list of Tablet PC options together to post on this site.
So there you are reading some documentation, every so lightly tapping you pen against your forehead. You are in the zone when suddenly you realize:
- That pen is a Sharpie.
- The cover for said Sharpie is on the desk in front of you.
- Your forehead now resembles a Rorschach Ink Blot.
Sometimes life is complicated....
Robert Scoble mentioned an article by Tom McCune today titled "Five Myths About 'Wronghorn'" earlier today. I think Robert was correct in speculating that Mr. McCune was not in attendance at the PDC. His take on what Longhorn means seems about as misguided as any I've heard in recent months.
His statement that purchasing Longhorn isn't a worthwhile investment because you are paying for features you might not use is poor at best. And when he states "It's like going for a fully loaded SUV when only one person will be driving the vehicle to the train station. A Ford Focus would do, but you're force to buy a Lincoln Navigator" makes we wonder if he has been to the train station lately. It is full of vehicles designed for off-road and heavy-hauling being driven by a decidedly on-road, light-hauling, class of driver. Unless you really believe that fellow in the $3,000 Armani suite spends his off time hauling boulders up Mt. Washington.
Not only is his articles laced with misconceptions and inept observations, it also contains a number of factually incorrect statements. My favorite is that "Each version [of Visual Studio .NET] has a new framework that cannot be used with previous versions.". Really Tom? You sure could have fooled me. The fact is that the .NET framework is fully backwards compatible with only a few minor exceptions (and none I could not workaround in 15 minutes).
There seem to be two classes of the anti-Microsoft crowd. Those who simply don't like or can't use the solutions offered by Microsoft and therefore choose a different platform. And those who so desperately hate Microsoft that they grab hold of any argument they can in a futile attempt to prove they are correct. These are the same people who continue to use Windows 95 as the bases of every argument against Microsoft even though it is almost a decade old.
So yeah, maybe I should be driving the Ford Focus. But I just can't seem to get past the awful breaking system in he Model A. Ford just doesn't understand brakes. And have you seen that Fairmont pile of crap?
Anyway, time to hop into my Lincoln Navigator and get going; I've got a train to catch.
Saw the latest Matrix... yep... sure did...
On the up side; Gorge Lucas can now rest easy knowing that someone else now holds the title for biggest let down in modern sci-fi.
Now if you don't mind, I'm going to go scrub my eyeballs.
Every once and a while I'm reminded why I respect Red Hat. I'm not a Linux fan but these guys are least “get it”.
As reported by ActiveWin today, Red Hat CEO Matthew Szulik said recently that “Linux needs to mature further before home users will get a positive experience from the operating system“ and that home users “should choose Windows instead”.
It sure is refreshing to hear someone from the Linux side of the fence finally admit that my Grandmother isn't going to get anything out of having a Linux box at home.
Novell goes out and purchases SuSE Linux.
On the upside for Microsoft, maybe Novell can do for SuSE what it did for WordPerfect. ;-)
Eric Sink has written up a few reasons for using source code control in a “team of one”. But something he wrote bothered me. He stated more than once that “for a solo developer, source control actually isn't all that compelling”. But I think it is just as compelling as for a team of 1 as it is for 100. It is just easier to implement.
I've been working on a commercial software package for the last 8 years. I've also been the only full-time developer in the company over that same period. The product (shameless plug) is quite large are covers a vast number of business processes. And if it wasn't for good source code control, I would never have been able to do my job.
Julia Lerman pointed out to Eric, “source control is usually explained as a way of keeping developers from stepping on each others' toes”. But the truth is that your own toes are much closer to each other than your neighboring developer's. I've done more damage to my own code than anyone else ever could. The simple fact is that as the only developer on the project, I have that much more going on in my head. This leads to a lot more mental errors over the life of a project. And source control protects me from myself as much as it does from others.
To be clear, I don't disagree with Eric's reasons for single user source control (he nailed them all I think). I just feel they substantially more compelling that he (and many others) seem to. As I see it, if you are working on commercial software and not using source code control then you are taking a very unnecessary risk.
SourceGear has released a single user version of their Vault product for $49. This makes Vault an absolutely fantastic solution for solo developers. At a few hundred bucks for Vault, I would have stuck with CVS for my personal projects. But for $49? Hell, even this cheap bastard can swing that.
UPDATE: It doesn't seem to have hit their website fully, but I've hear that will be fixed shortly.
Microsoft released a free Visual Basic .NET Resource kit. And even if you are not a VB developer, it is worth a look. Among it's contents are free (yes, as in beer) copies of several big name .NET components:
- ComponentOne Studio Enterprise
A comprehensive collection of more than 30 high-quality WinForms and ASP.NET Web controls including grid components, reporting components, charting components, data components, user-interface components, and e-commerce components.
- Dundas Chart For Windows Forms, Professional Edition
Developed for rich-client .NET applications, this fully-managed charting control gives you all the features of a premium charting control. This functionality combined with incredible design-time support allows for the fast and easy creation of sensational looking charts that have the exact look and feel that you require.
- Infragistics UltraWebNavigator and UltraWinTree Controls
UltraWinTree delivers an advanced .NET tree control that surpasses the look and functionality of the Microsoft Visual Studio .NET TreeView control. UltraWebNavigator is the first tool to provide a simple, easy-to-use designer to create menu and tree hierarchies, making it possible for Web masters and non-programmers to build eye-popping navigation systems and outlines visually, without writing code.
- Sax Software Corp
Sax.net Communications makes it easy to add scalable serial communications to all your .NET applications.
When people ask why I develop for Windows, I always point to things like this. Microsoft real does bend over backwards to ensure developing applications for their platform is both easy and affordable.
- ComponentOne Studio Enterprise
For those of you interested in developing solutions for/with Office 2003, Microsoft is offering a free Developer Kit (shipping charges still apply).
"Microsoft® Office System Developer Kit 2003 contains a vast collection of SDKs, white papers, code samples, demonstrations, case studies, and other useful resources to help developers immediately realize efficiency creating business productivity solutions. It is a valuable asset for both new and experienced Microsoft Office System Developers."
Surf over to www.officedevkit.com to pick one up.
What is better than a Microsoft .NET Poster for your wall? A free Microsoft .NET Poster for your wall!
I'm the proud new owner of this tasteful .NET Rocks! mug. Very cool. :-)
Seriously, if you like the .NET Rocks! program then go show your support by picking up some merchandise. You can get a "make-your-coworkers-jealous" item and help keep these guys on the air at the same time.
Eric Sink announced what is to be included in Vault 2.0 today. Some pretty interesting and useful stuff in there.
One of my favorites is the inclusion of lightweight tags for those of us who label like madmen and don’t need the full power of the previous version’s label solution. Vault 1.x labels are actually “pinned branches”. It is a very cool concept (unpin a label and, poof, you have a full-fledged branch) but it was often overkill. So now we have the lightweight tag called a “Label” and a pinned-branch called a “Snapshot” (and the standard “Branch” of course).
Eric and his crew just keep reinforcing my decision to buy their product. All things considered, they have the best product on the market right now.
Here is a more complete list of the changes:
- SourceGear DiffMerge: New diff and merge applications replaces the diff and merge windows which were previously built-in to Vault.
- Show Differences allows several choices of how to compare the working file:
To its corresponding repository file
To a labeled version of the file
To another file on the local disk
To another repository file
- External merge app: Users who want to configure a different application for external merge can now do so.
- Repository level security: Allows a repository to be completely hidden from a user or group of users.
- Web client: Allows basic browsing of the contents and history of a repository using any web browser.
- Needs Merge: Files in a Needs Merge status are more obvious. They are shown in red in the pending changeset. At checkin time, a warning dialog reminds the user of the need to resolve the merge.
- Obliterate: Much, much faster. (This improvement will also be released in version 1.2.3)
- Shadow folders: Automatically maintain a synchronized copy of the contents of a repository folder.
- Lightweight labels: SourceSafe-style labels (aka "tags"):
Supported by the VSS Import Tool
Includes VSS-style "label promotion" feature
- Snapshots: Vault 1.x labels are still supported, and are now known as "snapshots".
- Login Profiles: Login faster by saving commonly used username/password information in profiles.
- Prompt for overwrite: During a Get Latest Version, specify that you want to be prompted before overwriting any edited file.
- Unknown files: By default, don't overwrite files with Unknown status.
- Proxy authentication: Support authentication for proxy servers which require it.
- Copy from pending changeset: The pending changeset panel allows copying the list of change items to the clipboard.
- Ctrl-A: For consistency with other Windows applications, Ctrl-A now maps to Select All.
- Non-Windows platforms: Using Mono, run the Vault command-line client under various Unix-ish platforms, including Linux, Solaris, and MacOS X.
- Command-line client: Lots of improvements to the Vault command-line client, including wildcards.
- Merge Branches Wizard: A new Merge Branches feature replaces the Merge Branch into Trunk feature.
Merge changes between branch and trunk in either direction.
Merge changes from any folder to any other repository folder, even if neither is a branch of the other.
Specify exactly which changes you want to merge from the origin folder to the target.
Option to automatically merge individual files or leave them in Needs Merge status for manual examination using the SourceGear DiffMerge app.
- Failed login: Better error message avoids password-guessing attack.
- Failed connection to SQL Server: Better error message helps with resolution of common configuration problem.
- Checkin dialog: When invoked from a context menu on a folder, the checkin dialog only lists the pending items which appear under that folder.
I am on a “great quest” to find a keyboard that, to put it bluntly, does not suck. It started out as a tiny “errand“, turned into a “hunt“, and then escalated all the way up to “great quest“ in a matter of days. And if I do not find a answer soon, I fear I may have to jump right past “epic quest” status and head straight to “ludicrous obsession”.
Every keyboard I have tried in some 6 odd stores has been some variation of the “mushy key” keyboards. I personal feel that such keyboards hold all of the elegance of typing on a napkin and are all so sensitive that you end up fat-fingering every other letter.
In my quest I have had several recommendations for KeyTronic keyboards. They are nice, but I'm not a fan of the L-Enter style keyboard and the only black, non-L-Enter, keyboards they have come in funky ergonomic shapes. And I'm not sure I would find that a comfortable fit.
The other recommendation was for Unicomp keyboards. These guys actually make the old buckling-spring keyboards they IBM and Lexmark made famous. This looked the most promising, but they don't seem to offer a keyboard in black that also includes the Windows keys (unless I go with the integrated mouse combo). Too bad too because I really love this style of keyboard.
Given they I type for a living, my keyboard matters a lot to me. Most people think its overkill, but I imagine I would find Tiger Woods overly picky about his golf clubs.
So what is your keyboard of choice? And more importantly, where can I get one. ;-)
I just received my latest MSDN installment and found, to much delight, that they have finally redesigned the DVD set so that each DVDs content and color has actual meaning. And even more important, the yellow disks now use black text rather than white (the white on yellow was flat out illegible).
My compliments to the MSDN crew; fantastic job guys.
I've been looking for a good rich client to post to my blog with (I just don't like editing in a web page). Unfortunately I can't seem to find a workable client out there.
NewsGator works, but only occasionally. For example, this post was first attempted from NewsGator but it never got here. This happens a good 9 out of 10 times. It is one heck of a reader, but the posting has a way to go.
w.Bloggar looks promising. But I just cannot get it to work. When I point it at weblogs.asp.net/mlafleur/services/metablogapi.aspx it just returns an XML parsing error. I know other have made it work before, but it sure seems broken now.
Any ideas out there?
UPDATE: It seems my issues are related to a bug in .Text rather than the client software.
I've learned something this month. Ok, I learned a few things:
1. Life without an internet connection is just too much to take.
2. Life with a dial-up internet connection is inexplicably more horrible that #1.
3. The world needs better keyboard. I'll elaborate on this one in another posting soon. But I would guess you know exactly what I'm talking about.
4. Video drivers don't work, ever, period. And even if they do, they will be broken by morning.
Why is it that every piece of hardware I buy these days comes with drivers that simply do not work? It seems that no matter how new the product is, the drivers it ships with will be useless and I'll be forced to go hunt down updated versions. As a developer I know that bugs happen, but this is getting ridiculous.
Today it was a new LinkSys router and 3 LinkSys NICs. These are all brand new products (they are from the new 802.11G product line) but before I could use them I had to download new drivers for the NICs and flash the router's BIOS.
Normally this isn't too much of a problem, I just download the drivers and move on. But this just happen to be in the new office that currently has no internet connection (see previous rant). So I ended up having to drive home and download the drivers.
For what it is worth, I'm very happy with the products now that they are working. But the amount of work it took to get them working was a bit frustrating.
Ed Kaim's latest post is going to change will change the face of every industry forever.
[Now Playing: Unknown - Chapter 7 (00:00)]
[Now Playing: Unknown - Chapter 7 (00:00)]
.... I'll just leave it at that.
[Now Playing: Unknown - Chapter 7 (00:00)]
As I mentioned last night, we are moving into a new office. Along with this move comes the purchasing of new development machines. Now it has been some time since I actually purchased a myself, so I was in for quite a shock. And after spending 3 hours working on a PO I came to a conclusion; we must end this acronym madness!
I mean it guys, we have gone way overboard in the naming department. I can't for the life of me tell whether I'm purchasing a PC here or ordering a medical procedure. It is no wonder that the rest of the world looks at us like we are lobotomized martians.
I know that we spend so much time surrounded by this technology that we simply get used to the massive collection of acronyms. And I'm sure it as true for the hardware guys as it is for us software geeks. But I've now seen what it looks like from the outside, and it ain't pretty.
Oh, and does anyone know what an AOPEN MX440/128/DX9 is? Is it anything like a vasectomy?
I got this off of Savant's web site today... I will kick your monkey butt!
Kaje is a Man-Eating Samurai Monkey with a Battle Rating of 8.9
Unleash your own Food-Eating Battle Monkey
Know what the problem with 3:00AM is?
I'm awake for it.
We decided a little while back to add a developer to the company. Until now it was just me and some contractors to pick up the slack. But as the customer base has grown and the decision to move to .NET was made, it became clear that I needed real full-time help.
Now, for the last 4 years I have worked out of my home. And for the first 2 it was fantastic. For the last 2 however... Lets just say that my cat is a poor conversationalist and the dogs don't seem to care about who was booted off of Survivor. Seriously, working at home full time is lonely; damn lonely.
So not only are we adding someone, but we also rented office space to house the two of us. It is a very nice space in a beautiful old building (built in 1834) with hammered tin ceilings and oak trimmed walls. Oh yeah, and HUGE windows with stained glass at the top. Windows that were quite dirty and that I decided I was more than willing to just clean myself.
Funny thing about stained glass, it is made up of some very small pieces. Insanely small pieces in fact. There I am, straddling the top of a ladder with a bottle of Windex in the right hand and a tooth-brush in the left, doing my best to scrub microscopic pieces of colored glass. But I did it! All the hard work was over, the windows were clean! And so I stepped down from my ladder, looked up and my window and thought to myself: “Hmmm, doesn't look any different at all”.
After you have read it you'll understand why when someone gives me that line about “software development should be like construction”; I tell them it already is.
I've been working with the Compact Framework the last few days and I'm really in love with it. Talk about simplifying PDA development. Wow.
In a matter of hours I had a simple UI that could connect to our existing Web Service API, search for a customer record, and then edit that record. And most of that time was spent working on the UI (I'm still getting used to such a small screen area to work with). Pretty sweet if you ask me.
The only thing I wish they could enhance is the events for the controls. More precisely, it would be nice if each control supported a Click event. Currently most do not, so you need to do some playing in order to get a click-able image for example. Not really a big deal, but it would have saved me some extra work last night.
There seems to be more and more optimism on the job front. I've started to notice more job postings recently and while I'm not expert, it seems to me to be a good sign for unemployment. Charles Lieberman seems to think that it isn't just recovering, but doing so quickly. He has an interesting article over at CNBC. If nothing else, it is nice to see something other than the doom-n-gloom articles of the last few years.
After the New England Patriots were summarily shellacked by the Buffalo Bills last Sunday, I felt rather gray the entire week. There is nothing worse than getting all hyped-up for football and having your team look like they are a pop-warner squad, post-sugar high. But thanks to the Eagles, I feel a better week coming on.
My condolences to the Eagle fans out there. Two weeks of lack-luster football can be hard to swallow. But as they say, better you than I my friend.
Now if those damn Red Sox would just please stop getting the flue...
The other day I blogged about my frustrations with the ImageList control. My knee-jerk reaction was to call for un-sealing the ImageList and many people were quick to point out why it was sealed in the first place (some not so politely I might add). After some more thought on the topic, I think I may have found a way to leave the ImageList sealed, but still allow me to solve my problem.
The ImageList holds a collection of Images and these images are typically stored in an ImageStream object. One of the things you can do with an ImageStream from an ImageList is pass it to another ImageList control. So when I talk about creating a "Global ImageList", what I'm really asking for is a "Global ImageStream".
The problem now is that the ImageStream property isn't available at design time. If the .NET team were make it available, I could point it to my global ImageStream and have it available at both run and design time, solving my problem completely.
Sealed ImageLists suck and I'm getting ulcers from working with them.Ok, so maybe I should explain a bit more here. I have a rather large application with a rather large number of windows. Each of these windows has a toolbar and menu of some kind. And more importantly, they all use the same collection of images (of the 100 images in my collection, 60% are used in 90% of the windows). And thanks to someone on the .NET team, I'm forced to either maintain a separate ImageList for each of my windows or loose all design-time functionality of the ImageList.
I'm not looking for the world, just a shared ImageList. If I could just build my own UserControl that inherits from ImageList, I could then add my images to the UserControl and in turn use that control on my forms. Then I need only maintain a single ImageList that every form could have immediate access too. It would be ImageList Nirvana. But no, I'm get to remain stuck in ImageList Hell because someone at Microsoft deemed me to dangerous and sealed the damn class. Thanks...
I had the pleasure of attending on of Microsoft's new "Developer Community Seminars" today. One of the nice things about being a developer in New England the last few years has been Russ Fustino and his "Russ' Tool Shed" quarterly seminars.
When Microsoft moved Russ to Florida a month or so ago, I was afraid I had seen the last of the "tell it like it is" development seminars. Let's face it, most of these seminars are "tell it like marketing says it is". And while those marketing seminars might present a nice excuse to get away, they are almost always more noise than signal.
I'm happy to say my fears were completely unfounded. The presentation I say today, put on by Joe Stagner, was everything I hoped it would be. To say he "told it like it is" would just not do it justice.
Now if they could just get him into an orange hard-hat with a Carl Franklin song playing over the sound system... :)
[Now Playing: Unknown - Chapter 7 (00:00)]
So here I am, happily working on my application. Free as a bird and not a care in the world. When suddenly, a 300 ton anvil comes crashing down on my fingers. And written along it's side is "Image List".
I've just now added the same collection of images to yet another instance of an Image List for the gazillionth time this month. Every toolbar in my application has a common set of icons, and because I can't inherit/wrap/share the Image List, I'm forced to add it manually to every Image List control on every form.
I'm not looking for the world, I just want a Image List that I can share with every toolbar in my application. And No, I don't want to create a static image list an attach it in code. I want it in my fancy designer damn it! (how's that for diplomatic?).
So my dear friends at Microsoft, fix this! Or I'll be forced to throw this anvil back at you.
[Now Playing: Unknown - Chapter 7 (00:00)]
Just when I think I've seen the craziest post ever, I find I spoke too soon.
Some other enlightened should posted over a Joel's board today (quite a day at Joel's a guess). It seems that Macromedia Flash cannot handle Right-to-Left text processing. Technical problem? Poor design? Nah, it is because they are racists.
I need some Tequila.
[Now Playing: Poison - Talk Dirty to Me (03:44)]
I've heard some rather specious arguments defending the GPL and it's followers. But this one over at Joel's message board takes them to an entirely new low. The gist of his argument is that the GPL is Marxist and this is a good thing.
My favorite part? It is where he claims he supports the GPL and Free Software Foundation "because essentially, they proved that a socialist society is possible".
Yet more proof that if geeks ran the world we would be dead in a week.
UPDATE: Sorry, wrong URL there. This is the correct one.
There is nothing better than 5:00 PM on Friday. A full weekend of being unplugged works wonders for me.
Of course, being a geek and all, I also use it as a time to work out some of the more complex problems without the pressure of actually working. There is just something about geek and workaholic that go hand-in-hand. Even away from the keyboard, I think about code I'll work on when I get there. Oh well.
I am off to clean the paintball gun. After all, nothing takes your mind off of work better than getting peppered with hot-pink paint. ;-)
[Now Playing: They Might Be Giants - Istanbul (Not Constantinople) (02:38)]
The best post was from Philo:
Why does Linux *have* to be a market success? The market has Windows, and that seems to be satisfying most people just fine.
Is there a need for Linux somewhere?
I'm not sure I agree with the implication, but it is an interesting question. 10 points for being gutsy at least.
Personally I think there is a need for Open Source products. Not because they add value (some do, most don't) but because they keep the big boys honest. They are the software world's equivalent to a "running game"; it may not always produce good results, but that doesn't diminish its role.
[Now Playing: Guns N' Roses - My Michelle (03:40)]
Chris seems concerned about higher primates programming. He shouldn't, lower primates have been doing so for years. ;-)
Roy started a stir last week when he brought up the every thorny topic of C# Case Sensitivity. I've not seen so many people take sides on such a ridiculous issue since the great debate over Pamela Anderson's breasts (were that better before, after, or after-after?).
What most VB developers miss with C# isn't really Case Insensitivity, it is Case Correction. When you define a variable in VB with the name sOmEvAr, VB will automatically correct future references as your type. So if you accidentally enter SoMeVaR, it fixes it for you right then, preventing an inevitable compiler error. This is something that could be added to the IDE without adversely impacting developers who don't want the feature (just turn it off). And if the implementation worked similar to Word's auto-correct feature, you could undo the IDE's correction by pressing CTRL-Z (any auto-correction is considered an undoable step).
So lets all just cool our heads for a bit and remember that just because you develop one way, doesn't make you any more correct than the next guy. And for the record, they were better before.
Joel is talking about Vault and CitiDesk today. I feel it is the most brilliant post he has ever made. The fact that it includes a quote from me has nothing whatsoever to do with it... ok, that's a lie. ;-)
My only experience with CitiDesk has been from toying around with it. I've not had a need for any serious use yet. But as I said last week, this will not stop me from checking out every new release. I'm hoping 3.0 has something in it that I can really use over here.
It also seems that Mr. Oliver has generated more hits on my blog than I've ever seen (three times the norm). Thanks dude.
I'm about to leave to attend a memorial service for a childhood friend of my wife and I. His name was Seth Michaud and he was a Captain in the US Marines. On June 22 he was killed in Djibouti, Africa in a friendly fire incident. He leaves behind a wife and 18-month old son.
My wife and I grew up with Seth and many of our happiest memories include him (I once stole 31 gas caps with him for a scavenger hunt... bad bad bad). And while we have not seen him in some time, his loss hit like a ton of bricks. It reminded me that every man and woman who has given their life for my country has left behind a legacy. A legacy that I knew nothing about and thought little of, until now. I'm glad part of Seth's legacy includes me. I'm a better person for having known him and anyone who knew him will never forget.
On the Friday before his death he posted a profile on Classmates. While I try my best to maintain my macho-manliness at all times, I must admit to crying like a baby after reading his profile that Sunday night.
We all have many heroes and many friends in our lives. I was privileged enough to have someone who was both.
Rest in peace my friend and thank you.
[update: fixed some broken links]
As a customer of Sourcegear (Vault) and Fog Creek (FogBugz), I was thinking today about how much blogs are influencing my purchasing decisions. I don't think we can call it "Marketing", its more like "Blogeting".
In the past I would learn about new products either from a friend or by seeing an advertisement. My decision to purchase was based almost exclusively on the demo experience. I'm sure that I missed out on a lot of great products simply because I didn't "get it" when I played with their demonstration product. If they didn't hook me within 10 minutes I moved on without so much as a second thought.
But with these two products something different occurred; I learned about them from the owner's personal blog (Eric Sink of Sourcegear and Joel Spolsky of Fog Creek). This changed the entire sales paradigm by injecting a personal connection not found in normal business relationships. I found I cared more about them, their company, and their products. I was no longer dealing with "Faceless Company X" but a real human being. I was buying a product from someone that I knew, I liked, and wanted to be involved with.
This connection also effected my demo experience. Although in both cases I found the initial releases didn't fit me, I didn't walk away. This was because I wanted to like their products. I liked them so much, how could I not? So I stuck around and eventually purchased each product when it did fit my needs (I purchased Vault at 1.1 and FogBugz at 3.0). And since I had watched the product grow and became part of the community around the product, I can't see me ever leaving.
I'm a customer for life and that means a lot in today's market. Thanks guys.
I just love new toys. :)
This past week I've spent some time playing around with the 1.1 preview for Sourcegear's Vault source control system. After a few minutes I was impressed, after a few days I am in love with it.A little background on Vault might be in order. Vault is a full features Source Control system that handles both CVS and VSS versioning styles. It is also their answer for replacing Visual SourceSafe. They make this really easy by offering a complete migration tool. It was written using C# and uses ASP.NET Web Services to connect to its SQL Server database. All-in-all, very cool product.The single most important improvement over 1.0 is the integration with FogBUGZ. Although other SCC providers can be integrated, Sourcegear is the only provider to build their implementation directly into the product. Most other implementations are simply hacks devised by FogBUGZ users to parse comments for the bug#. But with Vault you get a dedicated field for this purpose, making it a lot less error prone.Integration with FogBUGZ gives Vault an almost complete answer to the Borland StarTeam Task feature (my all time favorite SCC feature). Tasks allow you to put any collection of changes into a single context. For example, you could have a task "Fix error when printing" and every checkout and checkin would happen within the context of that task. This let you know what code was changed for any given task. Now I can achieve similar results with a combination of Vault & FogBUGZ. So when you want to know exactly what was changed to fix your printing error, just look at FogBUGZ and it will list the files (you can even run a diff against them from your browser).Why almost complete? It is still missing one key aspect of a task based system. In a true task based system, checkouts should be related to a task (not just the checkin). This is only a minor issue for me and if you use a CVS style of versioning then it isn't an issue at all (being that you don't checkout in the first place).Most of the other changes seem are what you would expect from a point release. There are some noticeable performance improvements and I'm told the Visual SourceSafe import has improved a lot. There is also a new feature called Keyword Expansion but I have no earthy idea what that means.
<pointless rant>In New England we have this thing called a rotary (you might know it as a Traffic Circle). Unfortunately MapPoint has forgotten that New England is no longer part of the British Empire. I say this because they insist on referring to a "rotary" as a "roundabout"; something you might find at Big Ben but certainly not on Cape Code. And for whatever reason, this drives me out of my mind.I know I'm being ridiculous and petty. I know it really doesn't matter. But as a full fledged Masshole, it is my duty to be ridiculous and petty.Maybe I should top of my petrol, toss my gear lever into drive, and speed down the motorway for a bit. Maybe I'll stop at a flyover, grab a pint out of the boot, and spend some time cooling off.</pointless rant>On different note, it is hot here today. Damn hot. And genius that I am, I've yet to pull the A/C out of the attic. Sigh....
Four times today I have seen Microsoft spelled with that stupid $. Every time I see this it reminds my favorite Penny Arcade strip ever: http://www.penny-arcade.com/view.php3?date=2002-07-22.
I stab at thee!
I downloaded MSN 6 yesterday and aside from some issues signing in, it seems to work great.
My only gripe is that they still have not added my favorite ICQ feature; the ability set your status (offline, busy, available, etc) for each person individually. I used this feature a lot in ICQ so that I wouldn't get interrupted by friends and family while working. But I also want to remain online so I can be seen by the rest of my team who do need to be able to interrupt me on occasion.
Without this feature, as soon as I go online I get assaulted by 100 IMs from everyone I've ever met in my life. :-)
Many people are forced to use multiple source code control systems on a single PC. For example, I do a lot of side projects that are stored in CVS. I have another project that has some VB code stored in PerForce. And I'm working on a new project that will likely be using SourceGear's Vault product.
On top of those three systems, I'm a zealot on Source Control and try just about every product that comes out. This means that I often have 5-10 different systems installed at the same time.
For some reason, Visual Studio only supports a single SCC provider called the "default" provider. This always struck me as odd because it implies that there can be "non-default" providers. Well, there can, you just can't use them. :--)
The fix has always been to edit the registry. Or if you are like me you would create a bunch of .reg files to make the edits a bit quicker. This works but is a real pain in the butt.
So, I'm installing Visual Studio .NET 2003 right now. Based on my prior experience with this installation, I can plan on working by Friday.... Maybe...
I'm going to go to my corner and whimper in pain for a few hours. <sigh>
There is a rather amusing post over at Arcadian Del Sol (sort of a blog for gamers). The post deals with violence in video games and how previous generations were not lacking in violet games themselves. But what really got me was "Membly-peg":If you aren't familiar, here is a summary: Mumbly-peg is a game where you throw a knife in the dirt near the outside edge of someone's shoe. They move their foot to the knife, pick it up, and do the same to you - as the game proceeds, your feet get further and further apart until someone falls down; last man standing is the winner. My father explained the one wrinkle in the rule set as follows: "you had to be careful not to stab the other guy in the foot because if you do, you lose."
Lets make sure we all understand this: If you are stabbed in the foot, you are the winner of the game. Victory is yours; celebrate and revel in it on your way to the emergency room.
I was never very athletic as a child but if winning had meant having a screw driver impaled into my big toe I think I would have been more ok with loosing.
Then I got to thinking, can you imagine if this game gone professional?
Reporter: Well Champ, you have just won the Mumbly-peg World Series for the 8th year in a row. To what do you attribute your success?
Champ: Good aim, solid balance, and really fat feet.
Matt Puccini is a moron and Scott Bellware doesn't like him very much.
Always here to cut down on your blog reading time....
Keith Pleas taught me a few things when he have a talk on Localization at the Boston .NET User's Group last night. But the most important one was this: I will never do localization! One of the most important things in being a developer is knowing you limitations, and this folks is one of mine. I would quite simply hang myself within hours of starting a localization project.
One a side note, Jeff's on .NET was very interesting. He insight into ngen.exe answered a lot of lingering question I've had about the utility. If you have a chance to see him speak, do so. He is one of the few speakers that can speak geek without making you feel like you just walked into a chess club from hell. Very funny, and very informative.
And sorry Jeff, I still agree with Chris Sells. Unseal the darn framework. Interfaces would be an improvement, but I would rather no have to rewrite the class completely just so I can make a minor improvement.
And just when I thought everything was going good, a virtual hammer falls on my knee. Just a minute ago, I heard that Russ Fustino is leaving New England for Florida!
For those of you not in New England, Russ is a legend around here. For the last 5 years he has run the most entertaining technology seminars I've ever had the please of attending.
Thanks for the fun Russ.
Source Code Control is an absolute passion of mine. I get physically ill at the mere though of developing software without it. I could go on for hours about how important it is to understand and use source control, but I'll save you the pain of reading it. I'll just say this; If you don't use it, go pound sand. How is that?
One of my all time favorite source control systems is CVS (StarBase gets top honors, but at $6,000,000,000 per seat they don't get my business). The great thing about CVS is that it is very flexible and completely free. Don't get me wrong, there are defiantly issues with it, but most of them can be ignored. Especially in the face of it being "free".
There is however one major issue that has prevented me from using CVS in the last few years, no IDE integration with Visual Studio. There were some tools out there like JalindiIgloo, but they just didn't cut it (really, it flat out doesn't work...).
I could have just used an external IDE to manage it like WinCvs or TortoiseCVS. But WinCvs offends my UI sensibilities. It deserves a Life Time Achievement award from the UI Hall Of Shame. And while I do like TortoiseCVS, it just doesn't feel comfortable to manage source code from within the Explorer. To CVS wasn't much of an option for a long time.
Then I found the "CVS SCC Proxy" plug-in from PushOK Software. The basic concept is that the PushOK Proxy 100% mimics Visual Source Safe. This means that you get all of the integration benefits of Visual Source Safe with solid support of CVS behind it. Oh, and it is Free as well.
I cannot over exaggerate how cool this little tool is. And I cannot tell you how happy I am to finally be able to use CVS with Visual Studio and not have to handle anything outside the IDE . The best part is that I can now intergrate my FogBugs database with my source control.
I've tested this product with Visual Studio 2002, Visual Studio 2003, Visual Basic 6.0, and Visual C++ 6.0. I found no problems using the tool this any of them.
Now if I could only find an ASP.NET browser for the CVS repository....
This question was posed to me at a development meeting and I simply could not think of an answer.
If a user has SQL Server 2000 installed and then installs an instance of MSDE 2000, do the limits of MSDE remain? In other words, will that MSDE instance be limited to 5 batch jobs and have the same performance degradation that MSDE alone would have?
I had the pleasure of interviewing a recent college graduate the other day. While he was one of the smartest kids I've met in some time, I was utterly shocked at how many holes where in his formal education. What is even more disheartening is that I have also learned that his experience is very much the norm.
What struck me the most was how anti-Microsoft he was (the entire college world for the matter). Is every professor looking to turn out a legion of Microsoft haters to go fight to "good fight"? With 90+% of the world running Windows, this is quite a disservice to their students. The fact is, there are not a lot of Linux development positions out there for these kids. And Open Source doesn't put much food on the table.
DataGirl got me thinking....
Most every blog includes a comments section. The thing is, it is almost never used (with the exception of Chris Sells' blog that is). I think this has a lot to do with the format. It is more of a "bathroom-wall" approach than a discussion forum.
Maybe we should borrow a concept from the blog's older cousin, the Rant Site, and use actual forums instead (each post is then linked to a discussion thread)? They do lend themselves to more of a community than the standard comment system we use today.
Borland just released the Optimizeit Profiler for .
NET. I had the opportunity to see this little guy at the Windows/VS Studio 2003 Launch Event in the other day. It was pretty impressive and relatively easy to configure. Boston
As with everything Borland, the $699 price tag is a bit much. I’ve not used many profiling tools in the past so maybe it is competitive. But for someone like me who doesn’t have a desperate need, just a strong desire, it is more than I’m willing to toss into the budget.
Eyes bleeding.... Head pounding... Going to explode any second now... AHHHHHH!
I'm in the middle of a beta rollout of a new release.
It always astounds me just how easily end-users can break an installation no matter how much testing you do before hand. A subtle difference in their OS installation that you didn't account for and BOOM, a nightmare ensues.
What gets me is that I added even more layers of testing for this release. By using VMWare we were able to set up 25 different operating systems in varying configurations and patch levels. We figured that testing each install on this setup, we would catch most (if not all) of the major installation issues. Well, 1st install.... 1st nightmare.
I'm starting to see why most companies employ an instillation engineer. Installations have become so complex that it is almost an application unto itself.
I'm think I'll go find a corner and cut myself for a few hours.
Anyone know how to make w.Bloggar put in paragraph marks?
Unless I manually put the < P > in, the published results all end up on a single line. It is really annoying.
I have to say, w.bloggar's interface is quite nice. I finally understand why so many folks didn't like using a web interface to post to their blog.
One item to note, the word "blog" isn't included in the spell checker dictionary. :)
This is just an update on my SpamNet experience so far:
- Hours Running: 72
- Spam Filtered: 894
- Spam Missed: 1
- Non-Spam Tagged as Spam: 0
If 894 spam messages seems high to you (someone said it did) then feel for me. I've had the same email address for over a decade so I'm on just about every list ever published.
I just bumped into an Anti-Spam tool that actually seems to work. It has caught 100% of the Spam coming into my In-box for the last 48 hours without ANY interaction on my part.
It is an Outlook Add-in so it is seamless (no external program to scrub your email first, nothing server side required). This was something I've wanted for a while now.
And at $0.00, the price is just right. :)
Check out SpamNet from Cloudmark.
There is an interesting article about how Fidelity Investments is using biometrics over at InfoWorld. This is all very cool stuff.
Now I just need someone to hire me to build solutions that use biometric identification. Anyone? ;)
Julie has made me feel guilty for focusing on the language more than .NET itself. I admit that I've ignored large swaths of .NET in my desire to get up to speed on the languages (C#, VB.NET). In hindsight, I've probably short-changed myself in the process because so much of what makes up .NET is contained in the Framework rather than the language itself.
So, with this in mind, I've spend the last two days digging into the multitude of classes in the .NET Framework. One thing I've learned is that there are a lot of damn classes.
My only question; is there a function to put my brain back into my head? It seems to have melted and drained out my ear sometime around class number 4,000....
Also, commenting on other peoples blogs is inconvenient because you have to manually go back and check whether you've been flamed :P or not :-)
This is a mighty good point. It would be nice if there was a better way to handle comments. They lend themselves to a message board format but in practical terms that are more like shouts from the peanut gallery.
Personally, I tend to only leave a comment if it does not require a response. Otherwise I make my own blog entry or leave the entire subject to fade into memory.
I had written this rather long rant. Realizing the size was far to large for a blog entry, I decided to edit it down. What I ended up with is the following:
C# is case-sensitive. I hate that.
I think that sums it up.
Well, I’m out of Web Service Hell.
pointed me in the right direction and I had my first Web Service working pretty quickly. Christian Weyer
It turns out that the dataset is only included in the WSDL if it is actually being returned by a function. Simply including it in the project, even if it is used in the code(as mine was), does not mean it will be made visible to the outside world.
This does make some sense as you wouldn’t typically want to see a bunch of internal components of the web service unless those components could be used by the client application. Now that I understand this little rule, things are much clearer now. Of course, it would be nice to have had this documented someplace. But hey, where would the adventure be in that?
I’m still working though some issues in my head (data collisions and exception handling for example) so I’m not quite in Heaven yet, but I am comfortable in purgatory. :)
Thanks again Christian.
The army is using dolphins to hunt for mines in the Gulf. How frickin cool is that? Something out of SeaQuest. Worried about Al-Qaeda attack divers Fear not! Deploy the sea lions (no, not sea monkeys).
The continuing saga of a beloved
family pet that becomes national hero
You just know that the WB, UPN, or
PAXput a script into development 10 minutes after this story was published.
I went to an interesting little event put on by Acer and Microsoft today. The topic was Tablet PC Development. Considering that it is put on in part by Acer, and advertised to IT executives, there was quite a bit of actual code talked about (normally these things are all sales pitches with a “oh yeah, there is an SDK available” shoved in at the end).
I was quite impressed with what I saw and I am now officially sold on the Tablet PC as a platform. Admittedly, I had my doubts when Microsoft first announced the Tablet PC. And even after using it I was skeptical that development specifically for the Tablet would pay dividends. But now that I’ve seen how easy it is to implement Digital Ink into your application, my skepticism is significantly diminished.
If you’re interested, there are several more of these events in the North Eastern US. You can register for them over at Microsoft Events.
I’ll be interested to see how many companies start developing for the platform.
Well, I’ve gone and done it now. I’ve started a blog.
I would like to thank
Scottfor taking the time to set this up for me.
Now, where did I put that 600 page manifesto of mine…..