Thursday, April 07, 2005

Ruby: Not quite as shiny as one would hope.

Right, what with all the hysteria surrounding Ruby on Rails , I decided to give Ruby and RoR a bit of a whirl.

I was quite disappointed with the almost vertical learning curve of Zope and quite open to abandoning Python and defecting to the dark side of the force. Matz rasping "I am your father..." after he's lopped off your hand can do that to you :-P

So any, after around a week of reading, I'm back in the Python camp and on my knees begging for forgiveness and integration back into the Hive.

What happened?

Ruby happened.

So what's this short foray into enemy territory taught me?

A. The positives.

Ruby has a lot going for it. Its OOP mechanism are much cleaner than Pythons and closures are cleaner and feel more expressive. In addition, the language supports threading, which is great. JRuby is under active development, unlike the recent history of Jython (although that's changed recently with the reactivation of that project with a fresh infusion of blood (and cash!)). The .. and ... are handle stuff sweetly in for loops too.

The community's great and the platform is still far from being fully formed, so your opinions can actually help direct the future of Ruby.

B. The negatives.

Ah, now we get to the meat of the matter. Wait, I'm going to need a numbered list for this :-D

  1. Magic variables: I left Perl and joined up with the Python camp because I hated stuff like $_, $1, $2, $foo etc. I know it's possible to avoid using these in Ruby, but not everyone's as fastidious as I am and reading this kind of code leaves a bad taste in my mouth.
  2. Crap variable names: $why $do @I have_to @@Name $my variables LIKE @this? $pare $ME!
  3. Verbose block delimiters: What exactly does one gain by using BEGIN..END versus {..} or significant indentation?
  4. Weak Libraries: One of the greatest strengths of Python, Perl, Java and other mature languages/platforms is the vast array of easily accessible libraries. It makes coding up a useful application quickly very easy. Ruby's lack of robust industrial strength packaged libraries is a major failing.

You'll notice that points 1..3 relate directly to syntax. I know the niggles seem a little petty, but things like this do matter when your coding. I want something I'm going to be interacting with for several hours everyday, to be smooth and pretty. It's something which is important to me and I'm sure to a lot of other people out there.

As for Rails... I admit that I haven't really gone all that deep into it, but that's because even a cursory examination revealed it to be heavily magical. Far too many things just 'happen' and although it may speed up initial coding, it will come back to bite you later. Besides all the squealing about 10x improvements in productivity remind me of Fred Brooks essay, No Silver
Bullet
. Some one should send the RoR cheerleaders a link.

And I've discovered frameworks other than Zope for Python.

More on that later.

Maybe...

:-)

Thursday, February 24, 2005

Groovy!

<austin powers> Yeah baby! </austin powers>

:-D

Groovy's, well, reeeeeally groovy dude. It's a Pythonisc scripting language which is designed to run on the Java 2 Platform and which is instantly intuitive for Java programmers. It's got native lists and hashes, closures, loose typing and inbuilt regex. If you know Python and Java, you'll be up and running in a few minutes.

Groovy really cuts down on the lines of code required to get things done. No need to declare variables, easy to use for loops and inbuilt list types (with slicing, ranges etc.) reduce code clutter. It's not magic, but a definite improvement on vanilla java.

Since it runs on the JRE, it's got access to Java's "everything and the kitchen sink" library and since it compiles to java byte code, you can call groovy code from within your java classes and vice-versa. Plus, you can run groovy on it's interpreter for easier debugging and testing.

What's the catch? Well, it's still under development and the specs are fairly fluid apparently. However, they've submitted Groovy Java Specification Request 241 to the Java Community Process Program and if JSR 241 is accepted, Groovy will be an official standard.

Final Word: It looks absolutely fantastic, but I'm not going to use it for anything serious till it's standardised. Besides, it's marked as unstable on Gentoo ;-P

Thursday, February 10, 2005

Bob Parsons 16 rules.

Bob Parsons 16 rules for success. Quite cool actually. I've pasted them here for easy reading.

The points I found particularly interesting are in red.


1. Get and stay out of your comfort zone. I believe that not much happens of any significance when we're in our comfort zone. I hear people say, "But I'm concerned about security." My response to that is simple: "Security is for cadavers."

2. Never give up. Almost nothing works the first time it's attempted. Just because what you're doing does not seem to be working, doesn't mean it won't work. It just means that it might not work the way you're doing it. If it was easy, everyone would be doing it, and you wouldn't have an opportunity.

3. When you're ready to quit, you''re closer than you think. There's an old Chinese saying that I just love, and I believe it is so true. It goes like this: "The temptation to quit will be greatest just before you are about to succeed."

4. With regard to whatever worries you, not only accept the worst thing that could happen, but make it a point to quantify what the worst thing could be. Very seldom will the worst consequence be anywhere near as bad as a cloud of 'undefined consequences.' My father would tell me early on, when I was struggling and losing my shirt trying to get Parsons Technology going, "Well, Robert, if it doesn't work, they can't eat you."

5. Focus on what you want to have happen. Remember that old saying, "As you think, so shall you be."

6. Take things a day at a time. No matter how difficult your situation is, you can get through it if you don't look too far into the future, and focus on the present moment. You can get through anything one day at a time.

7. Always be moving forward. Never stop investing. Never stop improving. Never stop doing something new. The moment you stop improving your organization, it starts to die. Make it your goal to be better each and every day, in some small way. Remember the Japanese concept of Kaizen. Small daily improvements eventually result in huge advantages.

8. Be quick to decide. Remember what the Union Civil War general, Tecumseh Sherman said: "A good plan violently executed today is far and away better than a perfect plan tomorrow."

9. Measure everything of significance. I swear this is true. Anything that is measured and watched, improves.

10. Anything that is not managed will deteriorate. If you want to uncover problems you don't know about, take a few moments and look closely at the areas you haven't examined for a while. I guarantee you problems will be there.

11. Pay attention to your competitors, but pay more attention to what you're doing. When you look at your competitors, remember that everything looks perfect at a distance. Even the planet Earth, if you get far enough into space, looks like a peaceful place.

12. Never let anybody push you around. In our society, with our laws and even playing field, you have just as much right to what you're doing as anyone else, provided that what you're doing is legal.

13. Never expect life to be fair. Life isn't fair. You make your own breaks. You'll be doing good if the only meaning fair has to you, is something that you pay when you get on a bus (i.e., fare).

14. Solve your own problems. You'll find that by coming up with your own solutions, you'll develop a competitive edge. Masura Ibuka, the co-founder of SONY, said it best: "You never succeed in technology, business, or anything by following the others." There's also an old Asian saying that I remind myself of frequently. It goes like this: "A wise man keeps his own counsel."

15. Don't take yourself too seriously. Lighten up. Often, at least half of what we accomplish is due to luck. None of us are in control as much as we like to think we are.

16. There's always a reason to smile. Find it. After all, you're really lucky just to be alive. Life is short. More and more, I agree with my little brother. He always reminds me: "We're not here for a long time; we're here for a good time."

And oh yeah, he insists I print the following...

"The above (or following) article (or rules for survival) is included with the permission of Bob Parsons (http://www.bobparsons.com) and is Copyright 2005 by Bob Parsons. All rights reserved."

Saturday, February 05, 2005

AAAARRGGHH! Someone's got 'my' domain name!

Picture this. You've just been hit by a absolute corker of a brain wave. The product idea looks good, the market is wide open and there's quite a bit of pent up demand. You've also got an excellent, catchy name all picked out. It's easy to use, it's 'punny' and it rolls right off the tongue. It's brilliant!

So you log on to your friendly neighbourhood domain name reseller's and check if it's available...

It's not.

Cue the screaming, tearing of hair and purposeless running around. And to make it just that bit worse, it's pointing to some chintzy site which looks like it hasn't been visited since the Middle Ages (2000 CE). Damn, you could twist that guy's head right off!

But wait! There's hope!! You check the whois records; the domain expires in two months!!! Will the current owner renew it? Won't he? Should you splurge for the domain on SnapNames or buy it for much less manually?! Will you run out of '!'s before this post ends?!

Oooooh, the agony!

Watch this space for updates! :-P

Friday, February 04, 2005

LBB Lesson - 2. Don't give up that day job!


Entrepreneurs are by nature optimistic, risk-taking, the-glass-is-half-full type people. You can't be anything else if you're going to start a business. Usually, this is absolutely great! It's this kind of an attitude that gives you the ability to slog on, with unwavering self-confidence when the chips are down and the outlook looks bleak. However, it's this very attitude that tends to blinds us to certain ground realities...

Namely, that it's going to take far longer to achieve profitability (and a living wage!) that you might think.

Thinking of starting a new venture? Make as pessimistic an estimate as possible about how long it's going to take for you to start making some decent dough... Now triple that span and maybe you're in the same ball-park as reality.

So you're going to need a steady revenue stream while you develop YATE (Yet Another Text Editor) or whatever. Of course, holding down in effect two jobs at the same time is going to be challenging (to say the least!), but whoever said shedding the fetters of wage-slave-hood was going to be easy?

You could live off your savings, however, continuing to work for someone else (either as an employee or a consultant) while you plan your own independence has some other, very important advantages:

  1. Networking: I think I've mentioned this before :-). In a nutshell, working alone can be injurious to your mental wellbeing! Well, OK maybe that's an over-reaction, but spending a lot of time obsessive working on The Next Big Thing isn't very healthy. In addition, if you cut yourself off from your peers, you're going to miss out on all those opportunities to make friends and influence people; the very people who might help you find the next, Next Big Thing.

    And I'd like to remind my reader, that when I use the word networking, I don't mean the slimy digging for contacts so beloved of sales people, but genuine friendships, based on mutual respect and affection...

  2. Inspiration: If you're cut off from potential customers and users, you're cut off from potential ideas for new products and features. You can't scratch someone's itch if you don't know they're itchy! Constant (maybe even grinding) contact with a multitude of clueless users is what's required to sensitise you to their situation. Cutting yourself off from them (and that's what's going to happen when you concentrate all your efforts on making and selling your products) is going to leave you the poorer for missing out on all that aggravation :-P

  3. Synergetic Partnerships: Who knows, while working for your current employer, you might get an idea for a product that complements his current spread of offerings, but isn't something he's interested in developing. He might however, be open to bundling your app with his or buying it outright.

    However, keep in mind that there is a fine ethical line that has to be trod here. It's fine to come up with something complementary or to inspired by some chance remark while on the job, it's definitely not OK to rip off your employers ideas or products.

So that it. The lesson to take away from here is that unless you've perfected the art of living off of air, you're going to need a steady revenue stream while you work on your product. You're going to have to work very hard, but hopefully, the rewards will be worth it.

You hope.

Thursday, February 03, 2005

Webcream: The dynamic Java/Swing to HTML converter

Webcream is like a car-wreak. Compelling and repulsive at the same time. It's a product that gives your Java/Swing app an HTML face, letting you put it up on the web with a minimum of code changes. That's absolutely fantastic! Unfortunately, it does this in an astoundingly ugly manner.

Take a look but I warn you, it ain't pretty.

It's an excellent idea, but I'm positive it can be implemented a whole lot better than it currently is. You'd think for the amount they're charging, they'd do a better job of it but I guess what they need is some competition to light a fire under them. Currently there isn't any, but when there's only one provider, there's always place for one more.


Friday, January 21, 2005

SQLite: An embeddable database

OK, this has been written about by others, but it's so cool, I had to mention it myself!

As the home page explains, "...SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine.." It's ACID compliant, the data files are portable across different machine architectures, it can handle respectable amounts of data (up to 2 TB) and it comes with Python bindings. :-P

It's seems like a great way to store application data without having to force users to install MySQL/PostgreSQL or hacking up a custom (probably buggy) solution.

I can't wait to use it!

Sunday, January 09, 2005

Tile: an improved themeing engine for Tk

Tk is gag inducingly ugly, but Tile shows us that it doesn't have to be.

Here's what Tk usually looks like:



Here's what Tk with Tile looks like in WinXP:



Impressive.

Read more about it on the wiki and see here for an example using Python.

Thursday, January 06, 2005

Well, I'm back!

The wedding's over and I'm back in the splendidly polluted 'chity' of Mumbai once more! I hate being wrenched away from my computer, but I must say I enjoyed the break. Two weeks of 0 productivity and almost no contact with tech... Heavenly! :-P

Anyway, expect more regular updates from now on...


Tuesday, December 21, 2004

Achates Take a Break!

Finally!

I'm out with Achates Take a Break!. This app has been hanging around on my computer in a 'nearly' finished state for a couple of weeks now and I finally pushed it out today.

Part of the reason I knuckled down to it was that I'm off for a week for my cousin's wedding (so no updates for a while!) and I wanted to finish this off before I left. Just 7 hours or so till I catch my train, and I haven't really started packing yet! :-P

<white rabbit>I'm late! I'm late!</white rabbit>

BTW, you might want to subscribe to the RSS feed to get the latest updates when I return...

RAD with Python, wxPython and Boa constructor - Part 3

Here's the third essay in a three part series on using Python, wxPython and Boa Constructor to rapidly develop cross-platform desktop applications.

Last time, we discussed wxPython, the GUI toolkit we're using to create rich, cross-platform user interfaces from Python. Now wxPython is great, but like almost all such toolkits, it's a royal pain to code up an interface using it. The code which deals with creating and managing the UI is usually very verbose and it's boring, tedious work. The drudgery of trying to get your buttons set up just so by repeatedly changing the relevant positioning variables and running the script, is positively mind numbing. What we need is a way to graphically setup the interface and have the code to recreate it generated automatically...

Enter Boa Constructor (just Boa from now on).

To quote from it's website, Boa is "...a cross platform Python IDE and wxPython GUI Builder. It offers visual frame creation and manipulation, an object inspector, many views on the source like object browsers, inheritance hierarchies, doc string generated html documentation, an advanced debugger and integrated help..."

Pretty impressive.

So what's to like?

  1. GUI Construction - This is the main reason I use Boa. Create a new frame, click on frame designer and away you go. Drag visual elements like list boxes, buttons and text areas in and throw them around until they look the way you want them to. You can access the attributes of the various visual elements by bringing up the inspector and change just about everything to do with the widget. You can also automatically generate place-holder callback functions and fill them up with the relevant code later. Boa really makes GUI construction a breeze.
  2. Code Exploration - Boa comes with some nice tools that help you explore other people's code; or your own if you're as lazy about commenting as I can sometimes be! :-). Just open up the .py file and tab over to Explore in the editor and you can browse the various classes and their attendant methods. Mosey over to Events and you can check out the various events handled in that file as well.
  3. Skeleton Files - Boa generates a wide variety of skeleton files which help reduce the amount of tedious typing you have to do. You can generate everything from wizards to setup files to help files, all at the click of a button.
  4. Debugging - Boa has extensive support for debugging Python code. However, python is so easy to use that I've never had to use a debugger to solve any problems. Yet :-P.

So much for the cheerleading.

Boa is currently at version 0.3.1-alpha. Now version numbers hold very little meaning across applications. I trust FireFox 1.0 a hell of a lot more than I trust Internet Explorer 6.0. Boa is fairly stable and useful, but it does have it's short comings.

  1. Ugly - Boa is ugly enough to make children cry, horses faint and women snort and rear up, pawing at the air. OK, that may be a little harsh... but it is pretty damned ugly. Now I know that shouldn't make a difference. Book covers and internal beauty and all that PC crap. But personally, I like working on applications which don't remind me of the bleeding, infected sores on a lepers back.
  2. Doesn't support latest version of wxPython - The official stable release of wxPython is still version 2.4.2.4. However, wxPython version 2.5 is stable enough to use regularly and has some nifty new features. Unfortunately, Boa refuses to work with 2.5 so all that's out.
  3. So-so editor - One of the main modules in any IDE is the code editor. It has got to be perfect, or as close to perfection as you can get... and Boa's just can't hack it. Now that's partly my fault. I'm an Emacs addict and it's chords are burnt into by muscle memory. When I want to save a file, I do C-x C-s without even thinking about it. Unfortunately, Boa's editor doesn't let me re-set shortcut keys, so when I do a C-a to move to the head of the line, I end up selecting all the text in the program and losing my place in the code. If it had offered code completion and other goodies, I still might have used it; but it doesn't, so I don't.
  4. Slightly buggy - This is still alpha code. Weird 'stuff' will happen, usually when you haven't saved your code in a while.
  5. Ugly - Did I mention that Boa is really really ugly?

Now as I mentioned in the beginning, I primarily use Boa to rapidly generate GUI code. What would take me days to do manually can usually be done in scant minutes using Boa. However, that also just about all I use Boa for 'cause I can't stand it's editor and looking at it makes my eyes bleed (which is a little surprising cause wxPython GUI's usually look quite reasonable).

If Boa isn't your cup of tea, you might want to check out Spe (Stani's Python Editor) which seems to offer similar functionality.

Well that concludes this particular series of essays. See you next time.

Same Bat Blog.

Same Bat Time.

Sunday, December 19, 2004

The rising drumbeat of war

It seems that Iran will be next, before Syria, which seemed like it was next in line after Iraq.

Bolting on Iran

Evildoers, here we come

Of course, Iraq proved that American military might isn't all it's made out to be. Here's how Iran will fight back

Saturday, December 11, 2004

I'm back!

I've been quite unwell over the last few days, but as you can see from my last few posts, I'm back!

I hope to finish off the RAD using Python series and write another article on pricing soon Inshallah. Still have to do a bit of research for that...

You'll be seeing me posting more often now, more's the pity. :-)

LBB Lesson - 1.5. The Network is the Entrepreneur cont...

In Lesson 1, I covered the usefulness of networking to the budding entrepreneur. Having a useful social network however, is not just important when you're starting out, but throughout your whole business career
Now, the obvious benefit is increased sales. The more people who know you, the better your chances that you'll come across potential customers (or friends of customers etc.). However, here's at least one more reason to spend some time getting to know a diverse bunch of people, especially if you're in the software business.

The people you know from other walks of life are the best sources of inspiration, and help, when developing a new product.

Here's an example from my own experiences...

A relative of mine works in the advertising industry. One day I was at his house and right out of the blue, he asked me to suggest some software that'll help him organise and maintain his vast collection of (mostly video) media files. He often has to refer to old campaigns and ads and it would save him a lot of time if he could pull up just the file he needed.

Of course, what he really wanted was software that would 'review' the clip and file it automatically, but that's not possible yet. The alternative is of course to correctly annotate the files and sort them sensibly. Even a properly arranged hierarchal collection of folders would be enough in most cases.

However, his remarks got me thinking about the problems of the advertising and marketing world in general and before long, I was convinced that it was possible to come out with a product that could target this cash rich segment :-P

Now, I have several near relatives involved in this field, so I've picked up quite a bit of advertising/marketing lore through dinner table osmosis. In addition, these relatives (wonderful people, I must say (in case they're reading this!)) could act as advisers and beta testers, giving me insights into the industry I couldn't get elsewhere.

It was perfect. I was both inspired to produce a product which I'm convinced will do very well and at the same time I find myself uniquely positioned to create it. All because of a chance request by someone I knew.

I'm sure you can come up with other such examples from your own life. And of course, the more people you know, the greater the chances that one of them will cough up a chance remark which could inspire you to heights of greatness; or at least increased profitability :-P

...And remember the golden rule of networking from last time: Be helpful to others and others will be helpful to you!

Venster

It's early days yet for Venster, but it seems worth keeping an eye out for.

I still much prefer my GUI toolkit to be portable across Operating Systems.

NSIS: Open Source installer

A fairly impressive list of features and free to boot.

Looks good. I just might try this out.

Sunday, December 05, 2004

Added an RSS/Atom feed using Feedburner

Just click on the little "XML" button under Subscribe and you're good to go!

Never miss an update again. :-)


LBB Lesson - 1. The Network is the Entrepreneur

Mao had his little Red Book, Ghaddafi has a little Green book, so I've decided to follow in these illustrious foot-steps and name my ever expanding compendium of experiences, my little Blue book. :-P

As I mentioned in my last post, I want to do this partly for my own benefit. I am quite absent-minded and I feel quite strongly the need to write down things I consider important enough to remember. A side benefit of this is of course, that other people can read up on what I've written and comment on it, benefiting us both.

So here's the most important lesson on entrepreneurship I've learnt as I've been battered by the vicissitudes of fortune...

Lesson 1 - The Network is the Entrepreneur

When you initially start up your business, it's going to take a very long time to show some returns. Your first clients are absolutely vital and are going to either make or break your business. And guess what? 9 times out of 10, your first clients are going to be people you know. They're either going to be friends, relatives, past employers or even employees. They could be your fellow co-workers from a previous job or club members. Anyone who's known you for a while and trusts you.

"...and trusts you". This really is the crux of the matter. The number one problem for the new entrepreneur is a lack of credibility. Sure, you may be offering the best service or product for the best price, but if no one trusts you to deliver, no one's going to buy. The fear of loss far out-weighs the greed for profit in most such cases. The only way you can overcome this credibility gap is if the buyer already knows you, trusts you or is beholden to you in some way.

Who are these people who trust you and like you already and who therefore are far more likely to give you a chance? They're the people you know before hand of course. And the more such people you know, the more likely it is that there are potential buyers to be found amongst them.

How do you build up such a network of interesting, friendly, useful people? By being interesting, friendly and useful of course! :-D

Give stuff away and don't expect anything in return. Not only is this recommended by just about every religion in existence, but it's the best way to network. Help people out, give them useful advice, go the extra mile; and people will respond in kind. Not all naturally, but enough.

If I remember correctly, there's a Hadith Qudsi that runs something like this (paraphrased from memory): "Do not be discouraged by people who treat you shabbily after you help them, because there will be others who will treat you far better than you deserve for helping them just a little". It all balances out :-)

Join clubs and organisations. Mingle. Hand out your visiting card at every opportunity. If you're shy, hide behind your PC and blog. :-P. Do something, anything but be among people and Inshallah, opportunities will present themselves.

A final word in parting. The people in your network are ready to give you a chance because they trust you.

Never betray that trust.

Friday, December 03, 2004

Lessons from my little blue book...

Hmm...

I'm thinking about doing a series on the lessons I've learnt over the past year or so while trying to get Achates off the ground. I want to do this partly for my own benefit; it's quite easy to forget stuff that seems blindingly obvious now.

Stay tuned, I'll probably post the first in the series within the next few days Inshallah.

Comments and suggestions welcome.


RAD with Python, wxPython and Boa constructor - Part 2

Here's the second essay in a three part series on using Python, wxPython and Boa Constructor to rapidly develop cross-platform desktop applications.

But first, some clarification!

  • The Mystery of the Disappearing Post - Part 1 of this essay pulled a Houdini and mysteriously disappeared a day after it was posted. No other post was affected. I've contacted Blogger.com support but I'm pretty sure that it's gone forever.
Since it seems we'll have to do with just part 2 and 3 of a three part piece, lets get on with it...

wxPython is just a thin wrapper around another library, wxWidgets. wxWidgets is an open source GUI framework written in C++ and is cross-platform from the ground up. It works reliably on various flavours of Unix and Windows and is generally usable on the Mac. Support for other platforms like PDA's etc. is under development.

Unlike good ol', butt-ugly Tk, wxWidgets gives you a native look and feel on every platform it runs on. User's can't tell the difference between something written in wxWidgets and another application written in MFC, for example. Both will look the same.

wxWidgets is fast, stable, well-documented and under active development. It's also free (in both senses of the word). This applies to its Python wrapper, wxPython as well.

Some of the major pluses of using wxWidgets/wxPython are:

  1. Free! - I'm a sucker for free stuff. Especially good quality free stuff. The nearest thing to wxWidgets is Qt, and that costs big $$$$'s.
  2. Full-Featured - wxPython is not just a GUI toolkit, it also gives you classes to handle network programming, threads and processes, image manipulation, Databases, Printing etc. This cuts down on the number of dependencies your application has.
  3. Native Look and Feel - I've already mentioned this once, but it's important enough to bear repeating. With wxPython, your apps look like everybody else's. Many cross-platform toolkits have their own look and feel (TK comes to mind) and this tends to confuse and put off users. Others emulate the native design and just end up looking cheap. With wxPython, no one can tell that you took the easy way out! ;-P
  4. Documentation - The documentation for wxWidgets is very complete. Unfortunately, wxPython uses the documentation of wxWidgets without any changes. This can be a bit irritating since wxWidgets is written in C++ and the docs reflect that. However, if you have even a very passing familiarity with C++ (and who doesn't?), it's enough to use the docs.
  5. Demo Code - I really like this bit. wxPython comes with a very large collection of well-organised demos. These are simple, relatively small scripts that demonstrate the various widgets available. A great resource to learn from and an even better one to steal code from! ;-)

These were the features that I particularly liked. Go here to see even more reasons for using this great toolkit!

Just about everything has it's flaws and wxPython is no exception:

  1. Steep Learning Curve - wxPython is very well documented... but there's very little to get you started. The few tutorials that exists just barely get you off the ground. The only real way to learn wxPython is to start up the demos, play around with them and spend a lot of time reading their code. It's not an app killer, but it's definitely something that'll put off quite a few beginners.
  2. Documentation - There's lots of docs for wxWidgets, but none absolutely for wxPython! wxPython is just a wrapper around wxWidgets, but it's irritating to have to mentally switch between thinking in Python and thinking in C++ every time you look up the docs.
  3. Large Distribution - If, like me, you're going to be distributing your application as an .EXE (after converting it using py2exe), the size of the accompanying libraries can be a hassle. A "hello world" app is going to go from a 10-15 byte .py script to a 2.5+ Megabyte distribution! If your users are going to be downloading your product, this might be a problem!
  4. Verbose - Damn but you've got to write a lot of code to get anything done!

Anyway, that's all for now. Next time Inshallah, I'll cover Boa Constructor, which helps alleviate the code verbosity problem.

You can also check out Pythoncard. It's a wrapper around wxPython (which is itself a wrapper around wxWidgets (which is itself a wrapper...!)) and it makes writing wxPython apps a breeze. It's still under development and I wouldn't suggest it for a commercial app just yet. But it's definitely something to keep an eye on.

Till next time then!