I had reason to make my first visit to the new Perth Apple store this evening. I’ve had some trouble with my iPhone and made an appointment at the Genius Bar to see if they could sort it out.
Earlier this week I felt the iPhone get quite hot in my pocket and took it out to have a look. It felt hot to the touch, something seemed to be going wrong. I turned the phone off to give it a chance to cool and see if a power cycle would solve the problem. After turning it off, the phone would not turn back on and continued to generate heat for another 20 mins.
I’m not sure what went wrong, I thought maybe the CPU got pegged at 100% by some runaway process, but when it would not restart I thought maybe there was some fault with the battery chemistry. I guess I’ll never know.
In any case, I took the iPhone to the Apple store and explained the issue to a genius. He checked the phone for exposure to liquids and ran it through some other diagnostics. The phone didn’t respond to any of the tests, so the outcome was that the phone was replaced on the spot. Needless to say I’m quite pleased.
The interaction with the genius was very methodical, almost formal. My permission was asked before the phone was handled, and again before the SIM was removed. It was an unusual experience to not feel as though I was getting bullied by a salesperson.
Once in a while I manage to belt out a bit of code that doesn’t suck. This is a post with one example. I have a csv file with a bunch of rows of data that need to be added to a database. I’m using the django python framework to develop a web front-end for the database, so using django to add bulk data from a csv file seemed like a good idea too. Here is some code:
#-------------------------------------------------------------------------------
def buildModel( model, row ):
# constuct an instance of the model
m = model()
# get a list of the fields in the model
fieldList = [ f.name for f in m._meta.fields ]
# add data to the fields
for i, fieldName in enumerate( fieldList ):
setattr( m, fieldName, row[i] )
# fetch the relevant model
model = get_model( appName, modelName )
# open file using csv module
csvReader = csv.reader( open( fileName ) )
# loop over every line in the csv file
for row in csvReader:
# create a model object using the data in row
o = buildModel( model, row )
# save company
o.save()
The loadData() method processes the csv file row by row. buildModel() takes advantage of the direct correspondence between the order of items in the row with the fields of the django model. The returned model is then save()’d to the database.
A cool video from Porsche about their effort at the Nurburgring 24 last month. It focusses on their hybrid 911 that captures braking energy and stores the energy in a spinning flywheel in place of the passenger seat. The energy can then be used to drive electric motors in the front wheels.
As I understand it, the flywheel is an evolution of the version developed by the Williams F1 Team for the KERS rules in the 2009 F1 season.
Today I had to setup a scrumboard at work. I was looking for something free and online. I settled on using SeeNowDo. It looks like it does Scrum in a way that is familiar to me from my previous workplace.
I also quite like the look of Pivotal Tracker. This looks like it more focussed on managing a story backlog, so it may be useful for sprint planning.
I’ve heard that JIRA has worked well for people, but it seemed a bit heavyweight for my purpose since it requires a server. What tools do other people use for scrumboards?
I have uploaded another version of our second biomechanics tool, the Moment Pendulum.
As with the previous tool, the Vector Summator, it was written using haXe in FlashDevelop. Development has been largely driven by my dad, Geoff Strauss, for use in his courses at Curtin University. The main task of the tool is to allow students to enter data about the forces that act on a limb that pivots around a joint. The tool calculates the torque moments generated by each force and sums them to provide the resultant torque in the system.