Mike MacDonagh's Blog

Somewhere in the overlap between software development, process improvement and psychology

Tag Archives: review

Linux GUI Development: Lazarus 1.0 Review update

A while ago I wrote a review of Lazarus 0.9.30 and it came out with the 63% mainly because the installation process was so horrible. Well now it’s almost a year later and v1.0 has been released so it’s only fair I update my comments…

Installation

It’s still not exactly shiny but, and it’s a huge but, it is simple and it works! 🙂 To install on Linux I had to download 3 .deb files (1 for Lazarus, 1 for the compiler, 1 for the source) and then I could install them by simply doing:

doing sudo dpkg -i *.deb

It’s worth tidying up any old Lazarus installs first which you can do by running my script here.

Downloading *.deb files and installing them is pretty normal for linux users so although it’s not a shiny wizard installer or single command it is simple and most importantly it just works! I’m going to upgrade this from 1/19 to 8/10

First Impressions

A lot of the little niggles have gone away and it’s a much more stable, solid feeling environment. It does still load up with a million windows (Delphi style) and feel a little old fashioned (a lack of wizzy GUI controls and UI customisation, single window mode etc.) but being open source and written in itself I can change these things if I want to reasonably easily. In fact loading up the AnchorDockingDesign package makes the IDE a docked single window affair and there’s plenty of 3rd part controls to download and play with.

Normal multi-window interface for Lazarus
Lazarus as a single window IDE

There’s still no multi-project support and recompiling the IDE to get a new component on the toolbar feels a bit weird even if it does work perfectly well. I’m going to stick with 6/10 for those reasons.

The GUI designer and Code Editor haven’t really changed since my last review and so they stay happily at 9/10.

Language features

The handling of generics has improved since I last looked at Lazarus and all seems to work pretty well now 🙂

Otherwise nothing much has changed, no  multicast events or garbage collection but those things don’t really slow me down much. That’s why I gave it 6/10.

Despite the lack of some of these things the language has always been and still is quite elegant (other than the nasty globals), it’s got an excellent simple OO implementation and it’s really easy to quickly put an app together – oh yeah and it’s cross platform.

Cross-platform and backwards compatible

Lazarus works on windows, linux and mac. You can write a bit of code and natively compile it on each platform making for lightening fast code with no external dependencies. Write once, compile anywhere. You can already (partially) compile for android and other platforms are possible – anywhere the fpc compliler can be ported your code could work. That’s pretty impressive and it just works brilliantly.

Similarly all that ancient Delphi code can be loaded up edited and compiled and largely just works. Brilliant again. For that reason I’m going to bump up the language features to 8/10. (9 when android is working well).

I’ve not tried the feedback process again since v1 so I’m going to leave it at 7/10.

Conclusion

Despite it’s old fashioned feel in some places it’s simplicity is elegant and actually quite powerful. If you know the Object Pascal/Delphi language then it’s so fast to create good looking cross platform apps that it’ll knock your socks off.

When I pick up a new language I tend to do a challenge to load an xml file into a multi-column listview and create a details form to edit the selected row. In Java, something so apparently simple is a massive pain due to the imposition of the MVC pattern on everything. In C# it’s pretty easy, I can go MVC or not. In mono it’s reasonably easy too, although not the same easy and not as easy to get away from MVC.

In Lazarus it’s really easy, and it works fast and well on 3 major platforms. That’s a killer feature.

Category Score
Installation 8/10
First Impressions 6/10
GUI Designer 9/10
Code Editor 9/10
Language Features 8/10
Feedback process 7/10
Cross-Platform 10/10
Overall 81% – Easy to use and powerful

In my previous review I said I couldn’t really recommend it, and that made me sad. Now I can recommend it, in fact it’s quickly becoming my technology of choice for linux gui development, because it’s quick to put things together and they look good. Just maybe Lazarus is living up to it’s vision and bringing Delphi back to life, but bigger and better than it was before!

SimpleGit is developed in Lazarus

Advertisements

Linux GUI Development: Lazarus 0.9.30 review and screenshots

This blog is part of a series looking at programming tools on linux and covers Lazarus 0.9.30

EDIT: Since I wrote this Lazarus v.1 has been released  so I’ve updated my review here.

 


 

I’ve always liked Wirthian languages since programming in Modula-2 and university and Delphi late because they’re very readable and promote good programming practices in the structure of the language. Also, I like Wirth’s law “Software is getting slower more rapidly than hardware becomes faster.” from A Plea for Lean Software even if it wasn’t actually him that came up with it.

When I made the jump from Windows to Linux I was on the search for a nice high level language to do GUI development stuff in. In searching I came across Lazarus. Lazarus is a free cross-platform IDE which provides the Delphi experience for Linux (and Windows). Rather than Java’s “write once run anywhere” Lazarus aim’s for “write once compile anywhere” courtesy of the Fee Pascal Compiler (FPC). On top of the compiler Lazarus comes with the LCL (Lazarus Component Library) which gives a single interface for GUI programming despite underlying differences in implementation.

Lazarus is at 0.9.30 so it’s not a v1 product yet… However I’m not going to give much benefit for that since it’s been around for both windows and linux since 2008 and is available from the Ubuntu Software Centre.

Installation

Oh dear… the most important part of a software package, since if it fails your software doesn’t get used and for Lazarus it just sucks! When I first tried to install Lazarus it took me over 20 times to get it actually working. A comment from the Lazarus forum replied: “…20 times isn’t that much…” as if this is acceptable. Ok, so it’s free and open source but if it’s not accessible people won’t use it. It’s so hard to get running I’ve posted twice on the topic (and had a significant amount of hits from people with the same problems).

Worse, upgrades to Ubuntu have totally broken the installation and it’s not properly compatible with the new Ubuntu overlay scrollbars leading to focus problems with windows, text boxes and menus.

Basically, unless you really care it not going to be easy to get going. 1/10

First Impressions

Once I finally got it running my immediate reaction was summed up by the word “w00t“. Despite the always ugly multi-window layout here was an environment and language I knew like the back of my hand (so long as I rewind my memory 15 years) and could quickly put together good looking cross-platform apps in minutes 🙂

Normal multi-window interface for Lazarus

Lazarus as a single window IDE

It is possible (by recomiling the IDE) to get a single window mode which is a bit more modern. I was little disappointed to see that it didn’t have multi-project support but at least it’s solid and works if a little old-fashioned feeling. 6/10

WARNING: Due to problems with focus, the current version is close to unusable in Ubuntu 11.10.

GUI Designer

The GUI designer is solid and works well. Guidelines, alignment indicators and a pretty good set of visual components make putting together a simple form trivial. There’s no layout controls as you get in many newer GUI IDEs (flex boxes, tables, fixes vs.s flow etc.) but the use of anchors and panels means this isn’t a problem. The GUI designer feels a lot like the Delphi designer 9/10

Code Editor

The code editor features all of the old colour schemes and look and feel of Delphi with all of the modern stuff you’d expect like code folding, code completion etc.  The link between code and visual elements is easy to manage, especially with the excellent Actions feature. The Lazarus code editor is actually an improvement over the old Delphi editor 9/10

Language Features

Global variables are still there, I understand taking them out would cause problems for supporting old code bases but it’s still a shame.

The language is a good simple OO implementation but it misses out on some modern features like extension methods, anon methods, iterators, code attributes/decoration, multi-cast events…

Generics have been added but they feel a bit like a bolt on in this version, especially as when compared to their simplicity in languages like c#. Here’s the same example I used in the c# mono review in Lazarus.

generic TGList<T>; = class
  Items: array of T;
  procedure Add(Value: T);
end;

TBlobList = specialize TGList<Pointer>;

....

sb := TStringList.Create();
for n :=0 to Length(blobs.Items)-1 do
begin
  sb.Append(blobs.Items[n].name);
end;
Memo1.Text:= sb.Text;

I’ve created my own base generic collection here and then specialised it for a custom type. All seems to work pretty well.

Finally.. there’s no (limited) garbage collection. Although visual elements are dealt with when you close a form (it’s normally too late by then if there’s a problem) there’s no garbage collection which means in that code above I need to change the TStringList.Create to:

sb := TStringList.Create();
try
   ...
finally
sb.Free;
end;

All in all, although it used to be a neat elegant language, and it still is Object Pascal just feels a bit old fashioned and clunky now. Sadly I’m going to have to give this 6/10

Feedback Process

The main feedback mechanism is the Lazarus site with wiki and forum. The forum’s fairly active but there seems to be an acceptance of problems such as the installation issues which is worrying.  7/10

Conclusions

Although the current version doesn’t really work with Ubuntu 11.10 the previous (and I hope future) configurations provide a pretty easy to use solid GUI design and code experience if a little old fashioned.

The community is reasonably active but a lot of the Lazarus usage seems non-English meaning the resources are sometimes a little hard to understand for me and since Pascal is  a bit of a niche language these days there’s not much non-Lazarus resources that can apply (except for old Delphi resources).

Although I’m predisposed to be positive about Lazarus to be honest I can’t really recommend it unless:

  • You’re an old Delphi developer looking for some nostaligia
  • Someone who hasn’t accepted Delphi is dead (even the website set up to refute this http://www.isdelphidead.com/ is dead!)
  • You need to quickly produce something very simple for multiple platforms and don’t know any other languages
Category Score
Installation 1/10
First Impressions 6/10
GUI Designer 9/10
Code Editor 9/10
Language Features 6/10
Feedback process 7/10
Overall 63% – Sadly not good enough

Linux GUI Development: Monodevelop 2.6 review and screenshots

This blog is part of a series looking at programming tools on linux and covers MonoDevelop 2.6

MonoDevelop 2.6 is awesome 🙂 I first tried MonoDevelop about a year ago and gave up quickly. It just wasn’t usable, but these days it’s a totally different story. I’m quite drawn to Mono and MonoDevelop because I used to be a .net developer and really like C# as a language.  Also as an old Delphi developer the .net framework has an intuitive design and structure since they were both designed in large part by the same guy – Anders Hejlsberg. I saw him present on LINQ in LA, he’s a clever dude.

Mono is an open source project to make .Net compliant tools, compilers, runtimes etc. able to run not just on windows, but on linux, android, mac etc. MonoDevelop is an open source development environment for Mono providing GUI designers and language support for C#, Java, Boo, VB.Net, Python, Vala, C, C++, Oxygene (Object Pascal based .Net language, though not available in the current version of MonoDevelop).

Installation

I was able to install it directly from the Ubuntu Software Centre, it ran straight away with no issues. Not quite 10/10 though. I tried to write a “hello world app”  and  it wouldn’t compile 😦 A quick google later and I found that the default .net framework target in the project options needed changing from 2.0 to 4.0 then it was fine. 9/10

First Impressions

Starting up MonoDevelop you’re greeting with a very MS Visual Studio like welcome screen with links to create stuff, recent stuff and web links. The IDE has a very solid and elegant feel, it doesn’t start with a million views and tabs like Eclipse, is visually pleasing (unlike Lazarus) and incorporates platform theming well (unlike Eclipse/SWT). 10/10

MonoDevelop Welcome Screen

GUI Designer

The GUI designer is embedded in the main window in a similar fashion to MS Visual Studio, with widgets in a toolbox controlled by layout containers (fixed, aligning, tables etc.). Widgets are added to a window by drag and dropping and although there’s nice to have features like alignment guidelines missing the designer is solid, platform themed and doesn’t crash. It slightly frustrating to me that I can’t just double click on a button to create a default click handler and start writing my code but I can double click in the signals box (on the right) and do it from there.

MonoDevelop GUI designer

Brilliantly, it can handly some old c# .net forms I wrote which used custom visual inheritance to make a new form frame for an unusual app which I assumed would break it!

The only downside here is that many of the properties seem oddly named and aren’t consistent across different types. I keep having to hunt around for where to find the text property for different objects. There’s little relationship to WinForms either if you’re using GTK# in terms of property and event names. Oh yeah, and alignment/guide lines aren’t there yet when dragging components around.

Putting together a simple form is a trivial matter completed in seconds. 8/10

Code Editor

The code editor supports all the normal modern stuff like colour control, code folding, code completion etc. and again is neat and elegant. The code completion helper in particular is very easy to use as is the code snippets tool box. Obvious problems are underlined as you type and the link between the visual elements and code is easy to work with.

MonoDevelop - Code Editing

MonoDevelop - Code Errors

The only downsides for me are the refactoring interaction which features a visual arrow that jumps to suggested places to put the new code – it doesn’t jump to very sensible places sometime; the compilation errro/warnings which are shown inline embedded in the code. These can make it a little hard to read the code until you’re used to them. You can of course turn them off. Overall though, it’s excellent. 9/10

Language Features

Writing C# in mono is brilliant. From the mono project website:

The Mono C# compiler is considered feature complete for C# 1.0, C# 2.0 and C# 3.0 (ECMA). A preview of C# 4.0 is distributed with Mono 2.6, and a complete C# 4.0 implementation is available with Mono 2.8…

That means the language supports OO constructs, iterators, anon methods, generics, statics, extension methods, LINQ, memory management, reflection, threading and much more…

Between LINQ and the mono framework implementation of the powerful MVC pattern loading stuff into object graphs and presenting that in editable for to users is a high level programming exercise.

As an easy language example here’s  working with a collection of TestBlob entities:

private List<TestBlob> blobs = new List<TestBlob>();

...
StringBuilder sb = new StringBuilder();
for (int n=0;n<blobs.Count;n++)
{
      sb.AppendLine(blobs[n].Name);
}
....

Simplez! 😀

10/10

Feedback Process

There’s a little feedback button on the bottom of the IDE that lets you quickly send feedback to the community. I did this regarding my frustration over clicks from the visual designer direct to code handlers and another minor issue. Within the day I had a friendly response describing how my comments had been listed as two bugs on the public bug tracking system on xamarin.com and explaining how to add myself as a subscriber should I wish it.

MonoDevelop - Feedback

That’s awesomeness on toast! 10/10

Conclusions

The solid GUI designer, integrated debugger and high level language support for cross-platform development provided by MonoDevelop is brilliant. It’s easy to knock up a quick app to do something. My 7yr old son and I have been using it do develop a calculator as an introduction to programming basics and he things it’s a good easy to use system.

Getting going with the MVC pattern can be a little frustrating if you just want to programmatically put a bunch of things in a listview (btw if you do this use a treeview not a listview even if that sounds crazy at this point) but that’s a common hurdle for most modern day languages/gui widget sets.

The mono and monodevlop communities are large and active and the web is full of c# tutorials and info. I’ve found that guidance written for MS developers in c# is directly applicable to c# in mono. This is now my favourite cross-platform development environment and technology.

Category Score
Installation 9/10
First Impressions 10/10
GUI Designer 8/10
Code Editor 9/10
Language Features 10/10
Feedback process 10/10
Overall 93% – Excellent

Google+ review

G+ is a social network from Google to rival Facebook, twitter, tumblr etc. I’ve been trying it out and kinda like it. It’s intuitive, easy to use but also a bit surprising. The best feature by far is the circles (screenshot below) which allow you to segment your social graph, or more simply put your contacts into groups. Then when you share something like a post or photo you can choose who to share it with. That means you can have things like family, work, acquaintances or just people you follow all in one place.

The interface is nice and shiny with lots of drag and drop and nice little features and animations, but when you first load it up it can be a little disconcerting how much it already knows about you. If you’ve already got a gmail account, an android account, picasa etc. then all of that stuff is already there in front of you. When I first logged in it had my picture, suggested various people members I should connect with (based on my email) and once I linked in my blog account it put in my blog intro into my profile. Clever, but a little annoying as well.

I’ve read that hangouts (a kind of chat platform) are the killer app for g+ but I’ve not checked it out. If I want to video call I tend to use skype and even then I don’t really want to video call, I’d rather IM, text or phone than video call.

Overall, I really like it. The ease of use, the simplicity of controlling where content goes, the nice simple little andriod app and the shiny interface have me drooling like a geek with a new toy. If only it was 5 years earlier and there were more people on it. I can’t imagine it replacing Facebook and twitter in the short or medium term as the stable door has been open far too long and there’s an emotional investment that people have in those sites.

Skyblaster USB skype friendly speakerphone rocks

I impulse bought this gadget in Homebase last week for £29, that’s only about $3000 these days 😛 , and it rocks. I’ve always had trouble with skype voice calls – I’ve got a really powerful top of the range PC with just about everything imaginable plugged into it and yet even after replacing the onboard soundcard with a top of the range games soundcard the microphone input (front or back) has always been just rubbish. I’ve tweaked all the tweakable settings to no avail, microphone’s just don’t work on my system.

So I bought this USB speakerphone. It doesn’t use my soundcard and all of a sudden people can hear my dulcit tones over the ewaves 🙂 It’s simple, cheap and works. It’s got buttons to call, hang up, navigate around skype etc. It’s also got inputs for plugging in your super stylish headset with microphone that makes you look like a bad 80s pop act.

Setup was trivial and well documented, and the best bit is that I can just use it whenever I want without unplugging/replugging speakers, microphones, headsets etc. My music still plays through my main speakers, but skype calls come through the speaker phone/attached headset. I’d buy it just to be a headset hub even if I didn’t want an answerphone!

SkyBlaster USB skype friendly speakerphone

SkyBlaster USB skype friendly speakerphone

Now I can finally use it I’m a skypeout convert!

9/10 Mac Daddy points for this great little (about 3in diameter) gadget.

MMD WordPress.com FireFox Extension v1.1

I’ve released a new version of the MMD WordPress.com FireFox extension, that fixes a bugette I had in the clickability of icons in the about box and has added a couple of new options to the status bar panel. If you have a WordPress.com blog you simply must have this extension.

I’ve also nominated the extension to become public on the mozilla firefox addons site. To help with this I really need people who download it and use it to review it. There have been over a hundred downloads so far and only 2 reviews! Add a review people, I shall send you an email full of e-karma if you do so 😀

Screenshot of v1.1

MMD WordPress Extension screenshot

MMD WordPress Extension screenshot

Please leave comments on the extension page here

Ubiquity – language integrated internet

A trip to Swansea

I recently took a trip to Swansea in South Wales as I’ve got a lot of family there. Along with spending a lot of time visiting various family members I enjoyed a massive amount of rain! We decided to stay in a hotel rather than with family to make it more of an adventure for the kids so we chose the Oxwich Bay Hotel which is in an amazing location in the middle of nowhere on a beach that would have been a lot more fun if the weather had been better.

Quite frankly the hotel was underwhelming, not well kept up and overpriced. Our family rooms which were meant to cater for a family of four including a baby didn’t even have a bath or a fridge and hadn’t seen a lick of paint in years. I wouldn’t recommend it.

The trip had some highlights though, I was able to take my kids to see their great grandparents, the first time the g-g-parents have seen the baby. I also took them to see my parents, various yappy dogs/puppies and my wonderful sister and her great family. So there was much playing, silliness and general catching up. I don’t travel to Swansea very often so I was surprised by the lack of comments on the evil genius beard I sport these days, but not surprised on the various comments about my growing belly!

We visiting Oakwood Theme Park on one of our days which I remember from when I went as a kid.
Back then the best ride was the waterfall! However Oakwood as since grown up to be a proper theme park with some great rides 😀 The indoor play area was my son’s favourite part of the place I think! He ran around there for hours having great fun 😀

We went on a really wet day, but had a great time despite being totally soaked – even though we avoided the wet rides!

Waterfall

There’s a new rollercoaster called Speed which has a vertical lift to immediate vertical drop, loop, over-banked turn and barrel roll which made my brain feel like it was going to dribble out of my ears like porridge. 7/10 which would be higher if I’d managed to find a more comfortable head position – it really did hurt my head! This ride has the steepest drop in the UK and is the tallest of its type in the world.

Speed

We also went on the world famous Megafobia which often features on lists of the worlds best rollercoaster – it’s a brilliant wooden coaster with really tries to lift you out of your seat 9/10 😀

It has a 55 degree drop, and it’s also a fast ride. A CCI (Custom Coasters International) built ride, Megafobia has celebrated its 11th year of existence and has been voted one of the best wooden roller coasters in the world[1]. If you dismantled Megafobia and laid planks of wood end to end, it would reach from Oakwood Theme Park to London and back again!

Megafobia

Megafobia

Vertigo. This involves being winched up to the same height as the big arch and then pulling a rip cord! You free-fall for moment before the cable gets you and you start swinging to a massive height at great speeds. Not the light hearted but it’s an incredible experience and it feels like you’re flying. 10/10 from me, even when it’s raining!

  • Height: 164 ft (50m)
  • Speed: 80mph (128kph)
  • Acceleration: 3g (30 m/s²)

Apparently there’s one that’s 300ft high in Florida 😯

Vertigo

Vertigo

As another part of our trip we went to the Swansea Lesiure Centre – since I was last there as a kid it’s been completely rebuilt and is now cunningly dubbed lc2! It’s got some great slides, a lazy river, bubble pool and large wave pool. Some really goot kiddie and baby pools with interactive features that are a lot of fun. We all had a great time, and I especially enjoyed the Masterblaster, a roller-coaster style ride which blasts riders uphill on jetted water – then lets gravity do the rest! It’s a great improvement on the pool I remember as a kid and I thoroughly recommend it if you’re even in the area. It’s also got a Surf Rider, which is the world’s first indoor deep water surfing ride but I didn’t get to go on that 😦

There is a four-storey children’s Playzone incorporating interactive audio visual elements using projectors, latest computer hardware and bespoke software packages, together with a sensory room for children with special needs, which is another world first. We had a great time there, all the way from me to my 10 month old 😀

LC2 Construction

LC2 Construction

LC2 Main Pool

LC2 New Pool

LC2 MasterBlaster

LC2 MasterBlaster

LC2 Surfing

The "old" pool

LC1 The old pool

The old empty pool

LC1 The old empty pool

First impressions of William Shatner’s “Up till now”

I’m about half way through William Shatner’s autobiography “Up Till Now” so I thought I’d write a part way through review. I decided to pick it up because my wife’s a bit of a Trekkie (I just like the shows, she’s obsessive) and he’ll be the guest speaker at this years RSDC 2008 which I’m going to.

So far, I resisted writing “up till now”, it’s a really enjoyable book. It’s literally made me laugh out loud and frequently made me stifle some chortling (while on the train during my arduous journey home). The writing style is very warm and engaging and the book is chock full of great stories and anecdotes. There’s a certain rambling style that makes reading it more like following and endlessly forking lightning strike rather than following a straight line and for me that just makes it a more interesting and enjoyable book.

Bill Shatner’s self-deprecating sense of humour is prevalent throughout with some really funny stories and jokes, but he also comes across as a very caring and human person. The ghost/co- writing about the death of his wife is very serious emotional and yet the book reads very positively. I’ve not finished it yet but so far it’s everything I wanted and expected, I don’t normally read autobiographies but I thoroughly recommend this one. I never realised he was in so much stuff!

I look forward to hearing him declaim in the famous Shatnerian fashion in a few weeks time 😀

Up Till Now: The Autobiography, by William Shatner, is published by Pan Macmillan

%d bloggers like this: