Sunday, 14 September 2008

So it begins...

It's a hectic week for sure, Kevin and I are here in Concord, MA ready to train and certify some DriveWorks AEs at the SolidWorks headquarters, we've got both Level 1 and Level 2 training going which should be fun.

Lucinda and I are going to be attending the North Eastern SolidWorks User Conference on Thursday, we're both pretty excited to be going, it looks like a lot of people are going to be there, and there's a fantastic line up of talks from the community and some of the guys from SolidWorks themselves.

Glen and Maria are off to SolidWorks World Israel this week which I'm sure they'll be writing about in due course.

For now though, I need some dinner and a Sam Adams before I crack on with the work I need to do for rest of the week!

Thursday, 28 August 2008

Interesting SQL Server Related Support Ticket

We had an interesting support ticket recently where a customer was having trouble logging into their SQL Server based DriveWorks Group - DriveWorks kept showing them a message along the lines of "The group could not be opened, this could be indicative of a problem with your system".

Ultimately we ended up in having to do a GoToMeeting with the customer to try and see what was actually going on, and as soon as we were shown the database in SQL Server the problem became very obvious:

Image of SQL Server showing tables prefixed with a non-default schema

Don't worry if it's not obvious to you, I'll do you a favour and tell you - you see that each of those tables begins with "db_owner", well that's not right at all, DriveWorks expects that its databases begin with "dbo".

It isn't normal to end up in this situation, but that said, it can happen if you configure SQL Server away from the defaults, and if it does happen you'll need to rename the tables back - this unfortunately requires a little more black magic than a lot of us IT folks are probably comfortable with, but luckily we've got a SQL 2005/2008 script that does it for you:

   1: -- Get all the tables in the database and their schemas
   2: DECLARE tableCursor CURSOR FOR 
   3:     SELECT t.name,s.name 
   4:     FROM sys.tables t 
   5:     JOIN sys.schemas s 
   6:     ON t.schema_id=s.schema_id
   7:     
   8: DECLARE @name nvarchar(MAX)
   9: DECLARE @schema nvarchar(MAX)
  10: DECLARE @fullName nvarchar(MAX)
  11:  
  12: -- Loop for each table
  13: OPEN tableCursor
  14: FETCH NEXT FROM tableCursor INTO @name,@schema
  15:  
  16: WHILE @@FETCH_STATUS = 0
  17: BEGIN
  18:  
  19:     -- Work out the current full table name
  20:     SELECT @fullName= @schema + '.' + @name
  21:     
  22:     -- Change the schema to dbo
  23:     EXEC sp_changeobjectowner @fullName, 'dbo'
  24:     
  25:     -- Rinse and repeat
  26:     FETCH NEXT FROM tableCursor INTO @name,@schema
  27: END
  28:  
  29: -- Cleanup
  30: CLOSE tableCursor
  31: DEALLOCATE tableCursor

 

Whatever you do, make sure you are in the right database before you execute this script! and obviously this has been written as a quick and dirty script to perform a task, so we make no warranty of fitness for purpose and all that jazz - but hopefully if you do come across this problem, whether it be with DriveWorks or any other product, then this might help.

One thing I can't stress enough though, is that if you do decide to start messing around with a database, be it ours or any other application's, ALWAYS take a backup first, if you don't know how, then make sure you learn, because there's nothing worse than not having a backup, and call me an idiot, but unfortunately I know this from experience :-). Luckily only ever in demo environments, but still, take it from me, it isn't fun.

Philip

How I Got Started in Software Development

Thanks a lot Luke ^o), that's your Christmas card out of the window, anyhow, here' goes.

1. How old were you when you started programming?

Uhm, to be honest, I'm not entirely sure - my father was a bit of a computer enthusiast himself, so we always had a machine around that I played about with, but I guess I first got really interested in programming when I got my own 80286 which would have made me about 10ish.

2. How did you get started in programming?

I got two main starts really. Shortly after getting the aforementioned 286; I picked up a kids book containing a load of BASIC programs in it from a boot fair, unfortunately none of them were written in GW-BASIC so I had to do a lot of modifying to get them to work and I guess that in itself taught me a lot.

But the thing that really got me going was getting a copy of VB4 Standard Edition for my 12th (I think) birthday. That, a copy of "Visual Basic 4 for Windows for Dummies", and a lot of articles from computer magazines got me really fired up about development. There's just something about seeing a machine doing what you tell it to; that never quite gets dull - especially when said computer can be hundreds of miles away and you can bring robots into the mix. It's not a God complex though. Much. Anyway, moving swiftly on...

3. What was your first language?

GW-Basic, I've still got the floppys around here somewhere.

4. What was the first real program that you wrote?

A notepad clone- when I was about 13 I got bored at the lack of anything technological at school (at the risk of annoying a load of people, they used Acorns, and I was pretty much a PC guy), so my parents got me enrolled at the local college doing some Cambridge IT certificate module thingymabob, it was pretty good fun, although my work did get plagiarised which taught me a few lessons about life a little earlier than I might have wanted.

The program was written in VB3 which was alright, but lacking a load of functionality, so I got pretty heavily involved with calling into the Windows API from VB which I probably enjoyed a lot more then than I do now :-)

5. What languages have you used since you started programming?

Ouch, uhm, a few, the ones I use professionally at the moment are VB.NET, C#, and a little bit of C++ here and there, but I've used quite a few through academia and personal playing - MSIL, Old School VB, ASP, C, Pascal & Delphi, CAML, PHP, MASM & NASM Assembler to name some, I'm sure there are others, and I won't even bother trying to list dialects of BASIC.

6. What was your first programming gig?

I did some work experience with a SolidWorks Reseller called SolidBase when I was maybe 15, which basically involved a lot of spreadsheet to database conversion using VB6. Shortly after that I found myself working on DriveWorks 3, and I've ended up working for DriveWorks throughout the remainder of my education doing bits and pieces until last year or so ago when I finished University and came to work for DriveWorks full time where I now head up our development efforts.

7. If you knew then what you know now, would you have started programming?

Are you joking? If I knew then what I know now, then by now, I'd be writing even better code ;-)

8. If there is one thing you learned along the way that you would tell new developers, what would it be?

Never stop playing - programming is a fun and enjoyable activity, the minute you forget that; you'll burn out. So make sure you make time to sit down with new technologies and fiddle.

 

Seeing as this is a meme, and I'll anger the Internet Gods if I don't continue it, I'm tagging Glen Smith, Jeff Read, Ben Hall, and Boris Shoov (I can but try ;-)) 

P.S. Can you believe that "thingymabob" isn't in Windows Live Writer's spell checker? for shame.

Thursday, 07 August 2008

Reseller Training Event

We will be running both Level 1 and Level 2 technical training and certification over at SolidWorks' head quarters in Boston from September 15th, this is a great opportunity to spend some time out of the office picking up some invaluable skills and networking with other AEs from far and wide.

Level 1 will run September 15th to 17th, and Level 2 will run from September 18th to 19th.

If you're interested in attending, then please drop an e-mail to info@driveworks.co.uk.

I'll follow up with more information as soon as we've got all the final arrangements made.

Friday, 01 August 2008

Twitter

Okay, I admit it, I pretty much suck - my blogging career to date has been nothing short of tragic. It's not even as if there isn't stuff to write about, I mean, there's always stuff going on, it's just that I've got the blogging equivalent of attention deficit disorder. Every time I sit down and start thinking about writing a blog entry, my mind wanders and before I know it I'm writing code again.

So, after noticing that Ian had started twittering, I figured I'd give it a go, after all, being limited to typing 140 characters is right up my street, if anything it's 20 characters too few.

I've only been on it for a day and I've been pleasantly surprised so far, but I'm still trying to work out where it fits in. With any luck it'll hold my attention longer than bebo, facebook, blogging, linked in, and a tonne of others that I somehow seem to have got sucked in to, but Jeff's already expressed his doubts ;-)

Wednesday, 30 January 2008

SolidWorks World 2008 - The Aftermath

Having been, once again, berated for my somewhat less than stellar blogging career to-date (thanks Jeff!), and now that things back in the UK are beginning to return to normalish levels (whatever that means) - I figured I'd get a quick post out.

There seem to be fairly mixed feelings on the web about SolidWorks World '08 but for my part I think SolidWorks did a darned good job for the most part.

Although the general sessions weren't overly inspiring, two things really did hit me:

First was the session with Theo Jansen during which my bottom jaw spent most of the time on the floor as I watched his "creatures" move around of their own accord. The two tonner was particularly scary.

Animaris Rhinoceros Transport

The second was the emphasis that is being placed by SolidWorks on stability and performance for 2009. I think its great that, instead of overly flashy demonstrations, and lots of "ra ra ra" stuff, there was a very down to earth attitude this year that focused on the very real needs of the user.

Admittedly I am biased, but I thought the partner pavilion was great this year - certainly better than Vegas or New Orleans (this is only my third World) particularly in terms of the number of people that decided to peruse the booths.

Unfortunately, as with last year, Delta decided to lose our bags in Atlanta, unlike last year however they arrived the next day completely in tact, hopefully next year we can graduate to just having our bags at the outset (please guys - conferences are hard enough work without stuff going missing)

The Mariott hotel was great, aside from being a stone's throw from the convention centre, the nearest bar was called DWs - no prizes for guessing the pun, and the view from the room was fantastic:

Image036

The block party was fantastic, though in all fairness, I'm bound to say that wherever free food, beer, and music are involved ;-)

DSC05576

On Thursday we held our own reseller event which I hope everyone found useful, one of my favourite bits was having Neil up there talking about his own experiences starting with DriveWorksXpress and moving on to full DriveWorks.

DSC05608

I've said it before and I probably sound like a broken record, but my favourite bit of the whole SolidWorks World affair is getting to meet people - whether Prospects, Customers, Resellers, Partners or the people at SolidWorks themselves. Some of the great people I got to meet this year were Mark Arnett from CAD Graphics West who kindly lent us two machines for our booth, Jeff Sweeney from 3D Vision who despite having a go at me is always a welcome face, Paul Gimbel from Razorleaf who has a seemingly unquenchable thirst for knowledge, Mike Jolly who is our newest certified AE, Boris Shoov, Jim Wilkinson, and Jeremy Regnerus if only fleetingly from SolidWorks - there are a tonne of others, just because you're not on the list above it doesn't mean your not loved! I'm sure it doesn't matter how many people I list, I'm going to get an e-mail from someone saying I've forgotten them :-)

 

On Thursday afternoon the DriveWorks team (including Neil) packed up and headed over to Denver, Colorado for a team meeting - the kind of team meeting that involved skiing, snowboarding, and a reasonable amount of alcohol. I'm ashamed to say that a fair amount of the alcohol survived the weekend, but by that time the time-zone change had really hit most of us.

DSC05639

Anyhoo, I think this post is quite long enough, hopefully the next one won't be so long coming!

Friday, 18 January 2008

SolidWorks World 2008

It seems pretty compulsory nowadays to leave a blog entry somewhere if you're heading to SolidWorks World, so not to buck the trend, here I go too.

Both Glen and Maria have already set off on their 5,336mi (that's 8,588km to our European friends) journey from miserable Manchester to sunny (by our standards) San Diego.

Ian, Kevin, Dan, Phil, and myself will be flying out tomorrow at 12:00 our time and landing at some point late in the evening.

I'm really looking forward to another SolidWorks World, it is easily one of the biggest highlights of the year for me - the biggest reward personally is getting to meet our customers and resellers and find out how they are getting on. Even being the technophile I am, I still think actually meeting someone in person is one of the most important things you can do.

From a professional point of view I'm also really impressed by just how much interest in design automation is increasing, hopefully DriveWorksXpress has had a large part to play in that, and I'd love to hear from anyone that has had a play with it to see how they are getting on.

Anyhow, I'm sure there is some last minute preparation I'm supposed to be doing right now, but if you're going to San Diego, please stop by the booth. If you want to buy some software, we'll be only too happy to help, and if you just want a chat, bring a bottle of beer with you and we'll be happy to do that as well ;-)

Tuesday, 18 September 2007

When making connections is a really bad thing...

One of the most critically important features in DriveWorks is the ability to get data into, and out-of other systems, which is why we provide a whole slew of ways of doing so.

Of these, QueryData is perhaps the most used due it's relative simplicity (compared to, say, GetData).

The problem is, QueryData is not without its own troubles, indeed, if you have a large implementation with quite a lot of queries being performed, you can quickly notice that things start to drag.

The reason for this is quite simple, every call to QueryData opens a connection to the target database, gets the data, and closes the connection again. With database servers such as Microsoft SQL Server, Oracle and the likes, the set-up and tear-down of the connection is quite an expensive operation, and something to avoid wherever possible.

Quite late in the development cycle for SP2 we put together a solution for this which involves re-using connections, unfortunately it was too late in the day to ship this with SP2 and there are still improvements that we would like to make.

However, due to the significant performance improvements that can be obtained, and because another service pack is not planned for release for some months yet, we're making this version of QueryData available as a macro.

I've created a page to explain how to obtain and use this new macro, and also explain how it works, so, if you are currently finding data access is slowing down your implementation, please take a look.

I'm really interested to hear about your mileage with this new QueryData macro, so please, if you find the time, drop me an e-mail and let me know how it works out for you. It would also be really great if you have any rough timing comparisons for before and after using it.

Wednesday, 12 September 2007

Service Pack 2.1 Released!

Late last week we released SP2.1 as an update to service pack 2 to the VAR desktop, which includes the fix for the file management issue I talked about last week.

We've also taken the opportunity to incorporate an update to the Flex licensing system in the network license manager.

If you haven't already got SP2.1, contact your reseller now for more information about how to get it - or if you are a reseller, let your customers know :-)

Wednesday, 05 September 2007

Update: Service Pack 2 - Important Announcement

Yesterday I blogged about the withdrawal of DriveWorks 6 SP2 from our VAR desktop.

I can now post more detail about the bug that caused us to take this extreme action, and our next steps for releasing an updated version of SP2.

Firstly, the bug only manifests itself in the following very specific situation:

  1. You open the file management view
  2. Ensure you are in the "Models" tab
  3. Set "View by" to be "Assembly Structure"
  4. Click a drawing from the tree view on the left to select it.
  5. Right click the drawing in the list view on the right.
  6. Click "Delete"

If you do this, the parent part or assembly and all of its children are deleted - not the drawing.

If you right click the drawing in the tree view and select delete, DriveWorks correctly deletes the drawing.

We have also checked and confirmed that this behavior also applies to SP1.

Until SP2.1, do not use the list view to delete drawing information from the DriveWorks database.

With regards to SP2.1, this bug has already been fixed and is currently under test. Our expectation is that we will release SP2.1 later today, hopefully before 17:00 EDT.

Although in light of the very specific nature of the bug (and the fact that it has not affected anyone in the many months that SP1 has been released and available), our decision to pull the software may seem extreme - we felt at the time, and still do, that it was the right thing to do.

Tuesday, 04 September 2007

Service Pack 2 - Important Announcement

[Update: please read the update to this post at http://blog.philipstears.net/2007/09/update-service-.html for more information]

Regrettably we have had to take the hard decision today to pull DriveWorks SP2 from our web site after having been available for only a little more than a week.

This decision was taken due to a bug in part of the implementation of file management, which, could in some specific cases, where the file management is used to delete data, have severe consequences requiring the restoration of the group from a backup.

Given the potential damage, we can not in good conscience continue to provide SP2 for download from our web site, even though we believe only a small percentage of you are potentially affected.

We are planning to release SP2.1, which will ONLY contain a fix for this issue and no others, in the next two days.

If you are using SP2 now, I strongly urge you not to use file management at this time.

I would also like to remind people of the importance of back-ups, this bug aside, file management is a powerful tool, but offers an equal risk due to its deletion capabilities. Please make sure you always have an up to date backup when using file management. It is a relatively small hassle to create a robust backup policy compared to the potential data loss if someone makes a mistake.

I apologize for any inconvenience this causes anyone, and for the relatively little amount of detail at this stage, we will be posting a more detailed announcement tomorrow, as well as a formal announcement on our web site later today.

We certainly do not take any situation like this lightly, I hope you bear with us whilst we ensure that we get this sorted properly.

Saturday, 01 September 2007

SP2 Released!

It's been one marathon of a week here in the world of DriveWorks.

To kick off the week we had a public holiday which provided us with the opportunity to effect a long planned overhaul of our core IT infrastructure at our office in North England, which luckily went off without a hitch.

But the most important thing to happen this week was the official release of Service Pack 2 of DriveWorks 6 - without a shadow of a doubt the most significant release of DriveWorks yet.

Although it has been four months since work originally started on SP2, this isn't just your ordinary fix-laden release, we've also made some fairly extensive usability enhancements, massive performance increases in places, and incorporated 5 new major enhancements:

  • Display Files for better control over what is shown in the specification management screen.
  • Integrated E-mail support
  • DriveWorks Live Standard Theme with extensive customization options
  • Support for Forms in Specification Test
  • Return License for moving licenses between machines.

All of these great new features are covered in our release notes, and I hope to explore some of them in more detail on this blog over the coming weeks, but for now, I'll just finish off with a few statistics about SP2:

  • Number of full builds: Over 200
  • Number of models generated during testing: ~5,000 (if you count drawings, sub-assemblies, and parts, this comes in around 50,000)
  • Number of source code check-ins: ~1,000
  • Time spent working out we wanted to change "Model Rules" to "Primary Model Rules": 16 hours

Seriously speaking - it wasn't really quite 16 hours although it was more than you might think. But that's a post for another day :-)

All that remains to say is I hope you all enjoy SP2 and let us know what you think.

P.S - I'm also curious to know if anyone has had a go with DriveWorksXpress in pre-releases of SolidWorks 2008 yet and what they think :-)

Edit - the number of models generated during testing should have been over 5,000, not 500 as I originally posted. My bad :-)

Friday, 20 July 2007

Name that tune, the importance of usability

This week we held the first usability study on DriveWorks in quite some time, which basically means we sat in a room with some coffee, a laptop, a projector, and a DriveWorks CD and then we asked "Why?". We asked "Why?" a lot.

"Why is that there?" "Why do we make them do that?" - that sort of thing, testing usability is something we very strongly believe in the importance of.

Two fairly major product-level examples of changes that are direct results of this usability testing are the wizards for groups and projects. At the moment, getting to the point of actually doing some of that über cool automation stuff is kinda like picking your way through a Sudoku puzzle. If you've got a process, Sudoku isn't too bad (so I'm told), but if you are seeing it for the first time; the gut feeling is to quickly find an excuse to do something else.

For example, as far as projects go, who really knows what the difference is between a CAD based project, and a folder based project in DriveWorks?

If anyone has their hand up at this point, I'd appreciate a response, because I sure don't, and if I can't satisfactorily explain it to myself, something is somewhat amiss.

So, going forward, the default project type will be folder based, or "Standard Project" as they will now be called - because they can do everything CAD based projects can, and are easier to use. It's a no-brainer.

As for those pesky CAD based projects, they get relegated to second place with the catchy name of "Legacy Project", and I really won't miss them.

Now, the astute may have noticed I deliberately used the term "product-level" - the product is really only part of the package - a package which also happens to include help files, documents, training, support.

All of which basically involve trying to get across concepts and ideas, which brings me to one of my favorite stories, it's called "Tappers and Listeners", and if you do nothing else today, go and read it at http://www.madetostick.com/thebook/excerpts.php, it's about 2/3rds of the way down.

It is a real eye-opener and it has a message which I think is really important - you know too much. You know how your products are built, you know that if you do X whilst holding down Y with your eyes crossed under the light of a blue moon, that Z will happen - you know what you are supposed to do.

All of which adds up to mean that when you try to explain it to the guy across from you, you are going to be talking in very different terms. This is something that most of us, if not all of us are guilty of, and probably more than once a day.

We're on the case - so far we've made over 20 usability related enhancements in the last week alone, and it is an area we are working hard on.

So, send us your feedback, help us build the product you use the way you want to use it, and let us know when we are just tapping way to ourselves.

Thursday, 28 June 2007

DriveWorks Extensibility

Two months ago I blogged about building plug-ins for DriveWorks, unfortunately a couple of people have tried the tutorial since we shipped SP1 and had less than stellar luck.

The bad news is we made a bit of mistake with one of the configuration files we shipped in SP1 which causes problems for plug-ins. Sorry :-(

The good news is; it is really really easy to fix, just download the following zip file which contains one file called "DriveWorksAdministrator.exe.config":

http://www.philipstears.net/driveworks/SP1ConfigFile.zip

To apply the fix, just overwrite the file of the same name in your DriveWorks installation directory, e.g. "C:\Program Files\DriveWorks\6.1\Administrator\" and the next time you start DriveWorks you'll be able to load your plug-ins :-)

The other good news is that this issue is fixed in SP2 which will be shipping very soon now.