Filed under:
Base
Releases

Base 1.3 has just been released. You can download it from it’s product page or view the release notes.

The main focus of this release is table schema editing. As SQLite does not natively have the ability to alter table schemas, it is a multi-step process (create new table, copy old data across, delete the old table) and I’m very pleased to finally have such an important feature in the app.

Looking to the future, most feature requests centre around improving the import/export abilities of the app and improving BLOB viewing and editing. I’d be very interested to hear what current and potential users think are the most needed improvements. If you’ve got something to add, please leave a comment or email.

Filed under:
Base
Menial
PayPal

Update 2009-05-31 PayPal have now restored access to payment processing. All should hopefully be normal now.


As anyone who has tried to buy Base since Friday (28 May 2009) has noticed, I'm currently unable to accept payments and hence process any sales. This is because PayPal has noticed that I had not fully verified my details with their system to prove I'm not some sort of international fraudster. Which I'm not.

It’s good that they do check people out. Their system as a whole would collapse without a decent level of scrutiny. However in my case, I don’t feel they’ve applied much common sense to the matter. Example:

  1. I need to prove I own the bank account linked to my PayPal account. To do this they send two small amounts of money to you. You verify the amounts from your statement, they are happy.

  2. Something in their system hates my account number and refuses to send the mini-transactions. I cannot verify because they cannot send. Impasse.

  3. I navigate the treacherous pathways of the godawful telephone tree helpline. A very helpful guy says “no problem, just upload a scan of some photo ID and a recent account statement. It’ll take 24-48 hours to process”. I do this.

  4. Their system accepts the scans after 24 hours and sends out an automated email saying I still have to verify my bank account. Grrrrr. Back to the telephone system. The helpline person tells me that the scans were not an alternative to verifying my account, but an addition. She promises to escalate this to the account verification people but refuses to put me through to them on the grounds that “they have no phones”. Whisky Tango Foxtrot?

Anyway. That leaves us here. It’s the weekend, and I’m waiting for the paperwork for a new bank account and for the people at PayPal to get in touch and am still unable to process payments. I am sorry to anyone who wants to buy Base, but if you fill in the form on the product page I’ll email you (one message, no more ever) when this saga is over with a link to buy it at 80% normal price.

Filed under:
Base

Update 2009-05-31 Thank you to everyone who has contacted me. I’ve got enough testers for now, but will post again next time more are needed.


Base 1.3 is nearing completion and is in need of testing. I'm looking for half a dozen people (or thereabouts) to try it out and give some feedback.

This release is focused on editing table schemas, so ideally testers should be willing to:

  1. Try some real-world table altering tasks

  2. Try to make the table editor break. Feed it malformed inputs. Make it stutter and fail non-gracefully.

  3. Explain in a sensible way how it broke and/or didn’t behave as you would expect or hope.

If you would like to be involved, get in touch via the contact form on this site with your name and a few details about what you use Base for (eg. web developer, mac coder or whatever) and I’ll get back to you within a day or so with more details.

Filed under:
Jezz
Releases

I’m very happy to announce that our first foray into iPhone development has been released. Jezz is a game for the iPhone and iPod Touch, closely based on the old game of Jezzball. To complete each level, you must claim 70% of the playing field by building walls. If a wall in progress is hit by a ball, the wall is destroyed and you lose a life. Each level becomes more difficult through adding more and destructive balls.

The wonderful graphics and smooth animations in this game were created by Kevin Andersson of IconDesign.

You can read more about Jezz at it’s product page, or purchase it from the iTunes App Store.

Filed under:
Base

Well, Base 1.2 has been out for just over a week now, so I figured it’s time for an update. 

So far, the app seems to have had a pretty good reception. Thank you to everyone who has taken the time to contact me with feedback (especially those who have sent detailed bug reports). For the most part, complaints and requests have centered around one area: the editing of existing tables. 

The plan was to not add in table editing for the first couple of releases, simply because SQLite does not implement full  ALTER TABLE support (see ALTER TABLE reference and SQLite omitted features). Instead, I wanted to get the app to a point where it was supporting what most people would call the ‘standard’ SQLite features, before going to work around it’s limitations.

Now that Base has reached that point, I will be working on getting the editing features into the application, and will post again when these features begin to take shape.

Filed under:
Base

Now that the Christmas / new year festivities are out of the way it’s time for an update on how Base development is coming along. The next release - version 1.2 - will have some useful changes being made, though there isn’t a predicted release date yet. The three things I’d like to pick up on are:

  • Saving of column widths in the data browser
  • Support for SQL views and triggers
  • Syntax highlighting
 

In the data browser, just saving column widths would be useful, but not terribly so. To use a not-too-contrived example, two columns named ’last_updated’ would have the same width even if the data they stored was different (eg, a Unix timestamp vs. a full ISO date - 123083964 vs. 2009-01-01 19:54:01 +0000). Instead column widths will be stored on a per-table basis, so that our two columns named ’last_updated’ can have different widths in different tables.

Support for views and triggers doesn’t really need explaining, so heres a gratuitous screenshot: Base view & trigger support

Syntax highlighting is also pretty much self explanatory. The colours for various elements of SQL (keywords, functions, comments etc) can all be set in the app preferences. Again here’s a screenshot: Base Syntax Highlighting

 

As a side note, I may be going away for a few days during this week, so please don’t panic if you don’t get a response to any emails immediately.

Filed under:
Menial

There have been some pretty heavy changes to this site in the last couple of days. Hopefully they shouldn’t actually be very visible. The biggest change has been installing Wordpress to power this blog.

The original blog was self-made using Ruby on Rails and was a very simple affair that started accumulating huge amounts of comment spam and was lacking some features I wanted (namely file uploading and easy archive browsing). Integrating Wordpress (a php-based system) with my Rails site was not actually that difficult. For those who are considering doing this, you will just need a mod_rewrite rule to redirect /blog/ to the Wordpress index.php file. The tricky part was realising that Dreamhost disable mod_rewrite when you use Passenger to power Rails as poorly crafted rewrite rules can break Passenger. However they are very helpful and will enable it for you after explaining what not to do.

Now that the blog also has file uploads, I have added some of my old php code snippets to the site. They are a bit old but probably still work. Just be sure to test and adapt them first! I’d also love to hear back from anyone who does find them useful.

Finally, thanks to everyone who has sent feedback regarding Base. It’s been very useful for prioritising features and finding a couple of new bugs and it’s been great to have such a positive reception.

Filed under:
Base
Releases

I’m pleased to announce that the first public application from Menial has been released. Base is an SQLite 3 database reader/editor for Mac OS X and more details can be found at it’s product page. 17th November, 2008:

Unfortunately there was a problem that slipped through testing before release. When a license file was opened, the app would not register that license. To fix this, just re-download the app from this page and double-click your license file again.

Filed under:
Code

Got a couple of pieces of AppleScript for starting and stopping Apache and MySQL which are too small to be worth posting as downloads. I don’t use these any more, but they were handy for custom installs of Apache/MySQL.

Starting: do shell script “/sw/sbin/apachectl start” password “MY_PASSWORD” with administrator privileges do shell script “/usr/local/mysql/bin/mysqld_safe > /dev/null 2>&1 &” password “MY_PASSWORD” with administrator privileges

Stopping: do shell script “/sw/sbin/apachectl stop” password “MY_PASSWORD” with administrator privileges do shell script “/usr/local/mysql/bin/mysqladmin -u root -pROOT_MYSQL_PASSWORD shutdown” password “MY_PASSWORD” with administrator privileges

You will obviously need to change MY_PASSWORD to your admin password. You need to change ROOT_MYSQL_PASSWORD to your root MySQL password, or another user name/password combo with shutdown privileges. Note: there should not be a space between -p and ROOT_MYSQL_PASSWORD.

Also, the path to apache/mysql might need changing. You can find out where they are by running which apachectl and which mysqld_safe in the terminal.

Just paste the code into Script Editor, and save how/wherever you like. I save mine as run-only executables which show up nicely in Quicksilver.

Can’t remember where this code originally came from, but it’s pretty handy, so thanks whoever pointed me at this.

Filed under:
Code
CakePHP

Important! This is old code. I’ve not used it for a long time. It might still be useful. Be careful.

 

This snippet is a CakePHP component which can be used to force a users browser to download a specified file instead of attempting to display it. It will happily deal with any file your scripts have read access to. When provided with an absolute file location and filename for the downloaded file, it will attempt to look up an appropriate mime-type for the file, output some HTTP headers followed by the file data itself.

You are responsible for exiting after calling this method. Not exiting will result in CakePHP trying to render a page after sending the file data, causing (possibly invisible) errors. I have also removed error checking code responsible for checking the file path and download name as it is very app-specific. You will probably want to add your own.

Note: I have not tested this on a Windows-based machine. I don’t see why it shouldn’t work, but you have been told.

 

Usage

var $components = array(‘ForceDownload’) … $this->ForceDownload->forceDownload(’/path/to/file.php’, ‘MyPHPFile.php’); exit();

 

Download force_download.zip