Saturday, April 11, 2009

Architects–r-US

I listened to the last few  Stackoverflow Podcasts where Joel Spolsky started, then continued, one of his patented offhanded attacks on the some corner of the software industry establishment.  And, those just happen to be my favorite thing about the podcast.   In this case it was his extreme distaste for “Architects.”  Or, to be fair, he was more referring to the TITLE of Architect and some puffed up anti-coders who justify their existence through the use of the moniker.

Of course Jeff Atwood pretty much fell in line and agreed with Joel, basically because Jeff see’s the world through programmer goggles(tm). By the way, Jeff doesn’t always agree with Joel, it was just fairly predictable that in this case he would because it favored a programmer centric view of the software world.

So, the question is “Is there a legitimate use for the title Architect, or is it just a trumped up label for programmers who can’t program, and spend most of their day making real programmers lives difficult?” 

I think the answer is another case of … it depends.  I think Jeff and Joel tend to focus on single well focused applications that have smallish teams that can accomplish the business task set before them.  By smallish, I would set the number at less than 75  total people involved with the development process, programmers, designers, CM, testers etc...  In many cases it could be less than 4 or 5. 

In those cases the jobs will have a tendency to overlap, the application and the platform involved will be well understood by the entire team.  The entire application concept across all disciplines will be shared by pretty much everyone to some degree.  In these cases the term Architect is really just the guy who herds the cats along the technology timeline.

So, before I say why I think the title can be a legitimate title in some scenarios, let me provide a high level definition of what I think a few software development titles entail;

  • Architect (Vision):  The person responsible for understanding the past, present and future of an application and it’s outlying dependencies.  How the application fits into the business goals and models of the company.  And, convey that information to both the management to help them make good “forward” decisions and to the development staff to help avoid painting code into corners.  This is NOT the CTO or CIO which are both making strictly business decisions.  This is someone who should be helping those positions make good choices.
  • Engineer(Details):  I always view this person as the worlds most complicated documentation writer.  This person should understand how to document an application so that if the disaster happens the new team can figure out how to get rolling.  Everything from UML diagrams, IDEF docs, specifications, installation documentation, day to day operations process documentation, CM process documentation, coding standards etc..  In other words the engineer is responsible for documenting not only how the software works, but how the team works and how the business interacts with the customer.
  • Programmer(Execution): Realize the operational and functional requirements that support the business goals in code.  And a lot more … but that’s the focus.

So back to the architect.  Although all of these hats can be worn by senior programmers, the size and breadth of some applications can require specialization.  In government development for example, you can have small coding task that are tied to multi-platform, multi-organizational, multi-jurisdiction, multi-policy requirements. 

The code requirements can be very straight forward from a functional requirement standpoint, but the deployment and security implementation rules might be extremely tedious.  Maybe some government agency is looking at a new security infrastructure and want to test it in the framework you are going to deploy into.

In other words, the amount of information one person needs to keep up with about all of the things that impact the life of your application become of over-riding importance.  I know in the government world those outside factors rarely have anything to do with the functionality of the application.  It has to do with managing thousands of applications throughout their life.

In that type of scenario I think an architect is not only valid, it is essential.  You need someone who understands your app out in the world talking with the people making IT decisions at the “family size” level.  Remember that policy is going to be established more or less globally, not on an app by app basis.  Budgets for infrastructure will determine where you need to be targeting your application. 

I could go on and on about the things that an architect needs to do in this environment, but I wanted to finish by agreeing with some additional points Joel and Jeff acknowledged.  If there really is an “Architect” it should be someone with a deep experience pool.  The person should also be cross discipline capable.  There are a lot of business case and policy issues involved with big programs.  Architects need to be able to translate those into functional/technical requirements that programmers can understand.

Friday, April 10, 2009

Is RIA the new Client Server?

I was just working on an old JDK 1.1 based web application that was running on Oracles implementation of Apache’s old JServ. Yes, I get all the cool new bleeding edge assignments. At the same time I was doing a bit of analysis on an upcoming task that looks to be a bit more modern with dashboard functionality, drilldown reporting, pretty pictures and possibly some streaming audio.

What struck me about the old code is how absolutely stripped down the client side of the servlet based web application was. It was completely static content with the most basic request/response paradigm possible. Almost no session data to track, other than a few settings in a cookie. No back button history issues, no controls, no local eventing, no java script, no nothing. Just some good ol’ html input tags inside an html form.

Remember I’ve got eye number 2 mulling over some possible directions we can take for this 12+ year old client server application written with Oracle Forms.

This is what popped into my head. Silverlight, Adobe Air/Flash and JavaFX programming paradigms seem to have more in common with Oracle Forms than the old servlet based web application that I was working on.

So here I am trying to figure out how to “un-clientserver” an application and bring it to the “modern ages” but the client code and environment is going to end up looking very similar to what’s already there. It will have more in common with the Oracle Forms app than the servlet app. SAY IT ISN’T SO!!

OK, here’s the disclaimer. I know the benefits of getting off of a thick client architecture. It just seems funny to me that it’s possible that we’ve replaced something that did what it was supposed to (the old html app) with something that works like the model it was supposed to replace (the client server app).

Here’s some general hot points:

html centric: static data, all you need is the browser, sandboxed, low/burst bandwidth utilization, very deployable, centralized administration, business code is in a single location(ok, maybe that is too idealistic), upgrades happen at the web server not every client etc..

client server centric: have to install and manage the client platform software and drivers and keep them version synched on every machine, heavy traffic, need system level access, business rules are embedded in every client, proprietary client platforms are very difficult to maintain and cause dependency to the technologies that single vendor supports ...

RIA centric: Let’s see, you have to have client side platform software installed and maintained, tons of business logic on the client side for control manipulation, security management and UI building based on user information, we spend tons of time trying to figure out how to get around the browser sandbox for content manipulation and so on. PLUS we are starting to stream BOAT LOADS of data, goodbye thin client….

So, have we really advanced? Or, are we just running around in circles thinking we are covering new ground because the hole is getting deeper on each pass? There are some seriously difficult code maintenance issues that come with a complex client server application. As the client side of RIA applications get more and more sophisticated and event and data management code becomes more complex, are we doomed to paint ourselves in the same corner?

What say you?

Thursday, February 19, 2009

VS .NET symbol issue with SP1

OK, there is a question on StackOverflow that I also have.  I’ve narrowed it down, but was a bit limited in what I can post about the problem.  So, here is a blog of the problem.

1) Symbol server set up properly

SymbolOptions

2) Symbols are being downloaded from MS successfully

SymbolDir

3) The Symbol loads properly as shown by the snapshot from the Module view

SymbolLoaded

4)  This is where it gets odd, notice I have 2 System.Windows.Forms trying to be loaded.  The one from the GAC fails.  But the one from my configured symbol directory shows as loaded.

 SymbolLoad1

5) Trying to Step Into System.Windows.Forms gives the traditional source code error

SymbolError 

I’m assuming the the failed reference in the GAC is what is killing it.  If that is so, is there a way to clean that up?  Feel free to answer here, or directly on Stack Overflow.

Thanks!

Sunday, February 15, 2009

Windows 7 – Favorite Folders poor function design

This is a minor tip that was a little un-obvious to me for about a minute.  It shows that some capabilities in the system are just awkward as hell to use.  I wanted to add my mesh folders to my favorites.  In reality it is simple.  It just wasn’t obvious what was expected.  I actually had to read the pop-up carefully to figure out what it wanted me to do.

folders-1 

So, I did what I think %99.99 of the people will do the first time they try to do this, I only read “Add Location..” everything after that bit was blah, blah, blah.  If you look at the picture again, you will see that I have the Favorites entry highlighted.  What I got was a duplicate Favorites folder in my favorites folder.  So, after breathing a sigh of relief that the universe didn’t explode from the infinite self-referencing loop, I went back and read the menu item carefully.  What it really wants is for your current path to be set to the place you want to add to the Favorites.

folders-2

Notice the path at the top is now at a folder I created called MESH.  Even though Favorites is highlighted in the browser window.

I doubt I’m alone in thinking that a browse to folder dialog was going to pop-up when I selected the “Add Location in Browser to Favorites” menu item.  You have to parse the menu sentence carefully to comprehend that it means “in this current browser window instance, go to some other folder, select it as the current folder, then scroll back up here and make sure you right click to so you don’t accidently change the folder location to one you don’t want to add.”

Like I said, it is a minor annoyance.  But, when there are 2394879234234 interface points and a lot of them act in non-obvious ways, uncertainty begins to get in the way of using the system.

Saturday, February 14, 2009

Intellisense vs Intellinonsense

99 times out of 100 I am a Visual Studio zealot.  IMO it has been hands down the best end to end IDE for ages.  Sure, it has bloated areas.  There a a million little quibbles.  There are the “less is more” people who argue for some of the more simplistic and light weight editors out there.  I have no problem with any of those arguments.  I’m simply saying that feature for feature, implementation for implementation VS pretty much gets it right.  And where it doesn’t the plug-in gurus take care of business.  VS typically makes it much simpler to implement challenging configurations.  And those previously mentioned plug-in guys make it simple to install and use plug-ins.  The result is a very, very friendly and helpful development process.

Here comes the HOWEVER… NetBeans has made major strides over the last year.  I mean MAJOR strides.  6.5 is really becoming, or I probably should say now is a great IDE experience.  And that brings us to the point of this post.  Javascript intellisense.  VS has been really weak in that area.  There is finally some rudimentary support for it now.  It takes a hotfix and a bunch of twiddly standing on one foot with a piece of tin foil sticking out of your left ear, waving your right hand counter-clockwise while holding your pinky thusly.  This is usually what I think of using the various Java IDE’s when it comes to trying to develop a J2EE app for the various web platforms out there.  It’s the programmers version of poking hot pokers in your eyes for fun and profit.

For the first time ever while using a Java oriented IDE I was truly floored by a simply awesome implementation a feature.  And that would be the Javascript intellisense in NetBeans.  This same setup may be in other java IDE’s, but I haven’t tried this in any of the others yet.  Anyhow, take a look at this snapshot:

intelli-1

There are so many little things here.  In the method signature line it lets us know very clearly which library the method/function is from.  In the doc pop-up at the bottom it tells us which browsers are supported!!  Notice the IE icon is grayed out.  That’s because none of the targeted versions of IE support this capability (supposedly, but that’s a different blog post).

intelli-2

In miscellaneous options you can target which browser versions you want to validate as well as set what version of JS you want to validate.  And the big key is, other than those check boxes, I didn’t have to configure a darn thing.  It just worked.

I know some of you out there are just fine with VI or EMACS and think intellisense is for sissies.  I bow to your superior gray matter validation and signature recognition system.  I however, can’t remember Jack s### or his brother Dave for that matter.  So, this kind of feature is absolute GOLD.

So, come on you VS brain trust dudes.  Let’s get Javascript support corrected in VS as soon a possible.

Monday, February 9, 2009

Windows 7 – Task Manager & Resource Monitor

IMO the Task Manager has been a pitiful and misused utility in the Windows OS series. The information provided on the various tabs was painfully inadequate to get anything other than the most rudimentary picture of the current state of the OS. The good people/person at SysInternals came along and provided, what I believe should have been the actual Task Manager, Process Explorer (not to mention a slew of other useful utilities, ok I mentioned it..).

Along came Vista and the Resource Monitor button on the Performance tab of the Task Manager

tm-1

No need to picture it here, but the Vista version of the Resource Monitor was/is, hopefully this won’t be to technical for you, ICKY. Limited sizing, cramped data, limited sorting and generally confusing interface. Basically, a very tiny evolution above the modal pop-up.

Windows 7 has actually improved the Resource Monitor significantly. It’s still not up to snuff with the SysInternals tools, but as a stand alone quicky utility it is finally getting useful.

It starts with the Overview tab. Notice the good info about network connections and which files are actually open and being written to. INCLUDING THE FILE PATH!

rm-1

You can size each pane and size the columns. You also have multiple histogram views. MUCH BETTER.

The CPU Tab gives us Modules and Handles similar to Process Explorer. Plus, a nice filter for the handles.

rm-2

The Memory Tab has the familiar list of processes and their respective sizes. But it also has a nice little graphic for the RAM snapshot. Keep in mind that the frames are now sizeable and you can choose which columns to display.

rm-3

The Disk Tab also has useful information that you can filter by application or process.

rm-4

Last, but not least, the Network tab which actually shows…GASP…some network information. What a shocker. Actual network information available right from an actual built-in, accessible OS tool….Excuse me while I go throw the flying pigs out of my house.

rm-5

The interface is still a bit clumsy. It’s also a bit cramped, unnecessarily so if you’ve used the SysInternal tools or a ton of other system monitoring tools. I don’t get it. MS owns the tool set. Why don’t they model the new tools on the ones that are done right? Anyhow, minor quibbles aside. There are a few other nice goodies hidden around in the right clicks. Like, Analyzing a process on the Memory Tab. Overall, this is a drastic improvement over what the Task Manager used to be. Another W7 win.

Sunday, February 8, 2009

Windows 7 and the Search Bar

I’ve seen a ton of posts about utilities for “quick launching” applications. I’ve also seen a zillion posts about the pros and cons of the toolbar in Vista vs launch pad on a Mac.

As a Windows user I have long used ObjectDock to mimic the launch pad type interface as opposed to the crappy quick launch that windows has had up to now. I also used SlickRun as a pop-up application launch wizard. The combination of these two apps gave me a lot of what Windows is missing from the app launch standpoint.

However, I have long overlooked our friend the Search function on the start menu. I still use the Search toolbar and indexer on XP at work. That is probably the most overlooked and awesome addition to XP that I can remember. I was mad that they “hid” it in the Start menu in Vista. But, I’m starting to come around to find it useful where it is.

First to use most launchers you have to use the mouse. I used SlickRun specifically to avoid the mouse. Just hotkey, type in a couple of letters and the app I want to run is display, click enter boom. On Vista/W7 you use the Windows key, then start typingsearchbar1

As I typed the word visual, the programs are auto selected. So, without picking up my hands, I type WINKEY+visual+enter and VS 2008 starts. Plus, all of the sub-utilities of VS are available and I can just use the arrow key to access them. This is a very good application access accelerator.

Plus, it shows your e-mail and music and documents that meet the search criteria

searchbar2

Between the new W7 Toolbar and making myself finally use the search function via the Windows Hotkey, I’ve found that I’m very, very happy with my application access options. You can customize what shows up in the results via the indexing configuration. That process will have to wait for another post.

Saturday, February 7, 2009

Windows 7 – Zune memory footprint much improved

With the identical library and podcast configuration, the Zune software uses about half the working memory on W7 than V x64.  My over-all memory footprint is roughly half of what it is in V x64 running pretty much the same app & services.  But, I’ll post on that separately.

The Zune software is much much snappier under W7 .  It takes ~1/2 the working set. 

zune-memory

V64-memory

On Vx64 the working set will continue to grow if I leave it running.  I’ve had it be > 500MB.  I left it running overnight on W7 and it stayed at the 135MB mark.  If I switch to the Now Playing view, the memory footprint does grow, but it stabilizes at a bit below 200MB on W7.   On Vx64 it again adds just about 100% more memory usage than it does on W7 for this same feature.

I have over 20k songs in my Zune library, and I basically just select all and play random.  Doing the select in Vx64 was painfully slow.  Doing it in W7 is just about instant.  I don’t know what they did, but I hope they can continue to improve W7 performance.  But, I also hope they figure out how to get some of these performance enhancements back to Vista.

Windows 7 – BSOD installing video driver

While installing the NVIDIA driver suggested by Windows Update, I got the wonderful blue screen desktop with the enhanced bzzzzzzzzzzzzz audio track.  Worse than the BSOD was coming back into Windows 7 to a desktop with Aero disabled!  Screenshots were created after the problem was solved and I tried to make them look as close to what I was seeing as possible.

no Aero

Ok, no problem right?  Just reset the desktop personalization…..errr….NOPE.  Desktop settings disabled?

Ok, System restore right?  errr…NOPE.  Service not available error.

Then I noticed a very tiny red x in the taskbar.  Clicking on it said “Security Service not available”.  I was also missing networking.  So, pretty much every service that Windows uses was not running.  After poking around, I finally pulled up System Configuration and WOOHOO!!!

no services  

All the checkboxes were un-checked.  Also, in the status column all of the services were “Stopped”.  You can see that they are running in this screenshot.  By, re-enabling them in the configuration file and rebooting, I got everything back to normal.  YEAH!

Evidently, Windows Update disabled services and the BSOD took place before they got re-enabled.  Hopefully, this will help someone else trouble-shoot a scary situation.

Wednesday, February 4, 2009

Windows 7 – Nice little toolbar feature

I don’t know why I didn’t see this before, but when you download a file with IE or copy a file between folders, the toolbar gets a shaded fill that acts as a progress bar for the downloads in progress for whichever app is doing the copy/download.

sshot-3 sshot-2

One of my most hated “features” of IE is the download dialog box.  This improves on that concept a bit.  Hopefully, the download dialog box will die a horrible flaming death like the find pop-up box finally did.