Posts

ToolBox III - Public Beta Trial

It's been a couple of months now, that I have been designing the next version of ToolBox and last night I managed to finally get a beta version out on my web-site. It's been hard work trying to refactor code (clean it up/modernize it along the way), then build new functionality and incorporate a few libraries and technologies I've been playing with these past few years (for example a new image manipulation engine, a new TileGrid component). This beta has the potential of becoming a release soon, I had to draw a line on new features and stop there, otherwise I wouldn't be able to release it soon enough. The new version has many changes underneath, but in terms of user interface it allows you to fully customize a ToolBox. For the first time users can choose to display text below an icon and also create a secondary text comment for each icon and display that on the ToolBox. What is more, the primary icon text that is displayed is now decoupled from the hint, which can be...

Pascal features you can fall in love with

I am a bit sentimental I admit it. For years and years and years I've been writing and teaching Pascal, Pascal OOP and Delphi (not since 1999 though). Ever since the early days I had a certain fondness ofn the Pascal enumerated types and the Ord() function. The Ord function returns a cardinal number (integer) for any given ordinal type. Ordinal Types are cardinal numbers like byte, integer, shortint etc., chars (!) and enumerated types. So Ord(0) = 0, and Ord('@') = 64 as 64 is the ASCII code of the '@' char in the order of the ASCII characters. Nice. In the same category as Ord(), are the functions Pred(), Succ() and procedures Inc() and Dec(), which increase and decrease ordinal numbers. Things like Inc ('A', 32) is a valid thing in Pascal, and increases the ordinal value of 'A' by 32, making it an 'a'. Thus making the nicest of capitalisation routines that you can find in any computer language: if (c in ['A'..'Z']) then // ...

GetDIBits vs. Scanline vs. Pixels[] in Delphi Bitmaps

I've been always wanting to sit down one day and solve this problem; test the speed of manipulating pixels on a Bitmap using the three options: - the convenient but understandably slow Pixels[], - the "interesting" Scanline property and - the Windows API GetDIBits and SetDIBits. I have been traditionally using Pixels for quick work and the Get/SetDIBits for low-level pixel manipulation such as the filters used in ToolBox . Never really used the Scanline property in anger, I was always thinking, DIBits "had" to be quicker. Little I knew... I have been experimenting with two tools that I've written and never released to the public domain. The first is the BMPCreator which I wrote in order to create 256-level grayscale bitmaps, the other is the IconCreator which uses a grayscale bitmap and applies color maps to it, giving you the ability to create different colored versions of the same icon (like in my database visualization tool VirtualTreeNavigator ). Yesterd...

And you thought Chrome was the best...

Wowdi! Didn't expect that. "The Register" reported the news about Opera 10.5 beta and I immediatelly went to download the latest version. Using my own "benchtests", i.e. the little JS/HTML5Canvas expirements I wrote during the last few months ( Mandelbrot and 3D Dissolve JS ), I compiled the following list: Browser Mandelbrot (ms) (*) Dissolve (fps) (**) Chrome 4.0 1248 48.1 Firefox 3.6 1277 51.3 Opera 10.5beta 369 72.3 Safari 4.0 2551 49.2 (*) Lower times (in milliseconds) are better (**) Higher FPS rate is better There you go then, Opera annihilates the competition with a beta! That will make some Google and FF engineers scratch their heads a little bit. Firefox 3.6 came with a lot of improvements closing the gap to Chrome. Opera now comes and from being the slowest browser in JS now becomes the fastest with a difference! More than 3x the speed of Chrome in Mandelbrot? That is absolutely amazing. Very well done guys, you are obviously doing the right thing...

iPad - The future has arrived

Just been watching the video at http://www.apple.com/ipad/ . I've been grinning, I've been laughing, I've been drooling. This is EXACTLY what I was expecting for 3 years now. Ever since I bought my first-gen iPod touch, I've been thinking about this device with the same interface but just a bigger screen. I have even bothered to get into Photoshop and mock up an ideal iPod touch (screenshot to follow). For 3 years the rumours were everywhere, now this is reality. But two more months of wait? What am I supposed to do now? I think I'll just download the SDK and pretend that I own one using the emulator... Well done Apple, you've got everything right! Even the price!

3D Dissolve is coming back...

The moment I laid my hands on HTML 5 and the canvas element , I knew exactly what I would attempt next. These Christmas days I managed to getaway to a small village in Northamptonshire with the family (now we are three...) and had some time to convert that tiny 3D engine that I had written back in March 1996 in Turbo Pascal 7. That was 14 years ago! Here's the file header :-) LOL: { Obj3d v1.0 written by K.Symeonidis } { (c)1996 by CyLog Software } { } { March.1996 } { } { This is my first attempt for a fast } { 3D Graphics engine } With Obj3D I wrote a couple of demos in TP7, then converted it (v1.50) to Delphi and with it I wrote a few more demos for windows this time. In 1997 we wrote with Ioannis Tsoukalidis the "3D Dissolve" screen saver which proved to be quite popular on the baby-internet. Dissolve managed to get a couple of updates since the...

Quick Perforce Setup

This serves as my personal quick guide to setting up perforce on Linux. Create a new directory (e.g. /u01/p4root), download p4d from http://www.perforce.com/ and copy it to the above folder. Set execute permissions and chown it to the Linux perforce user that will be running the server process. Start the Perforce server with: p4d Create a user: p4 user Set the email and save the user. Check the users: p4 users Set the security level to strong passwords: p4 counter -f security 2 Set the user's passwd: p4 passwd Restart your server and then login: p4 login Type your password, this will ensure your server is secure. Create a client workspace p4 client Give it a name, set the "revertunchanged", "share" for line ends, "rmdir" options. Depots List the depots: p4 depots Delete the default depot: p4 depot -d depot Create some depots: p4 depot ...name... List the depots again: p4 depots Map the depots to your client by using p4 client. Type Maps Set the typema...