Archive for ISV

Thanks to everyone for coming to my sessions and the organizers for making the event run so well. The facility was great and it’s really quite remarkable that the community can have such a strong one day training event without having to charge participants. Microsoft was there to help out, but it was clearly a training event for the community not a Microsoft press event, exactly as it should be.

We had fun talking with the other vendors at the show, most notably Component One and the folks from CapTech.  This is the first time we’ve had a vendor booth at an event like this, so in many ways it was a dry run to get the hang of what it’s like.  We gave away a full copy of Gibraltar Analyst as well as a year’s subscription to Hub at the conference, and got to talk with a lot of people about both Gibraltar and VistaDB.  We got some great real world examples of where VistaDB fits, which is  a big help as we work on the marketing for that going forward.

I presented two sessions -

A Year in the Life of an ISV

If you’re thinking about what it’d be like to ditch your corporate development job or consultant gig and strike to create & market your own product (Or you’re a consultancy looking to create a product to diversify) this presentation shows what to expect on the path from shipping your first version to business success.

This one’s always a little risky at a code camp because, well… there’s no code. But, with the incredible diversity of tracks that were available at Philly Code Camp (13 tracks, over 60 sessions…) I think it’s also good to be able to “take a break”. Next time I might go for the last session of the day to maximize the value of that.

Designing APIs for Others

I covered a range of real world lessons about commercial API development emphasizing the differences between in-house & internal development and great, reusable commercial libraries.

I got some great feedback on this talk, particularly on an example that broke my own rule about samples: I tried to over-simplify it and instead created a “not best practice” sample.   I’ll fix that for next time!

If you saw either presentation, please be sure to fill out the conference evaluation and I’d love to hear your feedback – drop it in the comments below or send it to me directly at kendall.miller@gibraltarsoftware.com.

If you’d be interested in having us come talk at your code camp, .NET Users Group, or event – please reach out and let us know. We’re always looking for new & better ways to engage with the community.

Categories : .NET, Development, ISV, Speaking
Comments (0)

To understand why I’m so passionate about Gibraltar you have to first appreciate that writing software is really, really hard.  As Edsgar Dykstra wrote nearly 40 years ago when dinosaurs roamed the earth typing punch cards as even DOS programs and 80×25 VT100 terminals had yet to be invented:  

The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility…
Edsger W. Dijkstra, The Humble Programmer  

Yet awaiting Kurzweil’s technological singularity, most computer programs are still written by imperfect human beings like me who can screw-up something as simple as making a pot of coffee.  Case in point…  

My coffee machine

I'm not worthy of my coffee maker

Nothing is so simple you can’t mess it up

My wife and I drink our coffee black, so you’d think the only way to screw it up is to forget to add either the water or the coffee beans.  I’ve done both, as well as variants involving too much or too little of either.  I’ve also forgotten both, as when Cindy comes downstairs in the morning asking “Jay, did you make the coffee yet?” Oops!  

You see, when you’re married with kids, you need a division of labor.  In ours, Cindy gets the kids off to school, manages our social calendar, pays the bills, plans the vacations, does the laundry, cooks the meals and does all the shopping.  I program a little.  And make coffee.  Badly.  

We have a semi-fancy Cuisinart coffee maker with a hopper on top for whole beans, a water reservoir and a built-in burr grinder. I mistakenly thought I’d explored the full range of coffee errors sometime ago when I learned that the coffee path between the grinder and the filter basket needs to be cleaned periodically lest backed up grinds prevent beans entry from the hopper. I still forget to clean the mill, but can now distinguish pitch differences in the sound of the grinding that alert me to this oversight.  

This morning the mill was clear, hopper loaded, water reservoir full, filter basket clean and all properly positioned.  I clicked the start button as I dashed to stop our cat from using my stereo speakers as a scratching post and heard the pitch-perfect grinding and water gurgling happily behind me.  Speaker saved, I sat down to enjoy the wafting aroma of French Roast brewing while enjoying a Sudoku.  

Precisely six minutes later, feeling clever at how quickly I’d solved the puzzle, I went to pour two cups of Morning Joe to sip in bed with Cindy as sun and breeze caressed us through the open bedroom window on this glorious Sunday morning in those precious quiet moments before our two boys awoke with breaking news of massive school projects and major tests due tomorrow.  

Our morning coffee was particularly fragrant, benefiting from an unprecedented abundance of surface area.  Coffee was pooled all over the counter and the floor – behind the stove, under the vitamins, and coating the bottoms of the cups and plates waiting patiently beside the sink in the aftermath of last night’s birthday party for my father.  

Mocking me from the counter (rather than below the filter basket where it belongs) was the empty coffee carafe.  

So, what’s this have to do with software engineering?

I suppose I could apply Scrum to my coffee making, but there’s not always someone around to collaborate in Paired Brewing.  Or maybe introduce a stage-gate Coffee Preparedness Review in a quest for ISO-9000 certifiable Brewing Process Maturity.  Or maybe use value stream mapping to achieve Lean Brewing.  I think my best bet is to pause for a moment’s contemplation before pressing the start button on how I suck at making coffee as I double-check that all is ready to go.  

Likewise, in software development, the humble programmer should build defense-in-depth against human fallibility.  Pick a methodology that works for you and stick with it.  Get feedback early and often.  Introduce as much automated testing and quality assurance as you can.  And close the loop in your software development process by measuring how your apps perform in the field so you can be more responsive in the short-term and continuously improving in the long-term.  

We wrote Gibraltar because we’re passionate about rock-solid software.  Like any asymptotic goal, the destination is ultimately impossible, but you can get closer and closer.  The journey is the fun part.  Gibraltar isn’t perfect either, but it’s very good and getting better and better.  Try it and see if we can help you move faster and have more fun on your software engineering journey.  

Join the conversation!

Have a similar story to share?  As professionals entrusted to create rock-solid software, what are we to about accomodating our unlimited human potential for error?  What are your thoughts?  

Let’s continue the discussion in the comments.

Comments (0)
Sep
15

Gibraltar Software Acquires VistaDB

Posted by: | Comments (26)

When we started Gibraltar Software we always intended that it would grow to encompass multiple products that each fit with our common mission of helping .NET developers build rock solid software.

We’re thrilled to announce that Gibraltar Software is the new home for VistaDB – an embedded SQL Server-compatible database engine.  As you may recall, we’ve been enthusiastic about this product since we found it while doing the initial development of Gibraltar.  Over time we only got more interested in its potential to help developers in all kinds of situations where you want a database but don’t want SQL Server.

We use it ourselves in every part of our product – Analyst, Hub Server, and Agent.  There’s even a small database in every package file.  While we know that often SQL Server is a great answer as you scale up there are a lot of places where a small, portable database engine that’s upward compatible with SQL Server is just what the doctor ordered.

We’d been in discussions for some time with the owners of VistaDB about ways we could bring the two products together and finally found a way that made good sense for both parties.  Accordingly, we’re taking over full development, support, and sales for VistaDB as of October 1st.

What’s this mean for Gibraltar?

There are several great things that will come out of this.  First off, we will be able to use our real-world experience in Gibraltar to help optimize the performance of VistaDB.  There’s nothing like having to live and die by your own software to make you pay attention.  This will benefit all of the users of Gibraltar by improving its scalability and performance.

Secondly, while these products are both for the .NET market they’re far enough apart to have different sales cycles.  This is important because it means we can afford to put more revenue into product development instead of having to hold it back for the lean times that inevitably arrive in any single market.

Third, the added exposure of VistaDB will help us market Gibraltar – and that will provide more & better feedback on where the product needs to go.  Thanks to the additional revenue we’ll be able to act on that feedback faster.  In short, your investment in software maintenance with Gibraltar just got more valuable.

Finally, we are going to add staff to help us ramp up to handle both products and ensure that we can keep delivering enhancements at the pace you’ve come to expect since Gibraltar went live.

What’s this mean for VistaDB?

Much of the same things that apply for Gibraltar also apply for VistaDB – more resources for improving the core engine, confidence that we are as dependent as you are on having it work great, and the comfort that the product will be supported for years to come.

We will be developing a roadmap for VistaDB development over the next month based on feedback from the existing community.  Meanwhile, the current site will stay up with some minor changes while we work to integrate the sales & user communities.

Our first priorities will be to establish the ability to get trial versions and handle licensing for VistaDB.  Concurrent with that we’re going to set up the right support channels so you can get the same exceptional service that Gibraltar customers have enjoyed.  The vibrant user forum at VistaDB will also stay up.

Meanwhile, you can continue to access your VistaDB account, perform activations of older versions, and generally carry on as you did before.

First!

If you’d like to get your ideas to the head of the queue and are an existing VistaDB customer, send us email to support at GibraltarSoftware.com.  We’ll be doing some formal feedback gathering, but why wait and risk being missed – get us your ideas today.  We’ve proven repeatedly we listen to our customers when figuring out what to develop.

For the formal announcement, check out the press release.

Categories : ISV, VistaDB
Comments (26)

We spend a lot of time worrying about the usability of Gibraltar.  Our goal is to have our brand known for creating intuitive, attractive products even though we develop exclusively for a platform that (often unjustly) is maligned on the same points.

From Where We Are

One part we agonized over at length (and did a number of mockups, prototypes, revisions, experiments…) was how to handle creating on-demand extra views of session data.  In the current release of Analyst there are five types of views, three of which you can create multiple independent copies of.  To solve this, we created a “blank” tab for each type that could be created dynamically to make it clear what the different potential views were and create new copies.

There are some awkward issues with this:

  • Poor experience curve: The three targets for creating the distinctly different new views don’t quickly pop out of the noise of the page.  Once you’ve crossed through the initial phase of discovery you can’t really get quicker (develop muscle memory) at selecting the right item, particularly since they move to the right as you create new documents.
  • No room to grow: Three distinct items is the upper bound of credibility for this approach.  Otherwise, it’d just take up too much room and you’d miss the left items, they would just blend in.
  • Limited discovery: For a range of technical reasons you couldn’t get much of a hint to why you should pick a specific option.  You pretty much have two words and a 16 pixel image.

Adding the ability to create session views pushed us over the edge – now users can create an unbounded number of unique views that need to plug right into this user interface.  There’s no way that’s going to fly with this approach.

On to Something Better

So, we needed a two step approach to give us a lot more UI surface to work with when picking the specific view a user wants:

Now there’s just one target to click to create a new view, and while it does still move to the right, it’s always the right-most target so it’s easy to pick out of the view.  The biggest problem is discovery, and we’re worried about that:  Will someone who opens the session view the first time realize just how much great stuff is available through new views?  We’ll have to find out.

Once you select New View we have a second problem:  How to pick the view you want.  Here’s the first approach we beta tested:

There are some good things going for this selection:

  • Big targets: Each button is very large and visually distinct and suggestive of the type of view you’re creating.
  • Good experience curve: Their positions are fixed, and the dialog shows in the center of the session viewer so you can be reaching for what you want before the dialog even shows because you know where it’s going to be.
  • Good discovery: At this level we have the room to show a very large tooltip as you hover over an item to tell you about what it is and why you’d want it (not shown in the picture).
  • Extensible: We can easily add more items without breaking the paradigm:  We could add more buttons up to about 9 before it would significantly break down (but you’ll see below we went a different way)

Still, for some users it still felt awkward:  Some of our experienced users still had to pause each time, stare at the dialog, and then select.  This led to another round of prototypes and an improved version:

In this version, we’ve done two things:

  1. Text and Graphics: To accommodate the fact that some people scan graphically and some scan for content we added a text label that’s always visible even without a tooltip.  The tooltip is still there to add expository but many people won’t start hovering over the icon until they think it’s the right one.
  2. More air to look more interactive: By increasing the padding around the graphics the visual effects of mouseover and focus make the display feel more friendly and interactive.  It encourages hovering over an item before you’re sure it’s valid.

You can see the effect of the extra air when the mouse is hovering over a button:

Now With Your Extensions

Finally, if you go ahead and add some add ins that create their own custom views this dialog automatically extends to give you those choices.  In this case it’s clear which are the intrinsic views and which are extension views.  We’ve also set aside space for the extension views to describe themselves.  Developers hate empty visible boxes so we hope creating clear space in the dialog will encourage them to create good descriptions.

We’re running the risk that this approach is too optimized around an assumption that there will be a lot of add-ins, but it still provides good discoverability without making it more complicated to create add-ins.  Plus, it only unfolds the additional complexity of managing these extra views if there are any around that need it.

Soon it’ll be Your Turn

We’re going to release a beta of Gibraltar 2.2 imminently.  We’re considering it a beta because of the new add-in API which we want to get a broader set of feedback on before we’re committed to its design.  The rest of the product has to pass all of our normal tests, so there’s going to be plenty of reason to upgrade to this version.

We’d love to hear your feedback on what you think of the changes we’ve made, the new API, and how we can continue to make the product easier to discover and more effective to grow with you.  We expect Gibraltar to be a tool that works on many levels to reward beginners and experts alike.  Hold us to it!

Categories : Development, ISV
Comments (3)