Thursday, July 29, 2010

VS 2010 is a bit crash happy

I have been using VS 2010 for the past couple of months to do C# / WPF and Silverlight work. It has crashed on me a number of times. For a bit it just crashed and I could restart it. Yesterday it got stuck in an endless loop. A special icon on the task bar said it was busy and if stayed busy or got busy often I should tell Microsoft. All I did was hit the DEL key while in the editor. I assume it was attempting to update Intellisense.

Today it crashed so hard I had to reboot. I tried to just start it back up but it refused. I ran Process Explorer from SysInternals and could see some left overs so I killed everything associated to VS and tried again. Never even got the splash screen, just would highlight the button on the task bar (using Win 7) for a bit then nothing. I had to give up and reboot my machine so I could use it again.

After using Eclipse for years I find this highly annoying. I left Eclipse up for months on end. I don't shut my work machine down at night in case I want to VPN in to do something from home. VS 2010 has been very unstable. Less code takes a lot longer to compile, the editor is not as full featured and Intellisense does not work as well. I hope MS gets at least the stability issues fixed in patch.

Wednesday, July 28, 2010

Kudos to Atalasoft - Hotfix added the mouse features I needed

I have been working with Atalasoft for our C# / WPF image viewer. I needed to get mouse actions on the annotations so I could show a pop-up menu when you right clicked allowing you to delete the annotation or edit its properties. Their current release had no support for what I consider a common need.

I opened a case file with them in and less than a week they got back to me with a hotfix I pulled from their FTP site with support for MouseUp and MouseDown actions. Works like a champ. They have been very responsive with all requests I have sent their way. Our software / legal folks are working with them to get the proper licenses so we can use their DotImage product in production.

So far I consider them Highly Recommended if you need to support a lot of image formats in .NET

New Visual VM released

Check out the details here

I have used this to solve pesky client issues in the past. Recently we had a certain set of client machines looking up during our task processing. Using Visual VM we were able to see exactly where the endless loop was occurring. Sadly for us it was in some third party code but we have been able to concoct a fix and get it out to the client. Just another tool that once you use it you will use it over and over.

Link points you to a download page as the new version is yet to be include with a JDK download and it shows screen shots on how to use it.

Oracle fixes the Eclipse used with JDK 1.6 update 21 issue

Details here

Basic problem involved change of a string from Sun to Oracle and Eclipse depending on that string to control some memory settings. We all probably have some code that checks vendor strings of some type and it is so easy to get bitten by them. I know I was checking for Vista in some areas and once Win7 came out I needed to check for Win7 and Vista as the combobox painting is the same between them.

Hopefully they will be able to update the string at some point, they do own Java now, and the Eclipse team can come out with a solution as they appear to be the ones that actually cheated.

Tuesday, July 27, 2010

Cleaning up computers for friends and family

This seems to happen about once a month, a friend or family member tells you their computer is running slow or crashing. First thing you do is run msconfig and disable all the start up crap. There are so many usual suspects: Adobe, Apple iTunes, crazy toolbars, insane desktop tools, etc.

I have seen machines with admittedly minimal base memory run out of physical memory before they are even done booting meaning they are thrashing the hard disk just to run a browser.

I have seen a browsers start up with 6 or more search toolbars. The machine may boot OK but when they say "it runs slow" they mean it takes a long time to start the browser.

The cleanup process is pretty fast anymore. The problems are obvious, stop the stupid start up options and uninstall toolbars. Honestly what home user runs Acrobat Reader often enough to need it to preload? I doubt very many professional users need that.

I hate all the search toolbars. Each browser basically comes with one already. I know, these things drive money and traffic to someone else but they are of no use to an end user. We really are hardly in control of our machines anymore. I have made the mistake of pressing [OK] too quickly and not unchecking the "install toolbar X" checkbox when I am updating Java or Flash or some other web helper. Drives me nuts forcing me to clean it up right way wasting my time. Multiple that by the number of computers in the house and it really stinks.

For my home machines I usually take a Sunday morning and work on one machine carefully updating things including various open source programs I use. Try to get into the "read everything" mindset and do it right. I like programs that let you download them once and install on multiple machines. Stinks when you have to tie up your internet connection on every machine because there is only the option to update on-line.

Training friends and family members does not seem to help. Same people, same problems at least twice a year. This has gotten out of control. Beginning to think I need to write a program that either helps clear this crap up or monitors for things trying to run and stopping them. I know AdAware will do that but the pop up messages are not that helpful to the average end user. They really need something that is super friendly saying "If you allow this Kevin will have to come over again and clean up again".

Friday, July 16, 2010

What does SQL experience really mean?

We all see it, job posting with a million technology buzzwords and you know you have some but not all of them so do you apply or not? Companies know they will not get a 100% buzzword compliant applicant so what areas are really required? I have spoken with places that want solid programmers, they are willing to train to their special needs. Others insist you have every requirement on the list, they don't have any time for you to learn.

Would you rather hire a person that is an excellent programmer or one that has dabbled in every framework out there but is not a finisher? I see 80/20 people a lot, they will get 80 percent of the way done with a project, get bored and move on. They are not finishers, they really don't know what it takes to complete a project through the whole QA cycle. They really don't care about bugs as they generally don't have to fix them because they moved on to another project. Their code generally reflects that because it is not extensible or maintainable. We have a research group for that. They prove that something is possible but we don't keep the code they write, we take the ideas, algorithms, how they tied together technologies and redo the code in a maintainable manner.

There is no way for you to walk into a new company knowing everything, being a senior developer on day one. You always have to learn their industry and company specific jargon at the very least and most likely will have to learn their industry business logic as well unless you stated in the same industry.

While you don't want to show up not knowing their core programming language not knowing a specific framework is probably not that big of a deal. If you know Java inside and out and have used Swing but not SWT should you instantly be eliminated for a place that used SWT? Many times you are. It is just a framework, we all learn new ones all the time. Most are very similar at the core. I was able to jump into C# / WPF due to my Java / Swing experience. The developers on staff with C++ / MFC experience hard a slightly harder road but they still leveraged that experience with relative ease especially if they are an experience developer. If they wrote crappy code in MFC they will write crappy code in WPF.

If you are a senior developer you are learning constantly. I have written custom controls in C, C++, Java and C#. The language is syntax and a there is a framework to use like Swing, MFC or WPF. Knowing how to write a custom control, all the little things to take into account for a usability standpoint, that is the real knowledge. I am not sure if hiring managers always realize that.

This brings me to SQL. I understand the language and have written queries and designed databases. I am no DBA and rarely write an SQL statement but I understand how it works and can look up specific syntax details when I need to write more than a simple query. Just like any language I will seek out the company experts if I feel I'm in over my head. When I interview at a job I try to state as much. I have been eliminated after various interviews for not having enough SQL knowledge. Did I undersell myself in the interview? Is it an excuse for some other failing? Are they really using that much SQL on a daily basis?

I need to find a better way to present my SQL skills in an interview. I don't want to lie or oversell myself but I don't want to have the door instantly closed either. At this point I don't have an easy way to gain SQL experience in my current position so I will have to work on whatever missing skills I have at home. That usually means coming up with a useful project to develop.

If your company has an open Java or C# developer position do you know how much SQL is actually generated on a daily basis? Is the team writing it constantly or is there really just one or two go to people on the team that write was is needed and they maybe write a statement once a month. Is the day to day development being done in Java only? Why do the hiring managers eliminate solid senior level programmers because they don't write SQL every day?

SQL has a fairly simple syntax and a limited usage goal - database manipulation. There are conditions where expert knowledge is needed, tweaking performance, evaluations of indexes and optimized usage of joins come to mind. The rest of it is pretty straight forward, I need this data, here are the tables, here are the indexes so go get it.

What does SQL experience really mean when you put it in a job posting for a Java / C++ / C# developer? Some are very specific and want Oracle SQL or MS SQL. I know there are differences between each flavor of SQL in syntax, optimization and feature sets but really would you totally knock a person out of the running if they had only ever dealt with an Oracle box?

Tuesday, July 13, 2010

Switched back to Eclipse 3.5

I was running 64 bit Eclipse 3.6 but it kept crashing on me randomly. I might have hit Ctl+Shift+G to find references, hit Ctrl+K to find next or started a TFS compare and it would just go away. Very odd and all seemingly unrelated crashes but I don't have time to restart my IDE over and over so I am back on 3.5 64 bit version to see if it remains stable.

No other differences between the two, same plug-ins installed, same JDK running, same TomCat being attached against. I quick Google search did not turn up a rash of others having the same issue so I will just let it ride for now and watch for updates to see if they fix things later.

Yeah, back in Java for a bit to fix some older bugs and get them off the list for this Scrum. Feels good to be back in the familiar but I will be in VS 2010 again today for sure. I recently upgraded to 8g of RAM at work and that has made a reasonable difference over the 4g I had since I am running both VS 2010, Eclipse, Notes and Sametime. 64bit loves that RAM.

UPDATE: It looks like it is JDK 1.6 update 21 that is causing the issues. I was having random freezes after switching back to Eclipse 3.5, could not even begin to debug something. I have reset env variables to point to JDK 1.6 update 19 and things seem to be back to normal. I will run Eclipse 3.6 again and see how things work from there.

Friday, July 9, 2010

Winner of Image Viewer Wars

We have a winner of the Image Viewer wars. DotImage from Atalasoft appears to be our chosen one based on the following:

  • Supports WPF
  • Supports Silverlight
  • Allows custom annotations
  • Supports printing
  • Supports context menus for annotations
  • Excellent technical support
I was able to pull off everything we needed. The others, ImageGear and Leadtools, could either not handle what we needed or were maybe going to handle it in a later release. We kind of need it to handle things now, not later. I was able to get DotImage running very quickly and even with semi-spotty documentation on the custom annotation side of things I was able to get all that running in pretty short order.

Of course there is a lot more code to deal with to make it complete but that happens with every project. For now I will have to go back to my Java work for a bit to clean out some bugs freeing them up from this Scrum.

Friday, July 2, 2010

Fun with WPF Image Formats

We need to convert our Java / C++ application to WPF / Silverlight. The main application displays images of various file formats and lets you annotate them along with a lot of other processing. For both Java and C++ we used various 3rd party tools for the image display.

We wanted to avoid that in WPF but it turned out to not be possible. Basically TIFF stands for Thousands of Incompatible File Formats. Too many things to mess with. Even LibTIFF could not handle all the formats we use. Back to 3rd party time.

This means investigation of various 3rd party controls to see which one is the best. Not ready to name names at this point but I did pick three to choose from.

Vendor #1 had annotation support but does not appear to support custom annotations. They are willing to do that at a price of course. Not looking to go that direction at this point. We do use their stuff on the C++ side now but we manually draw on top of their image. Something that is not possible even with and adorner layer in WPF. On-line support seems non-existent. You can email them but there is no on-line forum.

Vendor #2 has custom annotations but they only support their toolbar and their buttons. We are trying to rip that apart and put our own images in there along with custom annotations. Another guy I work with is dealing with that one. The other issue so far is they don't scale fonts for the text annotations to match the image scale. Ugly. They have a on-line forum that seems pretty active.

Vendor #3 is winning so far as their custom annotations appear to work nicely. You do have to create a Geometry for the rendering but that has been reasonable so far. I need to deal with text in there in near future so we shall see how that goes. The first problem is when I switch tabs I can no longer edit my annotations. I have the viewer in one tab and the thumbnails in another. Something in the viewer is getting annoyed by the tab switch. The second problem is printing. The image is getting cut off during printing at this point. I need to try a lot of other image formats to see if it is a particular image type. They have very responsive on-line support and are looking into this for me now. The on-line forum does not have much activity.

Next week I will continue to work with Vendor #3 to hash out these details and to try and implement a context menu. The other developer will continue to try and catch up Vendor #2 mock up code to what I have with Vendor #3 and we have a follow phone call with Vendor #1. I wish would could get them all to work and then pick the best on speed, DLL size or image format support instead of picking one by default because it is the only one we could get to work.