In the last few years there have been some very obscene salary packages for CEOs worldwide. Even for those CEOs and executives that do not perform, we still see bonuses in the hundreds of thousands or millions. A more frightening issue though is that of the CEO being paid in shares or options.
Why is it so dangerous for a CEO to be paid in shares? Because human greed will corrupt the long term best interest of the company in order inflate the share price in the short term. Most CEOs know they'll be out the door in two years so the sun only has to shine for 24 months.
The CEO becomes a slave to the share price. Through curious accounting and hiving off seemingly non-profitable business divisions, the share price is inflated while often these decisions have severe long term ramifications for the company.
I'm simple guy. If we get paid a dollar, we have a dollar. If we spend a dollar, it's gone. Not so in the wonderous world of depreciation, amotization and creative accounting. Those two transactions could be recorded as anywhere between -10 and +50 dollars. While the focus is on the mighty dollar many great things are lost. Employee motivation, corporate culture, customer service, the list goes on.
In one organisation we worked for, the IT department was out-sourced on a massive 10 year deal to a major services organisation. On the changeover day, no staff moved they were simply paid by a different company. Amazing. Exactly the same people doing exactly the same job. Each employee now must be at least 10% more productive to allow some profit for the services organisation. What a load of ..... The short term message was "we save X million a year by outsourcing" and the share price goes up. The reality is it costs MORE.
There was some research done recently on CEO salary packages. It said paying a CEO more than 800K per year HAD A NEGATIVE EFFECT ON THE COMPANY. It said the best value for money were CEOs on around 200K per year. If we consider the average income in Australia is around 38K, paying a CEO over a million dollars is outrageous. It says "our CEO does the work of over 26 employees".
Last night I installed the latest version of the Puakma Vortex IDE. Wow. There are still some corners to round off and bugs to squash but a real beta release should be here very soon. Thanks to Martin Novak for his great work in getting the IDE to where it is now.
Up to now I have been creating web apps using a mixture of tools and process which can best be described as clunky. Netbeans for java coding, Xcode for text/xml/js/css editing webdesign app for adjusting app properties and creating new design elements and a client-side java app for automatically uploading design changes into the web app. It's complicated but when you get used to it, it's OK. All that changes now. The Vortex IDE is the one stop shop for all web app development. Click around inside one application and as if by magic the design changes are sent by web services to the Tornado Server. My estimate is a time saving of around 20%. That's not insignificant. Our goal to be the fastest web development platform is very near.
So what corners need rounding off? From my first look these are the big ones:
- The initial connection dialog has a few bugs when you try to set up connections to multiple Tornado servers.
- When you first compile a java class it does not get uploaded, you have to compile twice the first time.
- The libraries/classes section of the app is confusing
easyfast way of opening the action code from the page design element
Martin is now on holidays travelling throughout the US on a monster road trip. When he gets back there'll be a feature freeze and a move to get the first real beta out. Take a test drive here http://www.puakma.net/ide
Side note: Puakma Tornado Server 3.17 was released today. This has a HUGE number of fixes and enhancements. Grab a copy now ;-)
Our biggest Australian customer is a mining company based in deepest darkest QLD. They run their head office and 4 mines on Puakma Tornado server. Each mine is at the end of a satellite link with some very average latency times. We have developed for them a mine management system that they run at each of their mine sites, and like any system as their business grows and changes they need changes and support.
From day 1 my design for Tornado server was to make all the important things accessable using the browser. Based on the "eat you own dogfood" principle we quickly found what was needed for us to manage our own servers remotely. This makes managing our customers environments easy too.
Consider today's application upgrade. We hook up to their test server and export the latest version of the application as a single .pmx file. Next we upload that .pmx file into the target system at one of the mine sites. This automatically decompresses the .pmx file and installs the application alongside the one to be upgraded. We then open up the /system/admin.pma application and tell the agenda task to refresh the application designs immediately. Upgrade complete. Each site uses an identical copy of the application so we repeat for each site.
The design refresh process in Puakma Tornado server works much like that in Lotus Domino. You designate an application either a template or as inheriting from a template (or neither). The server based code then ensure that the application is an exact duplicate of its template. This is very power for sites that run many applications of the same type. We run a number of copies of "Cannibal" (our content management system). When we need to add a feature or fix a bug, we change one template and all instances of Cannibal get the new feature the next time the RefreshDesign process runs (default is at 6am daily).
This post is more on "the long tail" post earlier.
Small business: We define this market segment as a company with less than 500 employees and no internal IT department.
Software development is expensive. A programmer needs a lot of skills, training and experience to write great software. This comes at a cost. Creating custom software for small business has to date been limited to shrink wrapped packages with a low sticker price that broadly appeal to the mass market. Unfortunately for small business their needs are just as varied and unique as those in a corporation, yet they do not have the budget to build IT systems to meet these needs. What do they do? Create a plethora of Excel spreadsheets and MS Access databases. It's not a 100% fit, but it's close enough.
It is almost impossible for ISVs to furnish this market with custom software. There's simply not enough of a margin in it.
Puakma is a well defined framework for creating complex web apps. The framework we have been showing to our developers is too complex for end users, they still have to learn HTML, Java, etc. What we are investigating now is a web application which works much like MS Access. The end user defines the fields they want to store (surname, firstname, jobstatus, etc) and with the click of a button we have a built and deployed web application! My estimate is that a proficient user could create a web application for their office in about 15 minutes.
...and then preview
It doesn't stop there. Suddenly the field is wide open for ISVs to use this tool to create complex custom applications by generating an application with an 80% fit, then customising it. Here the ISV will save perhaps a day's work building the 80% and only charge the small business for the customisations. We will be offering this tool to our partners when it is ready to go.
Suddenly supplying small businesses with custom software is a distinct reality.
We here at "Castle webWise" are in the process of moving our telecoms services about. This requires us dealing with two very large telecoms organisations. Anyone who has ever had any dealings with a very large organisation will have no doubt had the same painful experience.
What got me wondering was, most of the time the person on the other end of the phone was very helpful but at some point there was a breakdown with "I'll need to transfer you to disconnections" or "Your acount will be in credit, but you will have to call up and ask to get your money back". Sometimes I get slightly annoyed and take my frustrations out on the poor soul at the end of the phone (especially after repeating the same story to 5 people in a row!). My wife tells me that it is not fair of me to do this and that the organisation is to blame. Is it?
An organisation is made up of a group of people, from cleaner to CEO. Does an organisation exist without staff? If no individual is responsible for my poor customer experience, who is? No accountability.
Another annoyance is when you call up, the very first option is to the sales department. Disconnections? Well, good luck (we did get answered eventually, after 20 minutes of waiting). These companies make it very easy to become a customer, difficult to get service when you are one and hard to leave. This is NOT the type of company we are building.
I guess when you are a monopoly or oligopoly you don't have to worry...
OpenSource software is a unique phenomenon. I can't yet work out whether it exists just because the IT industry is so young or if it really is a viable option. The media of course paints things in what ever colour suits their needs for the day so it is really difficult to get a good understanfing of the true facts. I did read one thing today that was a little surprise: The number one reason for choosing open source software is to avoid vendor lock-in.
Vendor lock-in, as we all know, is what Microsoft specialize in. You buy one MS product and it doesn't play nicely with others, you replace the "other" product with the MS equivalent and it all works together much better. That domino effect flows through the business until all products are MS. Welcome to vendor lock-in.
From a vendor's perspective it's great that you can force your customers to use your products. More revenue. From a customer's perspective you loathe the fact that you are forced to use an inferior (or just plain different) product.
We often hear about how much we can save by using open source software, so this is why the results of the above survey were interesting. For a large corporation it is trivial whether they spend 2,000 dollars on Windows 2003 server or nothing on Linux. If your average geek costs an organisation 50 dollars an hour takes 20 hours to setup and configure the system you have a cost of 1,000 dollars already. Comparing open source products on their sticker price is pointless. You need to look at the whole picture. TCO (Total Cost of Ownership). To be fair, I would be surprised if a modern Linux distro and MS Windows were too much different in TCO, but with MS Windows you do get free vendor lock-in.
I am still undecided whether OpenSource will go the distance as a sustainable business model, mostly because there is no value in writing the software. Writing software is time consuming and expensive and vendors need to derrive an income from it in one way or another.
I like the analogy of a carpenter. Let's assume materials to build the house are free (as in beer). Why do carpenters on weeknights and weekends not build free houses for kicks and give them away to who ever wants one? Why is the IT industry the only industry that does this?
Seems like a strange title huh? I think it's sooooo important for a company in the technology industry to actually use the products they try to inflict on their customers. It's important because you get to see what things are like from the customers perspective - sometimes even before the customer sees the product or the havoc they have the potential to wreak. This means you can fix the problems your customers will have without them actually having the problem. Net result: Happy customer.
Here at WNC we eat our own dogfood regularly. This whole website runs on Puakma Tornado server. In fact whenever we have a new release or bugfix this is where it's deployed first before any customers see the code. Sure sometimes we have an ugly moment (like when we filled up 110GB with a temp file and the server ground to a halt) but it sure is much better for us to have a hundred ugly moments than for a customer to have one.
One thing is apparent, I believe the Eclipse platform was an excellent choice for IDE. The features and flexibility it provides are excellent. Shame about the API. We'll conquer it though!
One thing I have noticed about a lot of Java software is the over complication of a lot of it. There seems to be a tendency to be all things to all people. We're different we have a simple API that's about getting the job done.
I remember a long while back having some issues parsing multipart-mime uploads from the browser. The code I had written was simplistic and broke in some circumstances. Puzzled at what I should be doing I took a look at some code from the Apache Jakarta site. Holy cow! There were half a dozen or more classes all working together in an incredible complex and confusing manner to do what seemed like a simple job. Quickly that idea was discarded and I ended up rewriting my logic in two method calls. I guess that's how we can fit an entire application server into a 450Kb jar file ;-)
Eclipse seems to abstract abstractions til your eyes water, while building factories to make factories to make factories. And let's not forget the delegates and adaptors.
It really is no surprise that the average developer is completely firghtened by Java. These convoluted APIs are strangling the language. I suppose this is why J2EE strikes fear into the hearts of many a mortal. It's like giving a builder bricks to make a house. Sure you can get the job done and you have infinite flexibility, but what if you gave the same builder walls. doors, windows etc instead? The end result is a house built in a fraction of the time with predictable results. This is what Puakma is all about: doing the grunt work for the programmer.
Celebrate me! I started bloging too! [-; Yes, this is my first note ever... And it will be about school, and UML.
This ,and previous semester I took two classes about UML. UML looks like interesting technology. I think it still, but my expirience with all UML tools is horrible! All of them have mistakes of today's software - their UI is sooooo overcomplicated. I wasn't able to create easily functional model. I always spent too much time handling dialog with tons of controls controlling everything in the model. Hey duys! UML is not code! UML is supposed to be about abstract modelling software, and all companies made visual representants of code. Wrong way guys...
Now I'm writing paper to school about MDA. Looks quite good - you make model, and then generate code from it... I'm using OptimalJ as tool. UML here looks way better than in other tools, but that's not the point of this software. Do you remember what I wrote in last paragraph about what is overcomplication of software? So don't trust me. Now I see the top of iceberg! Way after UML is really not understood.
The first problem is that this tool allows you to generate only EJB's and other J2EE stuff. No simple java from UML! Nothing like that. I cannot use this tool if I'm not J2EE developer. Then I looked into EJB code, and I saw the super-mess. Brendon, calm down, Eclipse is not the worst! Guys, is there any reason why two simple classes in the model, and without any method, but with one relationship, have 14 java classes? Sun, there is something bad, nope?
The other disappoitment with OptimalJ was that in the half of stupid tutorial for total lamers I got error. Do you understand weird things like WEBServingAttribute sASalesorder in WEBModule (what is that?) - I don't. I think I write some interesting stuff to the paper. I'm starting to hate this tool too, and it look at the beginning so promising!
Today I have officially starting looking into development for the Eclipse platform (that is: me writing eclipse code). We already have an Eclipse based IDE (called Vortex) underway but my instinct tells me this is where the focus of our real "visible" innovation will occur. Up to now we have built something no-one can actually see which really is quite terrible for demos! We can explain and espouse the greatness of this thing we call Puakma Tornado Server until we're blue in the face, but nothing works as well as a GUI based example. Understanding the capabilities of the Eclipse platform is integral to shaping the future of our products.
As my "training application" I am playing with an administration application. This will be very simple to begin with allowing the monitoring of one or more servers, viewing the logs and executing console commands.
All communications between the eclipse client and the server is SOAP over HTTP. This means the admins and developers will be able to monitor and interact with servers of standard HTTP ports and through firewalls. Small ISVs will be able to maintain their customer's servers and applications from anywhere. No more opening obscure ports on the firewall and needing console access to the server. If you need some security, just wrap it in SSL. Too easy!
We will still be supporting the browser-based admin and webdesign applications for those times where you don't have the Vortex IDE handy.
Summary: The learning curve for plugin development is steep. My head hurts.
Today we shaved off a chunk of complexity that has been annoying me for a while. That was the library implementation in Tornado server. With the old classloader, each time an action was run it would load only the libraries it required for that action based on the attributes entered by the programmer. For example, an action called "OpenLogEntry" might have an attribute of LoadLibrary="Logging". This means the server would retrieve the code for OpenLogEntry then the code from the libraries section for a design element called "Logging". We did it this way because the classloader was instantiated every time an action was run, thus loading the libraries on every execution. The problem was if you had a 2MB jar file used by one action, then there was a big performance hit every time it was loaded and discarded. And you had programmer hell where this uses that, uses this, uses that, ...
Enter the new SharedActionClassLoader.
We put this in last week to address some class casting issues and it occurred to me this morning (as I lay in bed listening to the radio) that we don't actually need this cumbersome nightmare anymore. Now that the classloader is instantiated once for an application (.pma), we can load ALL the libraries ONCE when we first create the SharedActionClassLoader. Sure there is still an initial perofrmance penalty, but really it doesn't matter as every subsequent request is superfast.
With the update of the loader we gave the /system/webdesign.pma application a little tweak to only show the parameters options on the design element types they're needed. Pages and Scheduled Actions.
The end result is a much more elegant design, improved performance and much less confusing experience for the developer. I love it when a plan comes together!
UPDATE: Puakma Administration Quicktime movie (Note the pimpzilla theme)
After many months of frantic work I finally have a small bubble of breathing space appear. These bubbles are always important so that you can look down on what you are doing and evaluate things - hopefully in an objective manner - and give the business some direction.
I spent the morning reading Eric Sink's summary of "The 22 immutable laws of marketing". What is great about Eric's site is that it looks at everything from the perspective of the ISV. Me. I have read a ton of marketing theory in the past but find difficulty in applying it because:
- We don't have a large marketing budget
- We develop and sell software, not cornflakes or cars
The other problem of course is these books make out like it's a science. It's not. I have long suspected this but thought in my naivete (had to use a dictionary for that word) that I simply did not understand the subject. I completely recommend downloading and printing (yeah, go ahead and kill some trees) Eric's PDF.
The thing this highlighted is that I definitely have a clear vision, but communicating that in a succinct way is a problem. In my head I can see exactly the places where Tornado Server would be a perfect fit for so many reasons. Unfortunately this always comes across as "we can do anything". We can, but the point is from a marketing perspective so can all our competitors. As I have learned "Marketing is not a battle of products, it's a battle of perceptions".
The message is: pick a category (or define a new one as Lotus did with "groupware") and be first in it. Unfortunately it was some 10 years prior to defining the category that work started. Focus, vision - we'll get there. I know the platform rocks.
I'm not usually one to weigh in on the browser holy war, but today I noticed the strangest thing.
We had just replaced a core component of the server for reading the socket connection from the browser. We ran a number of basic tests to ensure the new component worked correctly, then as a last test I tried to upload a large (1.6GB) movie file using a file upload control.
In IE, performance was apalling. On our 100Mbit network we were getting an average throughput of about 35Kb/sec. Naturally I assumed the new code had some performance limitiations so I started to profile it. The profiling showed no bottlenecks. Strange.
Next I fired up Firefox (with Pimpzilla theme naturally) and tried the same test. Amazing. 135Kb/sec! Same file, same everything. Problem solved (and an hour wasted).
Ever wondered why companies selling to the Dilbert sector (aka Big Business) charge so much for their seemingly simple products? Recently we had the misfortune to find out.
A while ago we quoted on a system replacement for a large company. The task was quite straight-forward and the technology not dazzling. We had done a lot of work for this company in the past so were confident we could deliver on the brief.
Since the last time we had worked for this organisation there had been a "shuffling of the deck chairs" (change in staff) and unbeknown to us the usual modus operandi had undergone some changes. Now the expectation of what flavour would be delivered and HOW it would be delivered was completely different. We had left no room in the quote for this change. Big mistake. Over a few months a number of meetings were called in their offices which were a direct cost of over 200 dollars each time, when factoring in parking (Sydney parking, more than 40 dollars for a couple of hours), lost time through travel and the meetings themselves (I could be earning an hourly rate elsewhere). As you can see, it takes less than 5 meetings and we have burnt through 1,000 dollars! We all known Dilbert's LOVE their meetings.
The short story is we'll take a complete bath on this job. We like to think here, our word is our bond. If we say something will be delivered we'll deliver it. This forms the basis of a trust relationship with the customer. We don't mind going that extra mile to deliver a product superior to that which was quoted. Sometimes we'll make less money than one of those "grab the cash and run" consulting outfits, but at the end of the day we are delivering a product that meets our customer's end needs, even if that was not what they asked for initially.
RULE: If you are selling to Dilbert do NOT negotiate on price. You will be making up the shortfall from your own pocket.