Saturday, April 05, 2008

Namechange

We are thinking of changing the name of our company from Sevensteps to 7-Steps. Not a big change, but to see what it would look like in documentation, I will try it out for some time on this blog.

Bye,
Bart

Update: I reversed the title of the blog (and other general info). It probably won't be 7-Steps. Maybe not a change in name at all... We'll keep on thinking

Investements in hardware - continued...

In one of my postings I wrote about investing in hardware. Sometimes this involves a lot of money (computers, beamers, et cetera). Sometimes the investment is small but the gain is large.

Last week we bought a couple of pcmcia Gigabit network cards for our portables. For EUR 25 per card our networks speed increased 10 times! Now, that's value for money :-)

We are currently looking at a new fibernetwork that is being rolled out in our neighbourhood. For a mere 350 euro / month we would get a 1Gb network connection.... That would mean 100x our current upload speed... I canb hardly wait; working at home using a remote connection would be so much more comfortable...

Bye,
Bart

Thursday, April 03, 2008

When do you decide to do a redesign of your software?

I'm working like hell right now on the implementation of a new feature of our software in oder to support flow charts. With the flow charts, and accompanying editors and publication engine plugins, an author can add flow charts to describe a business process, work flows and stuff alike.

The flow charts are, in the tradition of the Sevensteps approach, object oriented and stripped from whatever visual markup that could be there. If you want a green flow chart element: fine. But, first create a style for that and apply it to the flow chart object. Want a italic text? Sure, but change the style to do that.

This approach enables us to have a true single source system and reusable content objects in our CMS-es. But, yesterday I was working on the styles editor and the flow charts editors and found a flaw in my design. The handling of actually applying the styles was programmed in the style editor, instead of in the flow chart object. Although the style editor worked beautifully, I realised my mistake when working on applying the styles for the actual flow chart objects. I found myself reimplementing the same code again.

Although I am under enormous time pressure, I decided to change that implementation and moved the code for applying styles to the place where it belongs: the flow chart objects.

It all took another day of my available time for all this (and I am running out of time already), but I am assured to know that later on I will be glad I did it. Right now it feels like time wasted, but I know better than that :-)

I have one rule that I don't move away from, no matter what: if you decide to do something, do it right, or don't do it. If you do it wrong, and - worse - if you know that it's wrong, it will bite you later on. It might take a day, a week, a year: you will regret it.

So, the answer to the question is: you do a redesign if you know that it's wrong. Don't change it and it will haunt you. Do it over again, and you'll be happy in the end.

Bye,
Bart

Tuesday, April 01, 2008

Upgrading user interface

In the upcoming release 6 of our engine we have added a couple of nice features. E.g. we are introducing a flowchart module which will help you describe business processes and work flows.

But, one of the other things that will be visible immediately, are our new icons. Over time the icon set that we use has become, to put it mildly, a bit out of sink. Icons were designed by different visual designers, I 'borrowed' from Office; you know how it goes.

We decided to go through the entire interface and replace all icons with icons that can be found here:

http://www.famfamfam.com/lab/icons/silk/

This is a free, yet professional set of icons that is used quite regularly. It holds about 80% of the icons that we need. The missing icons will be in the style of the famfam icons.

We also implemented the skinning engine by DevExpress. Although it doesn't make the software any better, it is always nice to have a good looking interface. And the end user can now select from 20 different themes to give the software a bit of a personal look.

Btw: the famfam icons are PNG images. I used the TcxImageList of DevExpress to use those. That gives a much better visual appearance than the good old icons that we all know.

Bye for now,

Bart

Friday, March 28, 2008

Vista solves XP SP2 problem

This week one of my colleagues visited a client at the university of Antwerp to upgrade their installation of Sevensteps software. They were still using version 4.x (which we developed some 5 years ago). It was really time for them to upgrade to the current state of our engine.

Version 4.x suffered from the Windows XP Service Pack 2 upgrade - in fact that upgrade broke our software big time. It was then decided to do a complete remake of our software and version 5 was born. It was a major upgrade for us as you can imagine but one that we didn't regret for a single moment.

Much to our surprise we found in Antwerp that installing version 4.x on Vista generated a Windows error message, stating that the problems were known and if we wanted an update for it. After confirming that - we just were too curious to find out what MS had in store for us - some downloading occured, a new OCX was installed and presto: version 4.x performed as well as it ever did, and some....

So, Vista not only takes you to a next level on Windows, it also solved our old problems. A bit late, I must admit, but it is nice to now that customers with old versions of our software can still us it under Vista.


Bye,
Bart

Wednesday, March 26, 2008

New hardware is always a thrill

I admit, I'm a gadget lover. And gadget lovers always get a buzz when something new pops up. This time it was a new mouse. My old one was worn out, it just didn't work properly anymore. So, I got myself a new mouse, a Logitech MX Revolution. It's an expensive one, but luckily we have a motto in our company: our hardware is our tool and we should get the best available.

This thing has one function that I haven't had before. The scroll wheel can have two modes: one light, fluent scroll mode and one 'clicking' scroll mode. By default (as far as I have found out yet) browsing on the internet uses the fluent mode and all other programs use the clicking mode. To me it means that scrolling through my code uses the 'clicking' mode, which is great because it clicks at every scrolled line. The fluent mode gives you a 'soft' feeling when browsing the internet, which somehow eases my mind. I don't feel as rushed as before when reading webpages. Funny how such a thing in hardware feedback can set your mind.

I can recommend adopting our motto: investing in hardware is never bad. It's much better to spend some money on fast, good performing hardware then having a mindset that is uncomfortable. Feeling not well when working can cost you money.

Bye,
Bart

Tuesday, March 25, 2008

Anticipating Unicode Delphi

For some time now the Delphi community has been waiting for Tiburon, the Delphi version that will support Unicode. It is announced to be released somewhere this year. Of course, you can expect companies like DevExpress to wait for that version to do any work on their components for Unicode support.

There is some news though, which you can read at http://blogs.codegear.com/nickhodges/2008/03/24/39041. Apparently things are going very smoothly and 'some technology partners' have had a look already. You can only expect DevExpress to be one of those.

We are waiting for Unicode support very eagerly I can tell you. Our engine is quite ready to do propery multi lingual support, but we couldn't implement it in a proper way due to the lack of user interface controls that support that. That all might change this year and I think the 2009 versions of Sevensteps products will have the multi lingual support that we designed many moons ago already...

If anything new comes along, I'll keep you posted.

Bye,
Bart

Friday, March 21, 2008

Things that make you go humble

Today I started working with the full set of VCL controls from DevExpress. We used a couple already, but we decided to buy the lot. Mainly because I was working on some much needed tidying up of our dialogs and I got sick and tired of moving controls a pixel left or a pixel right. I already had some logic in place for my own VCL controls (I have created about 20 or so) to do some automated formatting and placing, but that wasn't good enough.

I knew DevExpress had something called dxLayoutControl, but also noticed there weren't many questions about it in the support database. I had the feeling it didn't get much attention, so I nevergave it much thought. But, when the pixel movements were required again, I decided to give it a go.

The demo led me to believe there was actually something good in it, although I was not fully convinced. There were a couple of other libraries that I was interested in, so we did decide to buy the lot.

I couldn't be happier after working with it a couple of hours. It takes a bit of hassle to convert your current dialogs to ones that are built with dxLayoutControl, but once you get the hang of it, it's just a bit of work. After that, you don't have to look at it again and the layoutcontrol takes over and care of everything.

I feel so relieved to know that I don't have to think about placing controls again. As a matter of fact: I will probably redesign some of my compound controls to take more advantage of the capacbilities of dxLayoutControl.

This component by DevExpress might not get the best exposure, but it sure is worth every dollar you pay for it. It really relieves you from the troubles you have to make a real nice form. I can recommend it wholehartedly.

Bye,
Bart

Wednesday, March 19, 2008

A node is *not* a document...

Tonight I spent a considerable amount of time looking for a problem that wasn't there. In the end I was feeling kind of foolish...
I have a XMLDocument (in a XMLDomDocument from MSXML) that has the folowing structure (this is fake...):
<root><parent><child /></parent></root>
Now, I select a single node, using the xpath query:
/root/parent
and pass it to a procedure. In that procedure I was looking for the child. Suppose this is the procedure:
procedure foo(myNode: IXMLDomNode);
I tried to collect the child node using the xpath query:
/parent/child
and applied that to the passed node. After all, when I inspected myNode, the debugger told me that its structure was:
<parent><child /></parent>
So, why was I getting nil as a result of the xpath query?
The answer (which I found after two hours of debugging...) of course is simple. Even if you apply the xpath to a node, using '/' as the first character starts the query from the start of the document of the passed node. Not at the start of the node...

Boy oh boy, how foolish I was. The correct xpath to select the child was:

(can you guess....., read on .......)

child


Just a little moment of humiliation is called for.... To bed, to bed, my friend.

Bye,
Bart

It's a bugs life

Two weeks ago I visited Marco Cantu in Italy to solve a long lasting memory related bug. Below you find the posting on his website about this experience.

It's a bugs life
I've been programming for ..., well, since ever really. The first programs I've written were on paper cards, ticking boxes with a pencil. Those cards were send to a computer center which returned me the output the following week. Yes, I'm that old.

For a decade or so, I've been working with Delphi and much to my pleasure I might add. But, two years ago something happened. I have a couple of programs out there with a couple of hundred users and some of them were sending in bug reports that I couldn't explain. I looked all over the place for the cause of these reports but I simply couldn't find it.

I knew they were related to this text editing control I was using abundantly, and I dug deep into the source code of it, but I couldn't find a problem there. I was beginning to doubt myself. I knocked on the door of the developer of the control, but he asked ridiculous prices, even to *start* looking at the bug. And for all I knew, the control was actually causing the problem. So, even though I was in big trouble, my pride told me not to pay for solving a bug - at least not to the one who caused it.

I continued my hunt, sometimes giving up, sometimes digging deep. I made some small progress, but nothing that completely took it away.

Then, one day, I saw a news posting somewhere that Marco Cantu was starting a new service to help you out if you have any problems in finding solutions in Delphi software. Although the posting focused on new software and thoughts, I contacted him to see if he wanted to dig into this existing problem.

Soon we agreed on a reasonable fee; one for when we would find a solution to the problem and one if we wouldn't. Now, that's confidence: no hassle, no long e-mails, more like a gentleman's agreement.

I made the necessary travel arrangements and went to Piacenza (near Milano) in Italy. After going through some things I found out earlier and showing some of the bug reports to Marco, he concluded it must be a problem with memory management. We grabbed WinDbg (Microsoft debugger) and very soon we cold confirm that there actually was a problem with that. After having a great lunch we worked a little more, but because of other arrangements I had to leave early that day. But, we already made some real progress.

The next day we soon were able to create a small program that reproduced the problem (something I wasn't able to do the previous two years) and after that, the rest was easy. There was a problem with heap memory and it was due to some timing problems inside the control. Working around the problem didn't take more that a couple of lines of code and I can tell you I was elated! Just by having the correct assessment of the problem we were able to come up with the solution I was looking for for two years.

I couldn't have done it without Marco's expertise and - in the end - it was really fun working together on this. Peer programming really is a joy if you make more progress than working on your own (which not always is the case really).

I can recommend Marco to anyone, not only to novice programmers, but to very experienced once also. He has a quick mind, great expertise and is very friendly and makes you feel welcome. I'm sure to contact him again is something comes up that I can't solve alone.

Bye Bart

http://blog.marcocantu.com/blog/bugs_life_roozendall.html

Monday, March 17, 2008

Looking for a VCL Wizard component

First, there is a sort of discussion going on about deleting items from a list. Should you do that traversing forward or backwards to a list? Point to http://17slon.com/blogs/gabr/2008/03/on-bad-examples-and-smelly-code.html to read on.

Back to wizards. Until now I have used JvWizard (from the JVCL components) as my component of choice for implementing wizards. It's a great component, but there are a couple of reasons why I want to abandon that.

First of all: I have a bad smell (...) about using open source code in my commercial software. Although there are professional programmers working on libraries like JCL, I simply want a phone number or e-mail address I can turn to in case of trouble. I don't want to be dependent on the good will of some programmer. I want to pay for my software and (hence) get some rights to support on it. It's a matter of principle.

Second: I want the controls to comply to my user interface. In this case, I want the controls to use DevExpress components. I saw some switches and stuff to turn DevExpress support on in the JVCL library, but the library is simply too complex and large to dig into and find out what's happening where. And, I want to be sure that if DevExpress upgrades its library (which becomes less frequent unfortunately), the wizard components upgrades too.

So, what to do? DevExpress doesn't deliver a wizard component. I can't find another commercial one. So, I'd better create one myself. Maybe there is some commercial value to that in the end too.

I'll keep you posted.

Bye,
Bart

Friday, March 14, 2008

What a differance a machine makes...

Yesterday I replaced our old build machine (the dedicated machine that creates the builds and setups for our partners and products) with a new one. The old one was, well, old. The new one has two processors on board, 4Gb memory and a fast harddisk.

The build time of our largest product (>100Mb in setup, with a lot of files and documentation) took 55 minutes to build on the old machine and a mere 4 minutes on the new one.

I actually decided to start developing on that build machine using a Remote Terminal session and that has changed the experience of programming quite a bit. A recompile of a product takes an average of 2 minutes on my own computer (depening on the number of sources that has changed since the last compile of course). Recompiling the complete product on the new sever takes 11 seconds. That actually changes the experiencing of programming. I'll let the compiler do more work (e.g. check syntax) than before.

I can recommend investing in good hardware to anybody; it's money well worth spent.

Bye,
Bart

Thursday, March 13, 2008

Getting back to blogging...

Since Google is now a customer, I think I should do well to do some blogging on blogger again :- Actually, since they signed up, we are in the middle of some interesting changes in our business model. More about that later.

We are on the verge of releasing version 6 of our software engine. We decided to make some pretty drastic changes to the user interface at the last minute. Due to our object oriented way of programming this won't interfere with our release plan too much. We thought we must use this opportunity to bring the UI back to standards. After all, the last major release was more than two years ago.

After version 6 is released we will release a new product that I think might change the way we work. More about that later again;I've gotta get back to working again. We installed a new server for our automated builds and that machine is about 20 times faster than the old one, so there is not much waiting involved anymore. I used to take that waiting time as an opportunity to do some other stuff, but that's history now. I will have to make some proper time for blogging and stuff like that.

Bye,
Bart

Wednesday, December 10, 2003

Het is een tijdje (...) stil geweest... Maar hier ben ik dan weer. Ik was dat bloggen een beetje vergeten, maar nu de nieuwe google toobar zo'n blog-knop ingebouwd heeft; laat ik het maar weer eens proberen.

Wat is er gebeurd de laatste paar maanden? Nou, een hele hoop. Sevensteps heeft een nieuwe partner (SPC Training) en daar hebben we een nieuw product voor gemaakt. Geheel voorzien (zie vorige posts) van een eigen look and feel. Ook is een groot project doorgegaan (voor het Rijksmuseum) en nu is het tijd om grote(re) veranderingen in de software aan te brengen. Ook in het personeelsbestand is een verandering: TomJ komt er per 1 februari bij. Een mooi moment wel. Overmorgen kijken naar een nieuw pand... Maar over de software...

We zijn bezig om met wat grote klanten te kijken naar de toekomst van de software. Vorige sessie hebben we het voornamelijk gehad over de functionaliteit van de engine (zeg maar, de schrijf- en publicatieomgeving), maar morgen zullen we het hebben over de management omgeving. Die is vorige keer ook al aan de orde geweest, maar ik hoop morgen dieper op de materie in te kunnen gaan.

Belangrijkste nu voor het Rijksmuseum project is de mogelijkheid om gegevens te kunnen samenvoegen. We hebben al een tijdje die mogelijkheid en gelukkig heb ik een tijdje geleden daar een soort van interface op gebouwd. Dus dat zit wel ok. Het wordt wat tijdrovend allemaal, maar daar hebben we de projectmedewerkers voor om die acties uit te voeren.

Eigenlijk had ik voor morgen gepland om al wat demo's te hebben, maar dat is niet gelukt. Vanavond wel een beetje zitten spelen met Delphi7 (waarmee de volgende versie gemaakt gaat worden) en dat geeft me op zich wel een goed gevoel. Dat komt wel voor elkaar. Ik wil proberen om ergens volgende week _echt_ te beginnen met ontwerpen en ontwikkelen.

Zo, dit is het even voor nu. Niks meer demo maken voor morgen; dat gaat even allemaal en l'improvise.

Tuesday, April 01, 2003

Gisteren weer een beetje gewerkt aan de core engine van Sevensteps. De welcome.exe is nu aangepast en alle common libraries zijn voorzien van resources vanuit een Sevensteps database. Wel mooi hoor: resources aanpassen, publicatietje draaien en je hebt een product met aangepaste resources.
Verder vandaag de nieuwe machine van Kees ontvangen en aan het installeren. Dat wordt wel een mooi machientje! Dat was het voor nu eventjes! Bye

Wednesday, March 26, 2003

Vandaag ben ik maar begonnen met het aanpassen van de core engine van Sevensteps, zodat partners echt hun eigen producten kunnen maken. Blijkbaar maakt het nogal wat uit voor de motivatie en de diverse commerciële mensen of er een plaatje zus of zo in de splashscreens is opgenomen. Beetje vervelend werk is het wel (alle producten even van een nieuw content design voorzien kan ff duren...), maar goed. De klant is koning niet waar? Het is wel weer leuk om weer eens een beetje in Delphi te programmeren (zei ik dat???)

Tuesday, March 25, 2003

Wat zal er NU gebeuren, nu ik de template heb veranderd?

Nou, dat ging dus wel goed. Dan maar beginnen met een echte weblog...

Vandaag en gisteren ben ik (weer eens) aan het stoeien geweest met de ISA server. Mooi spul hoor en eigenlijk werkt het allemaal prima zoals gedocumenteerd. Alleen... voor je gevonden hebt wat je eigenlijk moet lezen ben je heel wat uurtjes verder. Ik zou dat allemaal niet voor elkaar krijgen zonder google.com. Heb je de toolbar al geïnstalleerd? Zo niet, doen! (als je een Windows bak met IE hebt dan). Ik kan niet meer zonder.

Nou, dat was hem. Zo maar eens kijken hoe het met de Iraakese vrienden is. Ik hoop dat het allemaal niet zo lang meer duurt daar.

Friday, March 21, 2003

Dit is hem dan (nou ja, de tweede alweer): mijn weblog. Geen idee wat er gaat komen; we zien het wel!

Doeg

(http://www.sevensteps.nl)