I've been reading about Trackback and Pingback. The idea is to semi-automate the process whereby a site owner (in particular here, a blogger) gets notified about links to their content. The huh from me comes up due to site logs - what exactly is provided by these things (other than a whole lot of messaging) that you can't already dig out of your server logs? I've built some rough VW tools for parsing logs, and a few minutes in a workspace gets me all the information I could ever want about people referring to the various parts of my site. Gathering this information via the logs chews no additional bandwidth, uses information that's being gathered already, and means very little new code to write. So other than the buzzword bit, what's the point? I don't get it.
I can definitely identify with this strip. Scott Adams got that about right...
Charles Monteiro put out this notice for the STUG meeting this Wednesday, January 15th:
This should be a good time, and it sounds like Charles has gotten RSVP's from a fair number of non-Smalltalkers. If you are going to be in NY, stop by and say hi!
Extreme Programming in Smalltalk
James Robertson, Product Manager for Cincom Smalltalk will repeat a recent presentation he gave at an XP conference in Brazil. Extreme Programming was developed in Smalltalk circles , join us and get an insight into why.
Date January 15th Location Suite LLC offices Address 440 9th Avenue, 8th Floor Time - 6:00pm to 6:30 pm Open house Time - 6:30pm to 8:00 pm Main Event
Take E or C train to 34th (Penn Station) walk to corner of 34th and 8th. Walk up one block to 9th. RSVP is requested. Please send mail to: Charles Monteiro with subject line of: NYC Smalltalk Jan 15th. Our meetings are opened to the general public. Invite a friend ! To join our mailing list simply send mail to: NYC STUG Any questions send mail to: Charles Monteiro Charles
Smalltalk is the most mature object-oriented language on the market. Most other OO language implementations, ranging from Object COBOL to Java, have drawn inspiration from Smalltalk. (If you're not already familiar with what object-orientation means, see the OO page for a basic tutorial.) One of the distinctive features of Smalltalk (versus, say, Java) is that it does not require type specifications for variables and arguments. If you look at a typical Java or C++ program listing, you'll see that a great deal of space is taken up by type definitions, and related stuff such as casting (which is required, for example, to use Java collection classes). Some people argue that strong typing makes programs more reliable. Most Smalltalkers believe that the visual clutter necessitated by strong typing, and the fact that it complicates the language syntax, more than offset its advantages. In Smalltalk, the programmer just focuses on the semantics of the problem, writes simpler code faster, and has more time left for user feedback and testing.
I changed the way comments show up in the RSS feed - new ones show up with a link back to the original entry. Unfortunately, the relative url (which is used for the posting itself) does not work and play well with the RSS feed. I have a fix, and will be posting it in a few
Resolved: whenever I see someone in the grocery store pick up an Old El Paso Taco Pizza kit, and they seem to be debating the purchase, I will spring forward, knock the box from their hand and shout RUN! POISON GAS STREAMING IN FROM THE JERSEY MARSHES! They will leave the store, and forget all about the Taco Pizza kit. I will have done my part.It's well worth reading the whole thing. This is the same guy who wrote The Gallery of Regrettable Food, a truly funny send up of 50's food.
Here's an idea - XP started out in Smalltalk (on the C3 project, specifically). XP and Agile Methodologies are getting a lot of buzz right now - and there are a growing number of XP user groups around the US and the world. One thing that would help get the word out on Smalltalk is a little pro-active behavior - take a look at the list, and see if there's an XP group near you. Then see if they would be open to a talk on Smalltalk and XP - you could go in and demonstrate the support for XP in Smalltalk - SUnit, the Refactoring Browser, etc. I think we all need to go outside the group more and be proactive. Thoughts?
I just had an odd bug reported. In BottomFeeder, select an item, and then in the html pane, click a link. Then click the link again. Notice how nothing happens? BottomFeeder uses Twoflower for the html widget. The problem is, the Twoflower machinery keeps track of the page its currently on, and then doesn't submit a request if it's already on the requested page. This is probably ok if you are browsing with Twoflower, but most BottomFeeder users are launching an external browser - in which case, a mystifying nothing is just bad. I've just overridden the code in question, and verified that it works as expected. I'll eventually push a new dev build up.
Ezboard has well over 10 million registered members and runs on 150 servers .. All Smalltalk.. And the technology improves constantly... We have built some pretty cool stuff using a basic image and BOSS files as our flat file databaseWell, I guess the BOSS file back end for this blog isn't so unreasonable ;-)
Until I noticed where it was posted. See the story talking about how Windows might be the most secure OS.
According to a new Aberdeen Group report, open-source solution Linux has surpassed Windows as the most vulnerable OS, contrary to the high-profile press Microsoft's security woes receive. Furthermore, the Aberdeen Group reports that more than 50 percent of all security advisories that CERT issued in the first 10 months of 2002 were for Linux and other open-source software solutions. The report muddles the argument that proprietary software such as Windows is inherently less secure than open solutions. And here's another blow to the status quo: Proprietary UNIX solutions were responsible for just as many security advisories as Linux in the same time period. Could Windows be the most secure mainstream OS available today?The report is from one of the analyst groups, and the site touts Windows. So take it for what it's worth...
I posted on this yesterday, and immediately contacted the DC User's group. It looks like they are interested in a presentation! So I'll be doing that sometime in February. Cool!
The Loosely Coupled Blog has an interesting post on the transparency of apis. It's done in the context of URI's, and the question he raises is, should a URI be a well defined interface into a site's functionality, or should it be an opaque thing, freeing the site designer's to change the URI namespace at will?
Apparently it's a bad idea if ignorant users like you or I can decipher how a URI works. That is, we shouldn't be allowed to look in the location bar of our browser and be able to see, for example, that http://www.google.com/search?hl=en&q=SOAP is a request to Google to search (/search) in the English language (?hl=en) for the term SOAP (&q=SOAP). According to Tim-Berners Lee, the original creator of the WorldWide Web and still head of its leading standards body, the W3C, that's too transparent. He - along with many other influential figures in the technology world - believes that "a Web application's URI namespace should be opaque," writes Jon Udell this week in his InfoWorld column. The purpose of Berners-Lee's opacity axiom, Jon explains, "was to ensure that a service provider can always reorganize a namespace without fear of breaking clients that depend on that namespace." In other words, Google should be free, for example, to insert new elements in front of the &q= operator (which indeed it often does) - or even to change it to, say, &query= (which to my knowledge it never has) - without having to worry about the potential effect on systems that interact with it. Heaven forbid, after all, that anyone should be able to link to Google's, or Amazon's, or any other provider's URI in ways that the system's designers hadn't originally thought of. That might lead to - horror of horrors - unintended consequences.Go read the whole post - it's worth it. IMHO, transparency in this area is good - the more people there are who can make use of your content, the better.
Slashdot has a story on the AMD FAB30 plant in Dresden, Germany. I wonder how many of the readers know that AMD FAB plants run on Smalltalk?
In fact, the same controversy that happened 10, 15, and 20 years ago in the manufactoring sector. I can't find the original story online (at least not free - this link will lead you to pay options), but here's something I got in email:
A wellspring of resentment is gushing among information technology workers as employers ship more computer jobs overseas - often to India - and bring foreign workers here. The job export, a stunning reversal of the late-90s demand for local IT employees, is raising questions about the industry's future and sending more U.S. workers into a downwardly mobile spiral. Businesses in the Hartford area alone have terminated hundreds of American IT employees and consultants in the past year, under pressure to boost profits and please shareholders. And more layoffs are on the way. Companies such as Aetna, ING Group and CIGNA say that they must find cheaper IT labor to keep their costs down and compete, and that Indian companies offer a well-trained and eager pool of talent. The U.S. employers also like the overnight staffing that stems from the time difference between countries.I remember these stories - about other industries - from the 70's and 80's. Not sure what can be done about it - protectionism rarely works out the way you want it to. For more commentary, I did find a link to some feedback to the original newspaper story
I am headed off to the NY Smalltalk User's group meeting, NC CD's in hand. Follow this link for details and directions to the meeting.
I've just finished the presentation to the NYC STUG, and it started a fascinating conversation. I'll post details later; right now I have to find my way back to the train station!
How to Fail with the Rational Unified Process: Seven Steps to Pain and Suffering Three RUP experts have identified patterns of failure when using RUP and written an excellent paper that elucidates them in depth: Larman, Craig, Kruchten, Philippe el al. How to Fail with the Rational Unified Process: Seven Steps to Pain and Suffering. Valtech Technologies and Rational Software, 2001. In order to ensure absolute misunderstanding and failure in RUP adoption, we provide the following checklist or score sheet. Of course, the more points scored, the more successful the RUP failure. You know you didn't understand the RUP when:And the beauty of it is, he lifted this checklist from the Rational site! Go read the whole post.
We are confident that by ... applying the checklist of misunderstandings, your adoption of the RUP and iterative development will be a spectacular mess.
- You think that inception = requirements; elaboration = design; and construction = implementation.
- You think that the purpose of elaboration is to fully and carefully define models, which are translated into code during construction.
- You think that only prototypes are created in elaboration. In reality, the production-quality core of the risky architectural elements should be programmed in elaboration.
- You try to define most of the requirements before starting design or implementation.
- You try to define most of the design before starting implementation.
- A "long time" is spent doing requirements or design work before programming starts.
- An organization considers that a suitable iteration length is measured in months, rather than weeks.
- You think that the pre-programming phase of UML diagramming and design activities is a time to fully and accurately define designs and models in great detail, and of programming as a simple mechanical translation of these into code.
- You try to plan a project in detail from start to finish, allocating the work to each iteration; you try to speculatively predict all the iterations, and what will happen in each one.
- An organization wants believable plans and estimates for projects before they have entered the elaboration phase.
- An organization thinks that adopting the RUP means to do many of the possible activities and create many documents, and thinks of or experiences the RUP as a formal process with many steps to be followed.
I spoke at the New York Smalltalk User's Group meeting last night, and gave this presentation. There were 30+ people in attendance, and a lot of conversation - questions came up, and discussion on the points I was discussing flowed freely. Of course, this was a mostly friendly audience - but even so, the conversation was excellent. The point that seemed to resonate most was this:
Gordon Weakliem writes:
Today, I'm wishing for a way to do closures in .NET or Java. I have a bunch of SOAP calls and I'd like to save off, parameters and all, and invoke later, without writing any code, or very much. I've been itching to pick up Python again, but all this is sparked by a need to do some testing, and I've got a deadline. I'll probably end up doing this the hard way.Here's his post Well, look no further than VisualWorks Smalltalk. We have a full SOAP implementation, and Smalltalk, of course, has closures. A neat aside on this is a topic that came up on comp.lang.smalltalk the other day - Cees de Groot wanted to do a demonstration of pushing a Smalltalk process out of a Windows box and then running it - from where it left off - on a different OS. A few messages later, and he had his demo using BOSS (a binary object serializer). That would work ;-)
A few days ago I posted a question as to the utility of trackback/pingback. Well, I just added Trackback capability to the blog. I did that because it's a far simpler mechanism, and didn't require XML-RPC support. I'm looking around - apparently Roger Whitney did some work on this. In the meantime, trackback is operational here. See the bottom of each post for the trackback link.
I stumbled on this post detailing some job troubles related to blogging. I can relate to that; Some of my wilder ravings about industry analysts raised a few eyebrows with my employer. Still, I'm posting on a server owned by my employer, so I have to be more careful.
Simplicity. If your policy is Radio Silence, every employee understands it and can follow it. If your policy is in any way complicated, nobody is sure what to do and things leak. Doesn't advance buzz and publicity help? I don't know. A little, but not as much as nonadvance publicity. I'm inclined to think that publicity that comes out when you can't actually buy the product is 90% wasted. Remember that incredibly big burst of Segway publicity about a year ago" With Jeff Bezos and Steve Jobs talking about how "IT" was going to revolutionize the entire universe? Cities would be reconfigured. OK, so, we all talked about the Segway, but nobody could buy one, so it's not clear that it was publicity well-spent. And it certainly seems like the same amount of publicity would have helped more if it appeared when every Walmart has Segways in stock.I'm going to have to sit back and think about this one...
Dave took a look at the code tonight, and addressed a number of updating issues. I had created an MNU with some new support I was adding for textinput (part of the RSS standard), and fixed that as well. The build is up.
Thank goodness for 2 hour delays after light snowfalls here in Maryland - I needed the sleep. It's something to do with baking. What I cannot figure out is why my wife always decides to bake after 11 pm. So off she goes, making something good (I have no complaints about the results), and it gets finished sometime after 1 am. There's always a good excuse - all I know is, it makes for late nights. This works for her - she just stays in bed. I, on the other hand, stumble out of bed, hook up the caffeine IV, and get my daughter ready to catch the bus. So here I am, yawning and catching up on feeds, news and USENET when I stumble on this post on Sam Ruby's web log. I see this:
I've been trying for days to subscribe to Ted Leung's RSS feed using Radio's aggregator. What I have been getting is:Well, I can't resist. I added the feed with no problems to BottomFeeder. I feed better already..."Can't subscribe to the channel. The most likely cure is to check the URL in a web browser and see if you can get it to read the feed. The following message probably won't help you figure out what went wrong, but we include it here because it might. "Assignment over existing table object "s" is not allowed. Delete the object first, or use table.assign to override protection."
Go to Amazon and buy some clothes. Come back later, and you'll find this in the recommendations
More evidence that I update the blog software frequently - a change to an api I made yesterday broke the comments page. What learned from this is, senders/implementors does not tell you everything once you start slapping code on ssp pages...
If you have not yet moved to VW 7, you probably want to get the new 5i.4 engines.
Here's an interesting article. The author makes the contention that languages and operating systems are converging:
A couple of months ago, at the Lightweight Languages Workshop 2002, Matthew Flat made a premise in his talk: Operating system and programming language are the same thing (at least "mathematically speaking"). I find this interesting and has a lot of truth in it. Both OS and PL are platforms on which other programs run. Both are virtualizing machines. Both make it easier for people to write applications (by providing API, abtractions, frameworks, etc.) Intro, Isolation, Perl The difference between the two, Matthew continued, is that OS focuses more on non-interference--or isolation between OS processes. The main task of a multiuser OS is to let several users use the computer simultaneously. Thus, it is important that no user can take over the machine or use up its resources permanently. Also, no processes shall be able to terminate other processes, peek into their resources, or do any other things that violate privacy unless it is permitted by the OS security policy. On the other hand, PL focuses on expressiveness and cooperation. PL provides high level constructs and facilities so that one can write programs in less time and with less amount of effort. 10 lines of higher level PL code might be equivalent to 100 to 1000 lines of machine/lower level language code. Additionally, PL provides means for people to share reusable code through the concepts of modules, shared libraries, components, etc. As time progresses, OS'es are becoming more like PL. And vice versa. OS now provides more and more ways for cooperation/sharing: IPC, threads, COM, etc. PL now provides ways to do isolation: sandboxing, processes, etc. However, in all programming languages that I am currently using (Perl, Python, Ruby), none of them had been designed from the ground up to do isolation. Thus, none of the isolation mechanisms really work well.The whole article is worth reading, and there's also a slashdot thread on this. This is interesting for Smalltalkers - after all, Smalltalk started out as an OS...
Here's an all too common story on dealing with customer service people. This poor guy had AOL, but I've had this conversation before (MSN). Not to mention the heck I went through trying to convince Sonic Blue's tech support that yes, in fact, my new replay tv was not functioning properly. I really wonder about this problem. Does the typical Help Desk staffer have a script and a guy with a rifle watching to make sure he doesn't go off message? Sheesh...
Welcome to The Buffy Network. It has come to our attention recently that a lot of visitors to this website do not have the correct setting on their computer when they try and access the site. For example, 0.82% of visitors are using Netscape - which does not support the kind of html coding we use. 2.10% of visitors dont have Java installed and/or turned on, Java is essential for some of the pop up windows we use. And 40.76% of vistors are using the wrong screen resoloution. Anything larger than 800 x 600 is too large, and the pages do not diosplay properly. Please try and use the right settings on your computer before entering the site, in order to make it look on your screen, how we intened it to look on ours. Thank you for visiting The Buffy Network. Please click 'Ok' to close this windowAnd I thought sysadmins had issues with users...
HANOI, Vietnam - An airport in central Vietnam suspended plane traffic for two and a half hours because seven cows were blocking the runway, state-controlled media reported Saturday. Two Vietnam Airlines flights from Danang to Ho Chi Minh City were delayed and two other flights from Hanoi to Danang were canceled Thursday night because the cows belonging to army units in the airport area broke free from their corrals and ran loose around the runway, the Lao Dong (Labor) trade union newspaper quoted Luu Van Hanh, director of the Vietnam Airlines office in Danang, as saying. A Danang airport official said Saturday that flights resumed promptly after all the cows had been captured.
I have been working on Pingback today, and I think I have it done. I haven't deployed it yet; that will mean a slight modification to the server configuration (new parcels to load, update to the blog software). Since I have party cleaning to do, I'll get to that later.
I actually had time to test Pingback out on my LAN, so I pushed it to the server. The bottom of each post is starting to look cluttered now; I think I'm going to have to address that. In the meantime, I should be able to send and receive pingbacks now.
A reader asks what these Pingback and Trackback things are. Roughly speaking, they are ways of finding out who is referring to your posts (and for others to find out that you are referring to theirs. Yes, this information is all living in the server logs. However, these mechanisms have the advantage of immediacy - you get notified of a link right away. Trackback is simpler, but more manual. You grab the trackback URL from the site you are linking to, add a few arguments to the URL, and then POST it. The nice part is, it only involves creating an URL and submitting it; no fuss, no muss - but it's manual - you have to remember (when you are creating your post) to list the trackbacks. Pingback is somewhat more complex - you create an XML-RPC server to get hits, and send XML-RPC messages to notify others. In this setup, your blog software looks at all the links you have in your post, and then sees if the servers at those links support Pingback. If they do, you create the XML-RPC message and send it. More server logic, but nothing to remember when you make the post. As of yet, I'm unclear on the real value. But it was easy enough to implement (hey, this is Smalltalk!), and we'll see what happens.
Reflective Surface has an interesting post on Copyright law -
Lawrence Lessig has a new proposal for copyrights. Fifty years after a work has been published, its copyright owner would be required to pay a small tax to keep it under copyright protection. If the tax is not paid for three years, the works is forfeit to public domainThere are additional links, go here to see them
So I'm reading the JSR for Generics. There's a whole lot of weasel words about why support for primitive data types would be a bad idea; I boiled it down to inappropriate concern for optimization. It took more than a page of text to get there, and my head hurt after reading it. Then I came across this:
Supporting generic types at run time seems undesirable for the following reasons:Now admittedly, Smalltalk doesn't have generics in the sense these guys mean. On the other hand, it doesn't need generics in the sense they mean - it's a non-issue in a language like Smalltalk. What amused me is their assertion that experience with such constructs is limited. This goes back to my whole echo chamber theory of Java and the designers who work there. Heaven forbid that they go and see what people using Smalltalk or Lisp have done.
Run time support for genericity has not been implemented in any major programming language, and research efforts are also extremely few. Consequently, the body of experience with such constructs is very limited. It is therefore inappropriate to deploy such constructs in a widely used, mission critical language. The risks are too great. Beyond the general principle of relying on well understood technology, the following discussion should make it clear just how big a technological risk is involved.
- Lack of experience with such constructs in widely used languages
- Burden of extensive VM changes on vendors throughout the industry
- Increased footprint on small devices
- Decreased performance for generic methods
Congress to lawyers: Don't take away our BlackBerrys. Please. In a rare intervention into a private lawsuit, the chief administrator of the House of Representatives yesterday pleaded with attorneys in a patent-infringement case to settle their differences in a way that allows the popular handheld e-mailing device to continue operating. "The device is used routinely by most members of Congress . . . as well as senior staff," wrote James M. Eagen III. Any disruption in the service "creates a serious risk to the House's critical communications and could jeopardize the public interest, particularly in the event of an emergency," he said.Yeah, I see how well they like it when the shoe is on the other foot. Could they stay away from my fair use rights while they are at it?
Ronaldo Melo Ferraz has helped me out on Trackbacks, pointing me to the Trackback specs page. Apparently, the geniuses behind this spec released a first version that operates as an HTTP GET (with args passed in the URL) and a second version that operates as an HTTP POST with arguments in the content. Sigh. Moving targets are so much fun.
I added a new RSS Feed for the comments that get added to the blog. I also think I have trackback working now, both for the old style GET and the new style POST. Additionally, I support the Movable Type API for querying trackbacks. At this point, it answers all the comments instead of all trackbacks, but I will get to that eventually.
It's one of those non-work work days. It's MLK day, a federal (and state) holiday, but not a Cincom holiday. What that means is that my daughter is home, my wife is home (and it turns out her brother is here - we had a party yesterday). So I'm feeling fairly unmotivated at the moment...
I guess the ReplayTV I had so much trouble with was just a lemon. Sonic Blue sent me a new one, and it worked just fine right out of the box. Found the DHCP server right off, changed channels perfectly - everything is cool. If the customer service interactions hadn't been so bad, I'd be perfectly content.
Hat tip to Eliot Miranda for pointing out this cls post I had blipped over:
A poster asks:I need database access I need all kinds of graphical display Which freely availabe Smalltalk fits these needs? BTW: Why I do not start immediately with Jave / C++?And the response is: Note: Many things I say here with respect to VisualWorks are mostly true with other Smalltalks as well. Most Smalltalks have threads (for a long time) even though they may not use native OS threads. Based on seven years of experience with VisualWorks (VW), I would suggest to go with VisualWorks(VW). For the past three years I have been using ControlWorks - a very complex, realtime, distributed, multithreaded framework, tool suite for semiconductor equipment control software developed using VW (www.adventact.com). I am neither part of Cincom or Adventa, just a customer of them. Reliability of VW has been incredible. Thread support is superb. Probably our application could be one of the worst case scenario for testing complex multithreaded architectures and VW has proven over the past three years. We didn't use native threads for valid reason - there was no necessity. VW (and of course in other Smalltalks as well) threads are extremely light. Unlike Java, VW threads work uniformly across all platforms. Thread creation, context switch is much faster than native OS threads ( I have measured these times on Win2k and XP using VC++, Java and VW). Java spec regarding threads is loose, it doesn't clearly tell about thread scheduling or priority and can be problem in some cases for multi platform applications. On Windows, JVM from Sun uses native OS threads. Smalltalk threads support suspend, resume and terminate operations (these operations have been deprecated in Java for few valid reasons). These operations should be used with caution but very handy in few cases (in some cases necessity). VW supports semaphores, critical sections, shared queues for thread synchronization, asynchronous notifications, inter-thread communication. As I mentioned earlier, all these were put to test in extreme conditions in our system. Interactiveness of Smalltalks are incredible, you don't have to stop the application in order to modify code (the only other IDE that comes close is VisualAge Java). All source code will be at finger tips including one for framework classes and IDE tools themselves (no non-smalltalk IDEs can claim that). Reflection capabilities are simply amazing. Any complex UI needs a good visual UI builder and VW has a good UI building tool. You can configure text fields and combo boxes to handle text as well as numbers in various formats with automatic conversions. There is a large set of widgets. All of the VW IDE tools are built using VW widgets and tools. Java Swing also has a large set of widgets. Recently, there has been lot of improvements in performance of Swing. Performance is not an issue in Java or Smalltalk. In some cases Java is better and in few cases VW works faster. Only C/C++ folks think that performance is an issue in Java or Smalltalk. Such conclusions are based on running some trivial test cases. It is very hard to write complex applications in multiple languages and compare the results. If you take VW IDE itself as a complex application written in VW, you will feel the performance and responsiveness of UIs. In contrast, Forte for Java is just terrible with respect to responsiveness and memory footprint. For reasonably complex applications, VW certainly beats Java and MS tools in the memory footprint. Unlike in Java, you can add or modify methods of framework/library classes themselves. This can be a great advantage in many cases but can be a problem in applet environments or getting code from dozen different vendors. IMO, Java should have allowed adding methods to API classes. I would suggest to download VWNC, you will see how responsive and lean the IDE is. You will need some time to get used to environment(tools, libraries etc)since it is radically different from Borland Turbo IDE derivatives (which includes most non-Smalltalk IDEs in the industry).
(I also think about Lisp + TCL/TK)
- I hope SmallTalk is faster (or at least not slower) then Java
- I like to try "new" languages"
- C++ has not garbage collector
Was a little sparse. Over on the Smalltalk IRC Channel, it was pointed out to me that the feed did not have enough information. I changed it to include the comment author's name and a link back to the original post.
Overheard in the IRC Channel:
Something you might like to hear. With VA there is high risk for our company every time a new release is made available to the public. We not only have to get our hands on it but we have to make sure all our existing applications still work when moved to the new framework. Inevitably there are changes that break things. Undocumented changes. With the VW-Dev program, if my company were using VW, we could have continual integration against the dev builds to make sure our applications are not going to hit something new that'll break the way our application works. There's no such doppleganger for VA.And the example:
The offset for all widgets were re-aligned with the windows standard instead of being consistent (ie: text is 15 high and comboboxes are 17 high. Previous versions they were both 17 high). Because we use attachments of widgets to widgets (to allow for multilingual fonts) this meant that all our labels didn't line up with our fields The labels would all be 15 instead of 17 making them progressively slide up 2 pixels at a time offset. As you can imagine, this had a rather large impact on our applications and we had to fix up the problem so that it worked the same as it did in previous versions. That is high risk and worse still it was undocumented. The opinion of management is if it's incompatible, we won't upgrade - so we need to make it feasible to upgrade. When you're hit with something like that, it's hard to argue that we should put in the time to figure it out and fix it.I found that fascinating. And the VW-DEV Program can keep you up to date on VW changes as we make them!