It’s been live for a couple of weeks now, although I haven’t done much promotion of it, so here is word of an “official” announcement of my new portfolio site. Please take a look around and if you have any constructive criticism, feedback or advice, feel free to let me know through the usual channels…
So without further ado, I pronounce www.jamestitcumb.com officially open!
At our company we currently all work on one shared network drive. The source code is not under any kind of source control, which for me is a big no-no. I’d love to be able to set up SVN and us all work of separate repositories and just commit back to a trunk or branch, but our tech manager doesn’t agree. The way I see it, there are two major issues:
- The source has no history – if there is a problem, we can’t roll back
- We overwrite each other’s changes if we work on the same file
How do other people manage this situation? Having source control on the network drive is fine, but that doesn’t solve the problem of overwriting each other’s changes does it… And setting everyone up with VMs or local repos doesn’t wash with the tech manager. Would a solutions such as each having their own checkout and then the shared network drive automatically update work? What about slowness in updating – people making a change and having to wait a while before it takes effect probably wouldn’t wash with our tech team, and committing back every tiny change seems a bit silly.
What about other source control (i.e. not SVN) – do you think it would suit us? I’m open to suggestions, except for Visual SourceSafe. Preferably something that integrates well with Eclipse, and is also cross platform (we use a mix of Windows, OSX and Linux), but something that also works well without Eclipse… tall order perhaps?
Well this evening Facebook have revealed what PHP developers globally have been speculating about and revealed their big secret.
And boy, this could really change the landscape of PHP as we know it. I’m a great fan of compiling PHP for one reason or another, but I’ve never seen it reliably work. Roadsend is an absolutely fabulous rewrite of the Zend engine that allows compilation of PHP. Unfortunately, there are gaps and certain features are missing (but in the pipeline I’m sure). If you want to make a generic website though without any specific extensions, then Roadsend is great and works great with Apache.
I’m really excited to explore HipHop as it claims to be the bee’s knees, and there’s been a lot of hype over it since the announcement. HipHop claims to improve PHP’s performance by fifty percent, which is great. Not only this but it’s clearly proven to be stable as it’s already in use on 90% of Facebook’s platform which means it’s not a lone developer’s work which is tested on his one box; it’s been tested by millions of users.
The great thing about HipHop is that it actually generates C++ code from the PHP, and compiles that normally (using g++ I think). From what I understand, the hardest part (logically) is converting a loosely typed language to a statically typed language. This means that in PHP you would declare a variable without specifying it’s type, in C++ you have to. From what I understand, HipHop parses all the code and attempts to understand all the uses of variables and types them accordingly.
I’m looking forward to seeing HipHop in action and getting stuck in.
I haven’t done a “personal” update for some time now, so I thought I’d briefly brush over our recent lives. The photo you can see on the left is the current state of our new house that is being built in the new Dickens Quarter development in Portsmouth. As you can see it is coming along well, and the estimated completion date is currently the end of April. It’s exciting to see it come so far and we simply can’t wait to make it our own lovely home.
On the Freyja side of things, she’s drawing close to 10 months old now and is coming on leaps and bounds. She can make “red indian” noises (patting her mouth and making noise), walk around standing up and holding the furniture, put balls into the “learn and sort” helicopter toy I got her for Yule, crawl around on hands and knees with quite a pace, wave, throw tantrums and all sorts of other bits and pieces.
She’s truly a joy and makes me a very proud parent. She also eats us out of house and home, typically getting through a bowl of porridge and yoghurt for breakfast, a slice of bread with topping and a yoghurt and biscuit for lunch, a snack mid-afternoon, and a bowl of healthy home-made food followed usually by 2 or 3 yoghurts. As you can probably tell, she likes yoghurts, but there’s nothing wrong with that as they’re a good source of calcium as Hannah’s milk starts to deplete.
In other news, it’s Hannah’s birthday soon, so if you haven’t been invited (on Facebook of course…) and you think you should be, get in touch.
I’m just writing a query at the moment that filters out test records from a database. These records have a foreign-keyed value that identifies test apps, e.g. a table with:
id name
1 TEST
2 ANOTHER_VALUE
3 SOMETHING_ELSE
This is joined onto the main data table, sensibly with a query like this:
SELECT *
FROM the_data
LEFT JOIN the_values ON the_data.some_value = the_values.id
WHERE the_values.name != 'TEST'
The gotcha is however, that this doesn’t work as you’d expect. If a record in “the_data” table doesn’t have a corresponding entry in “the_values” e.g. if “the_data.some_value” is 0 (as in my instance, it doesn’t need to have a corresponding value), then these entries are completely excluded. The solution (simple once you understand how it works…) is to check for NULL values too:
SELECT *
FROM the_data
LEFT JOIN the_values ON the_data.some_value = the_values.id
WHERE (the_values.name IS NULL OR the_values.name != 'TEST')