BambooInvoice forums
September 18th, 2007
I just took some time to put up some forums dedicated to BambooInvoice support, feature requests and general chat. Feel free to drop by and have your say!
September 18th, 2007
I just took some time to put up some forums dedicated to BambooInvoice support, feature requests and general chat. Feel free to drop by and have your say!
September 14th, 2007
There’s a new release of BambooInvoice available. To update, do a full backup, then replace all files except your config directory, and then run the update script.
I really wanted to get 2 new features in there before I released this version, but as the changes started mounting, and my time started dwindling, I figured I should just get this out there. Most notable is the reduced code (mostly due to the new CodeIgniter Session Library) and the final-I-swear-its-squashed-now-and-will-never-return fix of your company logo not appearing on the PDFs.
Under the hood, there was substantial restructuring of the database (do a backup both before and after you update), some speed enhancements, some file restructuring, and most importantly, I’ve laid some foundation for the some new features that I think will be a big hit.
The 2 new features planned for the next release:
1) Itemized invoices (you know… 1 “item” at “unit cost” type thing); and
2) Sexier PDF invoices. Here’s a preview so far.
I’m not totally sold on it… but anything beats the boring invoice I’ve been using so far. I’ve been also thinking about building in some type of invoice template system, so that people could submit their designs, and they could be offered as add ons, or installation time choices perhaps… not sure about that one yet.
With respects to the itemized invoices, this database changes this time around include a new field ("itemized") for this, and I’ll probably just store things in a serialized array. I’ve been playing with the javascript I want to use to add in the extra items, and this will be really the first feature that Bamboo will have that will only be accessible to javascript-enabled users. I don’t feel this conflicts with accessibility though, as non-js users will still be able to use the traditional form. It will simply be an enhanced experience for js users.
I’ve also been asked if I’d be willing to set up support forums for Bamboo. I’d be an idiot to burn the goodwill of people who want to help (public thanks go to Marc Arbour for his role in this regard, and for his evangelising of BambooInvoice. Thanks Marc… I appreciate it).
To that end, one of the things I’ve been thinking about lately is the installation and update procedures. BambooInvoice is at the point now where it is not longer only attracting CodeIgniter/ExpressionEngine/PHP nerds; and as people with less technical experience start using it I want the experience to be as positive as possible for them. I’d welcome (with open arms) and suggestions for improvements in this area.
August 19th, 2007
Some interesting items in the past week.
Ed Finkler, the man responsible for the great CodeIgniter podcast PHP Abstract, is at it again. This time, he’s down in Atlanta offering Intro to CodeIgniter for PHP works ‘07. Go Ed! If you’re in Atlanta, find that man and buy him a beer.
I’ve also seen a rise of interest in BambooInvoice recently. Eric Davis wrote Simple and easy to use invoices - Bamboo Invoice and Customizing BambooInvoice. Great work thanks. My favourite quote?
The thing I like most about it is that it provides just what I need to invoice my customers; it does not try to provide accounting, supply chain management, or any other “total business solution”.
And that my friends, is why Bamboo is around. Thanks Eric. Nice writeup. If anyone else has written about Bamboo, please do let me know, I’m always interested in reading those posts.
In ExpressionEngine land, there are a few neat things happening also. Smashing Magazine, in a writable of the RubyOnRails content management system Mephisto, wrote that ExpressionEngine is the first-class engine for professionals; if you’d like to achieve the highest level of flexibility and have the full control over the outer appearance and structure of your weblogs, EE is the first option you should probably consider
.
Also, Les Camacho (our fearless VP, and all around cool guy) started a weekly blog entry called “last week on the forums” where he highlights interesting and notable posts from the ExpressionEngine forums. One of the ones that really stuck out at me was a plugin by silenz called trunchtml. Nice work silenz.
July 26th, 2007
Well, considerable bug squashing effort has gone in here, and things seem to be running smoothly! Bamboo is now available in English, French, German, Spanish and Dutch. As well, the code is leaner, cleaner and ready to keep growing.
This release is mostly a maintenance release. Next version will have new features, including the commonly asked for line-based items (price, quantity, description, etc).
Don’t forget to run the update script if you’re… um… upgrading ;)
July 16th, 2007
I’m very proud to say that BambooInvoice 0.8.0 is completed and live. The changelog covers it off pretty well. I’d like to very, very gratefully acknowledge Marc Arbour, Micha Schlieper, and Alex Williams. Each helped with energy, ideas, and translation efforts.
The big thing about this version of Bamboo, aside from squashing every known bug, was the inclusion of Internationalization. It once again highlighted the flexibility of a good PHP framework. Now that the work has been done, dropping in new languages is a snap. Currently Bamboo runs in English, French and German. Additional languages are always welcome.
Also of note is the new reports feature I wrote about earlier. It seems to be giving me some grief in Safari. If you’re a javascript guru familiar with Safari’s parser, I’d love if you could take a quick look and see if you can’t nail that down. And don’t even get me started about Internet Explorer… for what its worth, Bamboo does run in IE flawlessly.
0.8.1 will focus on any bug fixes that are found on release (there’s bound to be 1 or 2), and then 0.8.2 will focus on code cleanup. Bamboo was written before CodeIgniter even had models, and there are lots of inconsistencies, loose code and other items I want to address. 0.8.3 will start adding in new features again, as we work towards a completed 1.0 release.
One thing on my radar is to drop DOMPDF as the PDF library. I’ve been happy-ish with it, but development seems to have stagnated, and it seems to be a bit of a memory pig, often causing the “Allowed memory size of xxxxxxx bytes exhausted” error (which I’ve added a specific note about in the installation guide). The Zend PDF library seems nice. Jonathan Snook had an interesting article on implementing Zend components into CakePHP. He talks about a vendor() helper, but it looks to me like CodeIgniter could do the same thing with relative ease.
include(APPPATH . '/zend/pdf.php');
In fact, the prolific Dan Freak has already written about Using Zend Framework components in CodeIgniter, so its not like I have any excuses here.
BambooInvoice, “the little project that could”, has taken on a life of its own. If you use it please drop me a line or leave a comment here. I’d love to hear how you think it helps you, or what it would need to be able to do that.
July 16th, 2007
With BambooInvoice 0.8 about to be released, and the big new feature being internationalization, this has brought to light a few issues with character sets, particularly as they apply to the database. It seems that MySQL, in its default configuration, and especially with popular installers such as XAMPP, MAMP and WinLamp, usually sets the default character set as “latin-1”. For English, this is a complete non-issue, and things work as they should, however if you try to set other languages, characters such as ö, ä, and ï (as well as dozens of others) tend to load to the screen as garbage. This is often compounded by the fact that the webpage itself might be in a character set such as UTF-8, which is very “international friendly”, and so things appear to work on the “front end” but as soon as data goes into a database and back out… its borked.
The solution of course is to simply use UTF-8 as the character set for your database. The problem though, is that many of us have legacy data in MySQL, and as mentioned above, the data started its life as latin-1. This is particularly true of BambooInvoice, as the installer I set up did not specificy any character set, so nearly everyone’s databases (my own included) is in latin-1.
I’ve found 2 good ways of converting an existing database from latin-1 to UTF-8. Here’s how you can convert your data…
July 10th, 2007
Internationalizing BambooInvoice? Yup.
Again? Yup!
Seems I’ve had quite a love/hate relationship with internationalizing my application, but today I’m proud to say, that despite rumours to the contrary, an internationalized, and localized BambooInvoice is going to happen. Actually, it’s happening as you read this (here’s my local installation)…
BambooInvoice 0.8.0 will be added to the online demo shortly, and the code released a matter of days after that.
I’m finished implementing new features, and what is left is the major job of finishing off the language variables for internationalization (I’m about 40% through right now). I’m proud of the improvements that Bamboo has seen over the last few days. As a small sampling, there has been a significant overhaul to the way languages are handled, and this will actually have a trickle down directly into the CodeIgniter codebase (the ability to autoload language files). The symbol of curreny ($ vs £ vs ¥) is now customizable. Long standing bugs and half-implemented features (I’m looking at you password-reset) are fixed up or added in.
A full new update path is now built in. Inspired by how smoothly ExpressionEngine handles updates, I’ve decided to follow a similar path. In essence, each Bamboo version is now identified via a version number, and when a new release is out, just hit the “update” page, and Bamboo will intelligently and silently make changes to the underlying database structure.
This is on top of the reports I mentioned in an earlier post of course. I’ve implemented an SVG/Canvas charting library that dynamically draws your yearly invoice totals and taxes for you. I absolutely love the end result, but it took a hundred thousand hours to get working right in IE. Does anyone still use IE? Anyhow, check out the new reports feature. Yeah, May was a good month for me ;)
It was fun to dig into the guts of prototype and javascript again. To anyone who still thinks of javascript as a toy language...think again. It is often the right tool for the job - and with libraries like prototype and scriptaculous to build on, it is very much a mature tool. Of course its buggy, but all environments are. Have you tried testing for readable files on various server setups lately? At EllisLab we have… and it’s a monumental pain; and PHP is largely considered among the most stable environments available.
There’s also been significant compatibility improvements, and an installation routine that checks for most requirements before the installation takes place. Also, more of the usual code cleanup - getting rid of un-needed files, and a few cosmetic changes here and there.
Also of note, CodeIgniter itself has also undergone some pretty significant changes recently in the subversion repository, and should see at least a few more in the next few days and Derek and I go on a bug hunt.
July 06th, 2007
In case you’re wondering, I haven’t forsaken BambooInvoice, just had lots of other neat stuff “on my plate”. Anyhow, my taxes are due for the quarter, and I needed to figure out how GST I’ve collected, so that I know how much blood the government wants to squeeze from me. Seems as good a time as any to add that functionality into Bamboo. So under the reports section I’ve added a new quarterly report tool.

The 4 quarters are hard-coded dates (that might be configurable in a future version), but notice the “Custom Date Reports” option? Yeah, I think that’s ugly and unelegant also. So I’ve been trying to think of a way to allow the end user to gracefully select their date range besides a clunky text input. Pop up calendars seem like an obvious candidate, but they seem so obtrusive for what I want.
The measure map slider seemed absolutely perfect, but after I implemented it I realized how limited it is in an application like Bamboo. Firstly, how do I set the bar? Only for this year? What if I want to run a query starting from 3 years ago? Secondly, it’s hard-coded at 120 data points. Who knew? And currently it is powered by an XML file. It wouldn’t be too hard to convert that to a database call, (heck, they even provide the .fla source files), but now I’m trying to change the tool fundamentally, and it isn’t even really appropriate to start with. Too bad, since the guys at Adaptive Path did some great work on that one.
So then I set about to find a Scriptaculous equivalent… but I’ve not yet turned up anything notable. There are about a billion examples of using javascript sliders, but nothing that I found that worked nicely for dates. I’m debating building my own, but that seems like an awful lot of work, and you know, good programmers are lazy and dumb.
So my question is - what is the most elegant way to build that interface? If you have any suggestions or pointers or links, please leave them in the comments!
April 15th, 2007
Tonight I quietly released BambooInvoice 0.76. On the front, it isn’t much to get excited about, but it does feature an upgrade to CodeIgniter 1.5.3. What is noteworthy about that is that 1.5.3 isn’t out yet - readers of this blog and Bamboo users are front of the line on this one ;)
It is mostly a series of bug squashes, but I did enhance the reporting functionality (pretty minor).
What will be neat if I can find the time to build it is the graphing and charting functions that I’ve started. There are a couple of new model functions in invoices_model to allow for those now.
If you are a Bamboo user, then take it for a test drive and let me know what you think!
April 07th, 2007
BambooInvoice has been released for almost a year now, and I have to say that its picked up much more momentum then I ever thought it would. The lowly “proof of concept” application has grown so much. I have no idea how many people use Bamboo to keep their invoicing straight, but I do know that those who choose to use it are a very diverse group. We seem to run the gamut from hard-core developer to freelance writers. I’ve been contacted by artists and programmers, designers and architects (well ok, only 1 architect). There are “Bamboo-ers” in at least 7 countries, and at least 5 languages. And if my “request for translators” post showed me anything, its that there is interest there for many more.
But now I’m up against a hard decision. I desperately want to enable users to use Bamboo in their native languages - and not force English on them. But I’ve learned a huge lesson here about software development. Namely, internationalizing cannot be an afterthought as it’s just too difficult.