Saturday, April 05, 2008
Namechange
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...
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?
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
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
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
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
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
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...
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/parentand 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/childand 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
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
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...
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...
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
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
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
Tuesday, March 25, 2003
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
Doeg
(http://www.sevensteps.nl)