Building sources with BuildBot

Unless your in the desert under a rock (where rain is clearly needed), you will have heard of Drizzle – A Lightweight SQL Database for Cloud and Web. My company 42SQL is sponsoring the BuildBot for the Drizzle project. BuildBot is a system to automate the compile/test cycle required by most software projects to validate code changes.

Check out Installing Buildbot for what’s necessary to get a working installation. This is necessary for the Master and Slaves.

Configuration was a little more complicated then expected, due to lack of accurate documentation, and reading old docs at sourceforge. Be sure now to read here.

This is a step by step approach I used to successfully configure Drizzle Build Bot (Master and Slave).

1. Create OS User.

su -
useradd buildbot
su - buildbot

2. Create Master Installation

buildbot create-master /home/buildbot/master
cd /home/buildbot/master
cp master.cfg.sample master.cfg
vi master.cfg

Here is a diff of what simple changes I made to the master.cfg.sample work in my environment.

$ diff master.cfg.sample master.cfg
23c23
< c['slaves'] = [BuildSlave("bot1name", "bot1passwd")]
---
> c['slaves'] = [BuildSlave("centos5_64", "paSSw0rd")]
95c95
< cvsroot = ":pserver:[email protected]:/cvsroot/buildbot"
---
> cvsroot = ":pserver:[email protected]:/cvsroot/buildbot"
105c105
< f1.addStep(Trial(testpath="."))
---
> #f1.addStep(Trial(testpath="."))
108c108
< 'slavename': "bot1name",
---
>       'slavename': "centos5_64",
148c148
< #c['debugPassword'] = "debugpassword"
---
> c['debugPassword'] = "paSSw0rd"
156c156
< #                                       "admin", "password")
---
> #                                       "admin", "paSSw0rd")
166,167c166,167
< c['projectName'] = "Buildbot"
< c['projectURL'] = "http://buildbot.sourceforge.net/"
---
> c['projectName'] = "Drizzle Buildbot"
> c['projectURL'] = "https://launchpad.net/drizzle/"

Initially I’m just going to test with a CVS checkout of buildbot to confirm operations.
NOTE: The example provided pserver URL in master.cfg.sample is invalid.

3. Start Master

buildbot start /home/buildbot/master > start.log
tail -f /home/buildbot/master/twistd.log

4. Confirm Master

lynx http://drizzlebuild.42sql.com:8010

5. Create Slave

buildbot create-slave /home/buildbot/slave drizzlebuild.42sql.com:9989 centos5_64 PaSSw0rd

I got stuck here based on docs, be sure the port number is the client port.

6. Configure Slave

cd /home/buildbot/slave/info
echo "Ronald Bradford < ronald .bradford @ google mail >" > admin
echo "Drizzle CentOS 5 64bit "`uname -a` > host
cat admin host

7. Start Slave

cd /home/buildbot/slave
buildbot start /home/buildbot/slave > start.log
tail -f /home/buildbot/slave/twistd.log

8. Confirm Slave

If everything is working by the time you look at the twistd.log you will see work happening.
You can also via the web interface and see in Lasted Builds the first build is working.

9. Stop Services

To stop the BuildBot master and slave.

buildbot stop /home/buildbot/master
buildbot stop /home/buildbot/slave

10. Change Master Configuration

Should you make any changes to master.cfg the following command will re-read the configuration file.

buildbot sighup /home/buildbot/master

11. Startup
The following was added to cron

@reboot buildbot start /home/buildbot/master
@reboot buildbot start /home/buildbot/slave

The @reboot is new sytax for me, so I can’t yet confirm it’s operation.

If you want to be a build slave for Drizzle, check out Instructions here

Your data and the cloud

I will be speaking on July 29th in New York at an Entrepreneurs Forum on A Free Panel on Cloud Computing. With a number of experts including Hank Williams of KloudShare, Mike Nolet of AppNexus, and Hans Zaunere of New York PHP fame is should be a great event.

The focus of my presentation will be on “Extending existing applications to leverage the cloud” where I will be discussing both the advantages of the cloud, and the complexities and issues that you will encounter such as data management, data consistency, loss of control, security and latency for example.

Using traditional MySQL based applications I’ll be providing an approach that can lead to your application gaining greater power of cloud computing.


About the Author

Ronald Bradford provides Consulting and Advisory Services in Data Architecture, Performance and Scalability for MySQL Solutions. An IT industry professional for two decades with extensive database experience in MySQL, Oracle and Ingres his expertise covers data architecture, software development, migration, performance analysis and production system implementations. His knowledge from 10 years of consulting across many industry sectors, technologies and countries has provided unique insight into being able to provide solutions to problems. For more information Contact Ronald.

Sun Stock Prices

Sun Microsystem’s (NASDAQ:JAVA) hit a low this week of $8.71. There was a stronger rally and a close at $9.16 today. The financial times reports Sun Micro chief sees rays of hope, and Bloomberg Sun Rises After Fourth-Quarter Profit Tops Estimates.

I cashed out in March at $16.32, so that’s like a 50% drop in share price. I was lucky having been at MySQL long enough to have options to vest. Newer employees are not that lucky. I certainly hope MySQL Sun Employees get the Q4 weighted bonuses. (A structure I didn’t believe compensated with the old bonus structure).

I have been following more closely since Matt Asay’s comments in Who is buying Sun?



Image courtesy of Google Financial’s.

Getting Started with Simple DB

With my continued investigation of evaluating alternative data management with cloud computing options, I’m now evaluating Amazon Simple DB. Still in restricted beta, it helps to have a friend on the inside.

Working through the Getting Started Guide (API Version 2007-11-07) was ok, annoying in parts. Here are some issues I found. I was working with Java as the programming language.

  • The Docs enable you to view the language syntax in Java, C#, Perl, PHP, VB.NET, ScratchPad. You can also restrict the view to a specific language. A rather cool feature. One observation is there is no Python, which is rather ironic as my first investigation was Google App Engine (GAE), and the only language here is Python. Something I had to learn first.
  • Preparing the Samples asks you download the Amazon SimpleDB Sample code, but this is not actually a link to the sample code but an index to Community Code. I used Java Library for Amazon SimpleDB which wasn’t even on the first page of results.
  • The supplied docs for specifying the Classpath was rather wrong, helps to simply find all .jar files and included these. Mine looks like:
    • #!/bin/sh
      #  http://docs.amazonwebservices.com/AmazonSimpleDB/2007-11-07/GettingStartedGuide/?ref=get-started
      
      SDB_HOME="/put/directory/to/unzip/here"
      export CLASSPATH=$CLASSPATH:
      $SDB_HOME/src/com/amazonaws/sdb/samples/
      $SDB_HOME/lib/amazon-simpledb-2007-11-07-java-library.jar:
      $SDB_HOME/third-party/log4j-1.2.14/log4j-1.2.14.jar:
      $SDB_HOME/third-party/commons-codec-1.3/commons-codec-1.3.jar:
      $SDB_HOME/third-party/commons-logging-1.1/commons-logging-1.1.jar:
      $SDB_HOME/third-party/jaxb-ri-2.1/jaxb-xjc.jar:
      $SDB_HOME/third-party/jaxb-ri-2.1/activation.jar:
      $SDB_HOME/third-party/jaxb-ri-2.1/jaxb-impl.jar:
      $SDB_HOME/third-party/jaxb-ri-2.1/jaxb-api.jar:
      $SDB_HOME/third-party/jaxb-ri-2.1/jsr173_1.0_api.jar:
      $SDB_HOME/third-party/commons-httpclient-3.0.1/commons-httpclient-3.0.1.jar
      
  • All examples in the docs then refer to making changes such as “invokeCreateDomain(service, action); line and add the following lines after // @TODO: set action parameters here:”, problem is all the samples don’t have the action variable, but rather a variable called request. The comment in the code ” // @TODO: set request parameters here” is at least accurate.
  • The docs contain a lot of Java syntax that is would not for example compile correctly. Plenty of occurances of a missing semicolon ‘;’
  • Each example defines
    String accessKeyId = ““;
    String secretAccessKey = “
    “;
    Ok for the first example, but as soon as I moved to the second, I re-factored these into a Interface called Constants.
  • In all the examples, they never provide any sample output, this would help just to confirm stuff. In Java Library for Amazon SimpleDB download link, there is an example output, but it’s outdated, with new data attribute called BoxUsage. My output is:
    • CreateDomain Action Response
      =============================================================================
      
          CreateDomainResponse
              ResponseMetadata
                  RequestId
                      f04df8eb-71fa-4d4e-9bd5-cc98e853a2e4
                  BoxUsage
                      0.0055590278
      
  • And now some specifics. In a Relational database such as MySQL, you have Instance/Schema/Table/Column. Within SimpleDB it would indicate that you need a separate AWS account for Instance management. That’s probably a good thing as it will enable tracking of costs. There appears to be no concept of a Schema. Data is stored in Domains, this is the equivalent to a Table. Within each Domain, you specific Attributes, a correlation with Columns. One key difference is the ability to define a set of Attributes with the same identity (much like a list that is supported via Python/GAE). For any row of data, you must specify an itemName, this being equivalent to a Primary Key.These names table me back to old days (20 years ago) of Logical Data Models that used entities,attributes and relationships.
  • The term Replace is used when updating data for a given row.
  • When retrieving data, you first return a list of itemNames, then you can via Attributes for that given item.
  • You can perform a simple where qualification using a Query Expression, including against multiple Attributes via intersection syntax
  • A observation that is of significant concern is the lack of security against any type of operation. The Getting Started guide ends with Deleting the Domain. Is there no means to define permissions against type of users, such as an Application User, and a Database Administrator for managing the objects.

Well it took me longer to write this post, then to run through the example, but at least on a lazy Sunday afternoon, a first look at SimpleDB was quite simple.

I did also run into an error initially. I first started just via CLI under Linux (CentOS 5), but switched back to installing Eclipse on Mac OS/X for better error management, and of course this error didn’t occur.

Setting up on EC2

Thanks to my friend Dustin, and his EC2 demo using Elasticfox Firefox Extension for Amazon EC2 I got an EC2 image setup. With other references Link 1,Link 2,Link 3 I was also able to create my own AMI.

Some notes specific for my configuration.

Pre-config ElasticFox key for launching directly from ElasticFox SSH connections.

mkdir ~/ec2-keys
mv ~/Downloads/elasticfox.pem ~/ec2-keys/id_elasticfox
chmod 600 ~/ec2-keys/id_elasticfox
chmod 700 ~/ec2-keys/
ssh -i /Users/rbradfor/ec2-keys/id_elasticfox [email protected]

Installed Software.

apt-get update
apt-get -y autoremove
apt-get -y install apache2
apt-get -y install mysql-server
# Prompts for password (very annoying)
apt-get -y install php5
apache2ctl graceful
echo "Hello World" > /var/www/index.html
echo "< ? phpinfo() ?>" > /var/www/phpinfo.php

Configuration to save AMI.

scp -i ~/ec2-keys/id_elasticfox ~/ec2-keys/id_elasticfox pk-CHK7DP4475BWUKIUF4WFDIW3VMYDYOHQ.pem cert-CHK7DP4475BWUKIUF4WFDIW3VMYDYOHQ.pem [email protected]:/mnt
ec2-bundle-vol -d /mnt -c cert-CHK7DP4475BWUKIUF4WFDIW3VMYDYOHQ.pem -k pk-CHK7DP4475BWUKIUF4WFDIW3VMYDYOHQ.pem -u AccountNumber -r i386 -p ubuntu804_lamp
ec2-upload-bundle -b rbradford_804_lamp_ami -m /mnt/ubuntu804_lamp.manifest.xml -a AccessID -s SecretKey

Log Buffer #94: a Carnival of the Vanities for DBAs

April 25th, 2008 – by Ronald Bradford

Welcome to the 94th edition of Log Buffer, the weekly review of the database blogsphere. Adding to the list of usual database suspects, I have some more alternative considerations for our readers this week.

We start with Conferences

Still some discussion from last weeks’ 2008 MySQL Conference & Expo.

Baron “xarpb” Schwartz calls it correct in Like it or not, it is the MySQL Conference and Expo. Matt Assay of c|net gives us some of his opinions in three posts Two great posts on MySQL, Back to the future for MySQL and Between two consenting corporations… in followup to last week’s active slashdot discussion. Many others have also commented if you have not been following the news released before opening keynotes.

If you didn’t get a hard copy, Sheeri Kritzer Cabral has published the Pythian EXPLAIN Cheatsheet many attendees received.

Also last week was Collaborate 08 – Technology and Applications IOUG forum for the Oracle Community.

This week we also see the Web 2.0 San Francisco in action, and excitement is also brewing for the PGCon – PostgreSQL Conference for Users and Developers happening in under a month as Robert Treat has Plane tickets booked for PGCon. Postgres was also visible at the MySQL Conference & Expo if you were looking with a prominent consulting team downing the blue elephant during the event. Wish I’d taken a photo now!

Still more news from Adam Machanic of the Pythian group with SQLTeach Toronto: Almost Here.

Common threads

The 2008 Google Summer of Code announced this week showcases the Open Source databases MySQL (14 projects) and PostgreSQL (6 projects). Kaj Arnö talks more in Fourteen Summer of Code projects accepted 2008. The company PrimeBase Technologies also features strongly with two projects for the Blob Streaming storage engine for MySQL as I detail in Media Blob Streaming getting a Google boost.

MySQL

DTrace Integration with MySQL 5.0 – Chime demo in MySQL Users Conference 2008 by Jenny Chen is an example of Sun’s Open Source contribution to MySQL which I saw as a physical demo last week. Unfortunately, due to the imbalance in actually getting new functionality into Community contributions (actually non existence in current or next mysql version :-(), this functionality is only really for show. Dtrace with MySQL 6.0.5 – on a Mac describes some of this work actually making it into the next, next version. It seems this next Falcon Preview is available but not announced by MySQL generally as I note in Continued confusion in MySQL/Sun release policy.

MySQL Gurus Mark Callaghan and Brian Aker comment respectively here and here on MySQL Heap (Memory) Engine – Dynamic Row Format Support. Work submitted by Igor Chernyshev of eBay Kernel Team (whom I’ve met previously and was most impressed with his ability to submit MySQL patch work, with little previous MySQL kernel knowledge, but extensive C++ knowledge). This work also contributed to eBay Wins Application of the Year at MySQL Conference & Expo.

Mark also mentions in his post “How do users get it? There is no community branch into which people can submit changes with a GPL license.“. A topic your’s truly has also mentioned regarding the Community contributions, development and release. Perhaps a sign of more benefit to the community soon as Monty mentions.

Baron Schwartz comments on Keith “a.k.a Kevin” Murphy’s work in Spring 2008 issue of MySQL Magazine. With a quick plug also for his upcoming book “High Performance MySQL – Version 2″ (me giving it a plug also now), Baron also has the best published anti-spam sniffer email I’ve seen, and recently updated to his new employer. Check his blog and let me know.

Postgres

Joshus Drake of Command Prompt Inc. The Postgres Company gets excited in Is that performance I smell? Ext2 vs Ext3 on 50 spindles, testing for PostgreSQL and gives us some insight into different settings of two popular file system types. It would be great to see a follow up with a few more different filesystems types.

Pabloj “so many trails … so little time” extends his MySQL example to Postgres in Loading data from files. And on Postgres Online Journal, we get An Almost Idiot’s Guide to PostgreSQL YUM giving you a step by step guide of PostgreSQL setup, including the all important “Backing up Old Version”.

Oracle

We get a detailed book chapter from Keith Lake of Oracle OLAP The most powerful, open Analytic Engine in his extensive post on Tuning Guidance for OLAP 10g. David Litchfield brings attention in A New Class of Vulnerability in Oracle: Lateral SQL Injection. The title is sufficient for all Oracle DBA’s to review.

Don Seiler gives his experience in Bind Variables and Parallel Queries Do Not Mix when an Oracle Bug is discovered the database to 64-bit H/W..
Matching LOB Indexes and Segments by Michael McLaughlin gives us a good CASE/REGEX SQL example exam question, and simple output to monitor the growth of LOBs in your Oracle database.
Additional readings for Oracle folks can be found with Kenneth Downs writing Advanced Table Design: Resolutions and Dan Norris’ Collaborate 08 thoughts gives a concise review of a largely attended Oracle event.

SQL Server

B Esakkiappan’s SQL Thoughts gives us a throughout lesson on SQL Server 2005 Database Transaction logs with Know the Transaction LOG – Part – 1, Part – 2, Part – 3 and Part -4 Restoring Data.

Paul S. Randal of SQL Skills adds Conference Questions Pot-Pourri: How to create Agent alerts to his writings following many requests after a recent workshop.

In Scalability features I would like to have in SQL Server Michael Zilberstein lists 3 key features including “Active-Active cluster”, “Indexes per partition” and “Bitmap indexes and function based indexes”.

Ingres, Times Ten, Google App Engine and more

Some movement in the Ingres world with Deb Woods of Ingres Technology Blog discussing in Inside the Community – Ingres style…. the Ingres Engineering Summit occurring this week. Attendees included newbies to a 24 year Ingres veteran. That beats my experience in Ingres which now extends 19 years.

We get another very detailed installation description, this time for Times Ten in Install Oracle TimesTen In-Memory Database 7.0.4 on Linux.

Just a few weeks ago, a new database offering hit the market with the Google App Engine. News this week includes
Google App Engine Hack-a-thons! being announced with events in New York on May 7th and San Francisco on May 16th. As a developer with an account and an excuse to use it more, I can’t win, being in the right towns on the wrong dates.

OakLeaf Systems this week writes Comparing Google App Engine, Amazon SimpleDB and Microsoft SQL Server Data Services. Another good read just for comparison.

Not in a blog, but in discussion in at the recent MySQL, was msql. It was interesting to find out that PHP was originally developed for msql first, and only used MySQL as the preferred database after some functionality requirement. Interesting what could have been?

In Conclusion

Thanks Dave for the opportunity to contribute to the week in review. Until my chance to charm the readers next time.

I leave you with a photo, and challenge our readers to find another person who would be capable of wearing a t-shirt that states “My free software runs your company”. Michael Widenius- Founder and original developer of MySQL can, and my thanks to you for MySQL, and the Vodka shots at the Conference last week.

Happy Earth Day 2008!

Media Blob Streaming getting a Google boost

The 2008 Google Summer of Code MySQL Projects are now available. MySQL has 14 listed projects, one of the ~190 different Open Source products listed. Unfortunately there is no summary to see the total number of projects being sponsored across all products.

Media Blob Streaming actually has the luxury of two approved projects, so they have plenty of mentoring work at PrimeBase Technologies.

Raj Kissu Rajandran will be working on BLOB Streaming Support for phpMyAdmin and KishoreKumar Bairi on Streaming Enabled MySQL Driver for PHP. Welcome to world of open source for your respective projects.

A few words from Jonathan Schwartz

Following Marten Mickos, the second opening keynote at the 2008 MySQL Conference and Expo was by Jonathan Schwartz CEO and President of Sun Microsystems. Blog

His opening joke was about dinner with Marten, to which Marten said “You not going to get a keynote, unless you buy the company.”

So what was striking for me in his presentation “What is Sun’s Agenda?

  • There is no open-source phone yet, but that’s an industry that needs disrupting.
  • Like the need for water or electricity, The Network Has Become A Social Utility.
  • We want to work with the community, create greater innovation.
  • The future, the price tag of Free, the philosophy of Freedom

I had a chance to meet Jonathan and Rich Green on Sunday night, and it was great to see Jonathan learning about, and getting behind the product PBXT – The Community Engine a MySQL 5.1 open source engine.

Using Vodafone UMTS in Germany

These instructions apply to the Novatel MC950D UMTS USB modem running under Mac OS/X 10.5 (Note these instructions do not apply to OS/X 10.4)

1. Software Installation

You first need to install the software as supplied on CD.

This will give you a Vodafone Mobile Connect folder including the Vodafone Mobile Connect application and manuals in various languages.

2. Connect your modem

Insert your data SIM card (which should be a different SIM from your mobile phone) into the modem and connect to our Mac. You should get a consistent blinking RED light.

3. Run the Connect Application

Selecting the Vodafone Mobile Connection Application you will get a program that will search for a network connection. You will prompted to enter your SIM card pin.

When an appropriate connection has been made, your modem should now have blinking GREEN light in intervals of 3.

You need to select the [Activate] Button at the bottom right of the window.
Your modem will now have a blinking GREEN light in intervals of 2.

Select the Support tab will provide some technical details of the modem and OS.

4. Getting a Network Connection

Open System Preferences then select Network.

Click the [+] button to add a new network type.

Select from the dropdown list the Interface Notavel and give the service an appropriate name. NOTE: It does not appear you can change the name at a later time.
Click the [Create] button.

Now back on the Network page, click the [Advanced] Button to change settings.

Select the WWAN tab. Select the Vendor Notavel from the supplied list.

NOTE: When selecting a different Vendor the Model list does not change. You need to Select [Ok] then [Apply] and then re-enter the WWAN panel.

Selecting the Model GSM you will be prompted with two additional fields. Enter WEB.VODAFONE.DE in the APN field (This is very important).

Select the DNS tab. No changes should be necessary. This should remain empty.

Select the WINS tab. No changes should be necessary. This should contain the NetBios Name entered, other fields empty.

Select the Proxies tab. No changes should be necessary.

Select the PPP tab. No changes should be necessary.

5. Making the connection

You are now ready to go.

Click the shiny [Connect] button. If all goes well you should end up with a connection.

6. Checking Settings

Following a successful connection, the [DNS] tab shows updated information.

A clarification of evil

Earlier I wrote in The Sun Download Manager is evil a subsequent generalization, and I wanted to make a clarification. I stand my by title, but not that the entire company is evil. Perhaps are 1am and being tired, and rather peeved I could not download the free software with any ease I needed to as they say “sleep on it”.

Let me further detail why the Sun download manager is simply to never to be used without due consideration. You first have no choice, if you use the Sun Download Manager to download software (I’ll have to review if you even have an option not to use it), you must accept the SSL trust requirement, to not accept is to not use the download manager, so straight away you have no option (this is the path to being evil). When you accept the trust of the download manager, you are signing over your entire computer to the software to which you don’t know what it’s really going to do. This is in essence how a Trojan horse works. This is how software from other sources can deceive people, even destroy all information on your computer. Combined with the fact that the download manager does a really stupid thing and places files in the ‘root’ directory of your machine is also something you should never allow and never do.

I really want to bring this to the attention of people, because I have plenty of friends and family which don’t understand computers as much, and what’s possible, and if say the trusted a Java Applet from Sun, they might just do this next time with a program who’s intent is to destroy, damage or transmit information on your computer.

This leads to the real justification of virtualization and always doing any web surfing or use in a dedicated virtual environment, however until this becomes simpler for the end user it’s not easy to configure and explain to a less experienced user.

When technology just works

Today I needed to visit a medical specialist for collection of something. I had to pay $250 as my insurance did not cover. I sent a check as requested however today they had not record of receipt. Not wanting to write a second check and then find they cash both, I logged onto my online banking right there with my iPhone (miracle I could remember my login and password as all important logins like this are different and normally I need my notes) and I’m able to confirm deposit and even view a scanned copy of the check. Confirming the date they are still unable to find. I’m able to use an office computer and print out this confirmation to show them proof of payment.

The technology of the iPhone and the thoroughness of my bank online check verification solved the hassle, simplified the confirmation and greatly reduced the stress of the situation. At T-2 days the technology worked and I was most grateful.

The Sun Download Manager is evil

Well, following my rather unimpressed first attempt to download Open Solaris I registered a second account and this time it worked, go figure, there must be a “annoy MySQL ex employees feature there”.

The Sun Download manager kicks off with an Open .jnlp with Java Web Start (Screen 1), ok, whatever. You then get a SSL warning and well whatever as well (seems weird) (Screen 2), then the Download Manager kicks of downloads in this case 2.3GB (Screen 3).

So next day, I’m looking for the iso, can’t find in my ~/Downloads, and infact a search across my entire home directory does not find the .iso What the. You are telling me after all this I still don’t have the iso file.

Long story short, it’s been saved in the ‘root’ home directory i.e. ‘/’. Holy crap how can you do that, and any idiot knows you don’t put files there. The Options page, which you can get to after downloads (Screen 4) allows you to change the download directory, but the damage is already done. Scratching ones head to work out how without password access this was possible, you have to read the fine print as highlighted on screen 3. “Click Trust to use this application and allow it unrestricted access to your computer”. Well that’s just evil. Sun is now an evil company in my books.

Post note. So I move my files from ‘/’ obviously, and I don’t need ‘root’ permissions, just my normal user. This is really, really messed up.

macmarvin:~ rbradfor$ cd /
macmarvin:/ rbradfor$ ls -l
total 7616021
...
dr-xr-xr-x   2 root      wheel           1 Mar 13 10:27 net
drwxr-xr-x   6 rbradfor  staff         204 Nov 29 22:10 opt
[email protected]  6 root      wheel         204 Oct 26 02:04 private
[email protected] 66 root      wheel        2244 Mar  5 19:38 sbin
-rw-r--r--   1 rbradfor  admin         341 Mar 26 02:55 sol-nv-b79b-md5sum-dvd-x86.txt
-rw-r--r--   1 rbradfor  admin  3878092800 Mar 26 13:12 sol-nv-b79b-x86-dvd.iso
-rw-r--r--   1 rbradfor  admin      205408 Mar 26 19:40 sol-nv-b79b-x86-dvd.iso.sdm




Things that piss me off

So I decided to download Open Solaris tonight. Not only do you have to go through the pain of registering to download the free product, ok that’s understandable, you are forced to enter an Organization and a Phone Number, the first is impractical people, not everybody works or want’s to even tell you where they work, but phone number is completely unacceptable.

So, registered go to click on download and I get a most stupid error saying to enter a User Name and Password yet a few lines below it states I’m logged in, and there are no input boxes. So I entertain this annoyance, log out and log in again to get the same result (why did I expect a different result).

So Sun, if you don’t want me to download the software, just say so next time.

I should add it’s 1am, the end of my day so perhaps it’s time out.

NY PHP – Sun & MySQL: A New Hope

Tonight’s New York PHP community meeting was a talk by Philip Antoniades the MySQL Systems Engineering Manager.

With an interesting topic opener “A New Hope” I could not resist to hear Philip’s official MySQL presentation.

Some small points I took away from the presentation.

  • Sun is committed to Postgres with Josh Berkus and a team of 20 people.
  • Solaris.next is the next version of Sun, I thought that was a cool internal name, be it obvious
  • A marketing slide of the highest traffic websites listed Meebo, yousendit, alexaholic, techcrunch, feedburneer, istockphoto and vimeo as reported by Pingdom. Not sure were they get their data, but Google, Yahoo, FaceBook, Wikipedia, MySpace, Fotolog are sites I think of as high traffic. Indeed 3 of these listed sites I’ve never heard of.
  • MySQL 5.1 is expected GA in late Q2 (no year was mentioned).
  • Falcon in 6.0 was listed as the “Next Generation” transaction Storage Engine, an interesting term I’d not heard of before.
  • Sun provides Hosted Database Services (i.e. the cloud) via network.com.
  • MySQL has had an influx of Sun Engineers (60-80).
  • MySQL is being benchmarked more on Sun H/W.

This talk did remind me it’s time to download Open Solaris. With the interesting comment that out of some 1,200 Sun Engineers over 1,000 were Macbook users gives me great confidence it will work just fine on my Macbook.

Out of other discussions there was talk of ZFS, so this will be interesting in what backup opportunities for MySQL without a true Online Backup solution may exist.
Also there was discussion with Sun’s GUI Tool NetBeans, and this casts light on how this will sit with the MySQL GUI team and MySQL Workbench.

Interesting times, this new hope.

Noise canceling headphones

Some 9 months ago I left my noise canceling headphones on a plane. Since then I’ve though I’d just self suffer for my carelessness, and I’d decided the next set I would buy would be Bose. The problem is, Bose make two brands, The over ear 2 model and the on ear 3 model. I could never decide which one to order without first trying. They do offer a return policy but that’s just more hassle.

So eventually I get to the Bose store in the Time Warner building at Columbus Circle, try them both, can’t really decide either way and settle for the over ear 2. Some facts in my decision is basically the case is the same size, the 2 model has a recharger, while the 3 uses AAA batteries.

I then head of the the NY apple store for some smaller purchases, and I notice that all the sample headphones for the iPods are Bose. You can even buy them there. So treking across NY in the rain could have been easier?

In other Apple news, the MacBook Air is not as light as I would have thought, being 3 pounds, still it’s a cool geek thing and I was tempted even though I’d just just purchased my own Macbook recently. And of course they released a new macbook yesterday as well. Go figure.

MySQL graphics and words in use

Not sure during my vacation which part of the creative brain has taken over, but I’ve become rather obsessed with marketing graphics and associated words being used across the MySQL and Sun MySQL websites, (See previous examples here and here).

Here are a number of more interesting references from the front page of the www.mysql.com site.

  • The MySQL website now has a MySQL/Sun logo, noting it starts with the MySQL logo first.
  • MySQL & SUN Come together. Freedom & Innovation Fast, innovative, open database solution now with world class service and support (dolphin jumping at sunset)
  • Unlimited Possibilities. Deploy an unlimited number of MySQL Enterprise Servers for the cost of a single CPU of Oracle Enterprise Edition (two dolphin jumping across a moonlight night scape)

The haven’t got to the MySQL Conference website yet, I guess that’s controlled by O’Reilly still for now.

Words and images remain the property of Sun Microsystems, Inc. Copyright 1994-2008.
Comments on this site reflect the personal opinion of the author and may not reflect the opinion of any present or past employers.

Where is the Sun MySQL Reference Manual?

Yesterday I mentioned the new The official Sun-MySQL WebSite. It interested me with the navigation, graphics and content used to describe MySQL.

Greg of One Free Voice in a comment raised a very valid question, he could not find the MySQL Reference Manual, see comments. (I should also point out Greg it is no shame to reference the MySQL manual even daily, I’m an expert in the field and I easily reference the manual multiple times a week, and for reference the single most important page for me is Option and Variable Reference. I’ve also forgotten when using multiple languages in MySQL what is OFF/ON, simple solution is in the mysql client go SELECT ON; and see it it’s 1 or 0.)

Well, I didn’t find a link to the MySQL reference manual on the Sun Website. I’m sure it’s there somewhere but this leads to the question of design. The MySQL www.mysql.com got an overhaul several months ago, and the navigation was clearly improved down to two clear menus, see below. Now the Sun MySQL page has 4 separate menus (even the forth I missed yesterday), see below. This new menu even discovered another interesting graphic and comment to add to my list yesterday.

  • Community – 11 Million and growing (Picture the bottom have of marathon runners)

Words and images remain the property of Sun Microsystems, Inc. Copyright 1994-2008.
Comments on this site reflect the personal opinion of the author and may not reflect the opinion of any present or past employers.

Microsoft, Yahoo and Open Source

There has been plenty of press this week regarding Microsoft making a bid for Yahoo. This week the Wall Street Journal Article From Uncertain Future To Leading Yahoo Bid has prompted me to the following observations. I quote several points:

The bid, he said on the call, is “the next major milestone in Microsoft’s companywide transformation” to incorporate online services.

as Microsoft pushes the bid and, if successful, tries to meld Yahoo with Microsoft.

Microsoft had been negotiating to buy online ad company DoubleClick Inc. but lost that deal to Google, which paid $3.1 billion. Microsoft in May countered, spending $6 billion on online ad company aQuantive Inc.

While Microsoft should continue investing in its own online services, it needed to speed things up through acquisitions.

Once a company had a critical mass of buyers and sellers on its online-ad system, it could hold sway over much of the industry. In computers, Microsoft achieved that position with its Windows operating system. But on the Internet, Google was quickly taking on that role.


The Alexa Ratings has Yahoo as the number 1 real-estate property, outstripping Google. What’s important to realize that Yahoo along with many top traffic websites not only use Open Source, but their business is run on Open Source. At the database, there is MySQL powering Yahoo, Facebook, Wikipedia, YouTube, Fotolog and Flickr for example. Google also uses MySQL within critical components (not the search engine).

One can only hope that if such a bid is successful, much like the Sun acquisition of MySQL , that strong components of the Open Source ideal infects the much larger host.

I was thinking of taking this popular Tux & Microsoft Office image and badging Tux with a Yahoo logo, or perhaps he needs to be planting a big neon sign in the center.

Solid-State Drives Press

I read yesterday in The Wall Street Journal an interesting article in Personal Technology, “Solid-state drives challenge hard drives in speed, but not value”. While the title does sum up nothing new, the barrier to entry to embracing new technology is always cost, and early adopters may not have deeper pockets, but it’s also about being a alpha geek.

As the article states “Solid-state drives have some key advantages. Because that lack moving parts, they are faster, draw less power, and harder to damage and are quieter”. It also backed this up with some results.

What I did not realize, is the new MacBook Air has a 80GB HHD version at $1,799 and as 64G SSD version at $2,798. Testing showed that there was little difference in battery life between these models, however with the Toshiba Portege R500 and the right battery there was a 36% battery life increase. That’s interesting news for those that spend a lot of time on planes,trains and airports. Tests clearly showed faster cold startup and reboots, up to 40% faster.

Kevin Burton has had a lot to say recently about MySQL and SSD, and Matt Yonkovit has also just published some results with Mtron SSD Sysbench/MySQL results, DBT2 MySQL SSD Results and More Details on MySQL & SSD drive performance…. It seems that Mtron SSD was the brand reviewed by Matt and Kevin (See 24 Hours with an SSD and MySQL).

Where do we go from here, MySQL as with any database has certain characteristics, large amounts of storage needed, fastest access possible, but generally sequential and random writes, but random reads. Certain MySQL storage engines may benefit with sequential writes, such as PBXT. As with any architecture today, multiple layers, caching and different approaches to storing and retrieving data within your application or website will ultimately be required to maximum the strengths of underlying technologies and minimize the weaknesses.

More information at Wikipedia Solid State Drives.

My Ideas for MySQL Camp III

Diary: January 21st 2008 – Martin Luther King Day (Day doctor’s practices are closed BTW.)

“I have a dream”, poetic . Actually I have thumping 5 day straight headache but that’s another story.

I have a dream for MySQL Camp III. A 48 hour Global Hackfest. I ran this by Jay over Thanksgiving, to get back to more the purpose of the Camp, for hackers, coders and the very experience to get to together to share their skills, and for those at the top of our respective game to learn just a little more. MySQL Camp II was a success to attendees in general, but of little value to the experts.

I hope to get us middle to advanced ground. Here is an overview.

  • 48 hour event
  • Say 12pm Friday GMT to 12pm Sunday GMT
  • Global meeting points of two or more to work together, sleep, eat and play together (in fact the goal is not to attend alone, you should really try to get to at least the closest person that’s also attending, it’s designed to be a distributed group event)
  • 4 key areas
    • Getting Starrted. Getting the code, understanding the basics of compiling – Linux, Mac OS/X and Windoze. CLI & IDE debugging options
    • A&D. Analysis of problems, selected bugs, existing patches etc, reviewing procedures, documentation requirements, important of test plans etc. Laying down a plan on what’s going to happen, how long it’s going to take etc.
    • Doing it. Taking a working developer environment, and a set plan, and executing to completion
    • Reviewing it. Getting an insite into MySQL and how bug fixes, community contributions etc are submitted, reviewed, proposed and received
  • I would anticipate we would run say 2 or 3 tracks of these 4 points, so we would repeat stuff, perhaps a different problem, but this enables you to get a real grip, as well as cater for the 24hr cycle.
  • I could see the Doing it interesting, perhaps depending on attendees either a mentor process where a code guru could instruct some youngerlings, or multiple teams working in parallel on the same problem, a little bit of competition.
  • Code base line version and list of bugs/features to be looked at to be pre-determined, so we have a clear structure during the event. This will be proposal format, and may include for example back porting patches for example.
  • We will definitely be having some prizes and some fun, it’s going to be one of those work to 3am in the morning weekends regardless of where you live.

I expect to run this format of MySQL Camp twice, the first to work out any serious problems. I had hoped in November last year to get this before UC2008, fat chance, but I’m proposing a MySQL UC2008 a BOF on the subject.

I had spoken with good friend Farshan Mashraqi that had done some good Sun webinars recently and he was seeking a contact to see if Sun could donate the time/bandwidth for the electronic component or even sponsor. (This was clearly discussed late last year) Seems now this may be easier, or harder with Sun’s involvement.

I have a lot more details, but I want to get this out there into the world, and get some feedback first.
I’d like people’s feedback. Here are 5 questions to start with.

  1. Do you think it’s a good idea?
  2. Would you attended/participate?
  3. Could you contribute in some why? What?
  4. The one thing that appeals the most on the concept?
  5. The one thing that appeals the least/lacks/needs on the concept?

Microsoftism's on my MacBook

Seems Mac OS/X has not escaped the unnecessary annoyances of Windows. Below are details to unstall a product on my MacBook, following it crashing my machine a few times with the “blue screen on death” below.

Eye TV Lite is the software that comes with the Pinnacle TV line of products for the Apple Mac.

 

To completely uninstall the EyeTV Lite software and it associated files, please follow the steps below.

 

1.      Drag the EyeTV Lite application from the Application folder to the trash.

a.       Open Finder

b.      Select Applications

c.       Select EyeTV Lite and drab it to the trash

 

2.      Using Finder, move the following files to the trash.

 

Below is a list of the files that need to be removed and their function.  Below that is the location of the files. 

 

com.elgato.eyetv.plist – stores the preferences and there are 2 copies on the hard drive

EyeTV Helper – assits with USB/FireWire issues

com.elgato.eyetv.devices.plist – preference file related to the available devices

com.elgato.eyetv.world.plist – preference file related to the channel lists

Wakein – assists EyeTV Lite with waking/booting to record

EyeTVEPG.db – EPG data is stored in this file

EyeTV Archive – contains all of your recordings and scheduled programs

EyeTVClassicDontSeize.kext – All of the kernel extension files .kext are to prevent the Mac OS X from attempting to talk to TV devices that can appear as generic USB audio class or HID class devices before the actual firmware has been uploaded to them.

EyeTVAfaTechHidBlock.kext – same as above

            EyeTVEmpiaAudioBlock.kext – same as above

 

Drag these files from the location listed to the trash using Finder

 

/Users/(username)/Library/Preferences/com.elgato.eyetv.plist

 

/Library/Preferences/com.elgato.eyetv.plist

/Library/Preferences/com.elgato.eyetv.devices.plist

/Library/Preferences/com.elgato.eyetv.world.plist

 

/Library/Application Support/EyeTV/EyeTV Helper

/Library/Application Support/EyeTV/Wakein

/Library/Application Support/EyeTV/EyeTVEPG.db

 

/Users/(username)/Library/EyeTV Archive/

 

/System/Library/Extensions/EyeTVClassicDontSeize.kext

/System/Library/Extensions/EyeTVAfaTechHidBlock.kext

/System/Library/Extensions/EyeTVEmpiaAudioBlock.kext

 

NOTE 1:  If you erase the EyeTV preference files, then any activation key you may have will need to be re-entered.

 

NOTE 2:  The files with the extention .kext can only be erased with root/superuser access. Also, to erase EyeTV Helper, you first have to quit it by using the Process Viewer or Activity Monitor.

Reference

Mac Printscreen

There are many things I’m coming to grip with on my new MacBook. One is missing buttons on the screen, like Page Up, Page Down and PrntSc.

Well I at least found out from Eric that I can get Print Screen with the following keyboard syntax.

Command-shift-4 then space then mouse click

MySQL under Mac OS/X 10.5

Time to install MySQL on my new MacBook.

$ cd /opt
$ wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.45-osx10.4-i686.tar.gz/from/http://mysql.mirrors.hoobly.com/
$ tar xvfz mysql-5.0.45-osx10.4-i686.tar.gz
$ cd mysql-5.0.45-ox10.4-i686
$ scripts/mysql_install_db
Installing MySQL system tables...
071129 22:10:48 [Warning] Setting lower_case_table_names=2 because file system for /opt/mysql-5.0.45-osx10.4-i686/data/ is case insensitive
OK
Filling help tables...
071129 22:10:48 [Warning] Setting lower_case_table_names=2 because file system for /opt/mysql-5.0.45-osx10.4-i686/data/ is case insensitive
OK

bin/mysqld_safe &
[1] 239
macbook:mysql-5.0.45-osx10.4-i686 rbradfor$ chown: /opt/mysql-5.0.45-osx10.4-i686/data/macbook.err: Operation not permitted
Starting mysqld daemon with databases from /opt/mysql-5.0.45-osx10.4-i686/data


$ bin/mysqladmin -uroot password 'sakila'
$ bin/mysql -uroot -psakila -e "SELECT VERSION()"
$ bin/mysqladmin -uroot -psakila shutdown


It was interesting that these normal steps under Linux provided two errors not normally seen.

1. Setting lower_case_table_names=2 because file system for /opt/mysql-5.0.45-osx10.4-i686/data/ is case insensitive

2. chown: /opt/mysql-5.0.45-osx10.4-i686/data/macbook.err: Operation not permitted

The first is interesting, is Mac like Windows in that sense? I’ll need to check that out.
The second occurs every time I start MySQL which is also intriguing, but for now doesn’t affect MySQL operation. It’s interesting that the permissions of the error file is the same as the user running it, so go figure.

iPhone bug

I discovered a bug on my iPhone. The issue was around Daylight saving. Thanks to Dock I was able to take screenshots which was much better then photos.

In Calendar when you select 1am on the scrollers, you get 1am as the start time. When you select 2am, the start time goes to 1am. When you select 3am, it goes to 3am as expected.



My Hacked iPhone

I installed Dock on my iPhone and it gave a very handy and wanted Screen Shot function. So now I can show my present iPhone screen. It looks like:

Apart from the obvious differences of different and more icons, I have by background behind icons, and I’ve turned off the text, so you need to know the icon means. Still, it’s wicked cool.

My MacBook

I arrived home last night at midnight from San Francisco to a pile of mail and a number of packages. My shiny new MacBook had arrived. It was rather ridiculous that I wanted a HDD upgrade and I could no buy it in the store. They come with 160GB and have only one upgrade option to 250GB.

Nevertheless, I’m now trying to familiarize myself with Mac OS/X 10.5 (Leopard) which is rather foreign as I’ve never used a MacBook before.

So what was my motivations? After Hacking my iPhone I wanted to do more, and even try and write an app, so I needed a Mac OS. I actually wanted a MacBook when I first joined MySQL last year, but my request was not approved (“You have to be able to run Windows” was the response, and yes I told them it can run windows).

Combined with a my Q3 Bonus, I just had to have one. This has been a number of significant purchases in recent months, an iPhone and a Canon 40D. All I need now is a girlfriend and my bank balance will be in more serious trouble.

Hacking my iPhone

I’ve finally taken the plunge after wanting to for some time. This is what I did, all steps are from using the iPhone directly, no computer required.

NOTE: I can’t take responsibility for anything that happens to your iPhone. As the warning for the installer program states, “This software comes with absolutely no warranty of any kind. If it should cause any harm to your iPhone or data, we shall not be held responsible.”. That said, there are instructions to Virginizing your iPhone to 1.0.2. So if you ever had to return the phone to Apple you would need to do this first.

Part 1. The Installer
NOTE: This only works if your Phone has firmware Version 1.1.1. If you have the iTunes button you have 1.1.1 (as at 01-Nov-2007). You can find our your Version by going Settings -> General -> About and look for the Version value.

1. Disable Keyboard Passcode Lock if enabled (Settings -> General -> Passcode Lock -> Off), Disable auto-lock (Settings -> General -> Auto-Lock -> Never), enable Wi-Fi (Settings -> Wi-Fi -> On) and get connected to a wireless network (Settings -> Wi-Fi -> Join Network)
2. Using Safari Browser, goto http://jailbreakme.com/.
3. Click on Install AppSnap link. The phone will appear to do nothing before it returns to the initial screen, with Slide to Unlock. (It took less then a minute for my iPhone to go back to Slide to unlock, other notes indicate up to 5 mins)
4. Slide to unlock. You will see a new icon called Installer. (Don’t click it yet)
5. Power off your phone, and power back on. (I’m uncertain how long this will take, as I did it slightly different, but don’t be alarmed if it takes at least 15 minutes this first time, as that what it took for me.

Note: At step 4 I selected the Installer button (it asked me to Update, which I did). This was bad idea, it went to Downloading package and never recovered after 5 minutes. I needed to do a reboot via holding down menu button. Click on the Installer button again, and it simply doesn’t start properly, going back to the main page. Turning off via power button freezes as well. After 5 minutes, tried holding down first the menu button, then the power button, no luck. Froze on the shutdown spinning icon for at least 15 mins.

Part 2. The Necessary Programs

You can now install the following programs when selecting Installer. Note: after each installation it will go back to the initial slide to unlock screen.
Note also the initial order, in particular the first 3 are important.

6. Installer -> System -> BSD Subsystem (Version 1.5, 6.6 M)
7. Installer -> Sources -> Community Sources (Version 3.0, 165 bytes) Update This happens automatically now.
8. Installer -> System -> OpenSSH (Version 4.6p1-1, 696k)
9. Installer -> System -> Term-vt100 (Version svn198, 81k)
10. Installer -> Package -> Summerboard (Version 3.0a11, 693k)

This then gave me access to SSH to my phone, SSH out to the big bad world, and ability to have different themes, changing the look and feel, see Summerboard themes for example.

Part 3. The fun applications.

I installed to start with the following application, you should choose what you like.

Installer -> Games -> Sudoku (Version 1.0-1, Size 24k)
Installer -> Utilties -> Erica’s Utilities (0.36, 42k)
Installer -> Utilities -> Erica’s iPhone Utils (0.06, 12k)
Installer -> Utilites -> Erica’s Ported Utils (0.06, 2.5M)
Installer -> Multimedia -> VoiceNotes (0.21, 60k)
Installer -> Productivity -> Crosswalk (1.01, 362k)

Practically everything is from www.modmyifone.com. Many references available online helped including here. Thanks James for the demo and points to success.

Some darn wicked stuff.

One of the cool things, being able to save Call History, SMS messages and Notes. Did via SSH with the following commands:

PATH=/var/root/bin:$PATH;export PATH
sqlite3 -line /private/var/root/Library/SMS/sms.db 'select address,text from message;'
sqlite3 -line /private/var/root/Library/Notes/notes.db 'select data from note_bodies;' | sed "s/^.*data = //"
sqlite3 -line /private/var/root/Library/CallHistory/call_history.db 'select "* " || address || " (" || ((duration/60)+1) || "  minutes)" from call;' | sed "s/^.*= //"

Ban the Backquote

I really don’t like the backquote character (`). This is primarily due to it’s use by MySQL in internal and community tools.
MySQL allows objects, .e.g table names, column names etc to contain both reserved words and spaces, providing they are appropriately surrounded by backquotes, so tools now simply enclose everything with backquotes. Really annoying.

Last week while on a client site I was told a funny story. The CEO of a company bought an iPhone however was unable to use it at work due to the WEP key for the Wireless access in his organization includes a backquote. I’ve confirmed it, the iPhone keyboard does not have a backquote key. So now, because he is the CEO, everybody will have to change their Wireless WEP key just because of the iPhone.

But it gets better. Around midnight last Saturday between Slate Plus (for Dinner & Pool) and going down to SOHO for more drinks, Farhan had to change a cron job. As his battery was running low, he was trying to find it, you guessed it, the backquote character on his OQO. Just lucky it’s Windoze and if you can find the character map application, you can insert the character.
Rob and Michelle were on hand, and with my new EOS 40D and 50mm 1.4f lens I was able to take a series of photos without flash and without alerting my unsuspecting subjects.