Jane's Technical Stuff

Monday, March 31, 2008

Girl Geek Dinner - Copywriting


Relly of PoppyCopy spoke at the most recent Brighton Girl Geek Dinner last week on the subject of "Personality, Pulling Power and Prizes: Why good copy is your new BFF". Copy-writing isn't something that makes up any element of my job, but is something that I felt was worth knowing about, for this blog, and for who knows what exciting future projects might come my way.

Relly produced some great takeaway material for us, which contains examples of different styles of writing, and includes a Webiblography of useful material. It mentions a few articles from copyblogger - the Copywriting 101:An Introduction to Copywriting one caught my eye. My key learning from Relly's talk was to be authentic in my writing, so to write like I'd talk I guess, without using vocabulary I wouldn't normally use.

Labels: , , ,

// posted by Jane @ 7:23 PM   save to del.icio.us

Comments:

Saturday, March 29, 2008

A yahoo pipe, some php and a flickr feed


Over on the JaneandRichard home page, we used to show a random image from our image archive. However, to add an image to the archive we needed to register it, and this we failed to do very often. As time went on I was putting photos less often on the JaneandRichard images page, and more often on flickr. So, I updated the front page to use a flickr badge based on my flickr feed. This wasn't ideal, as it didn't combine our output.

Previous home page

This morning I decided to do a bit of playing, and so produced a yahoo pipe which takes Richard's flickr RSS feed, and my one as an input and returns the most recent image. I then wrote some PHP (well took the Brighton Bloggers aggregated feed PHP actually which in turn was based on the RSS reader produced by Richard Kendall) and wrote out the RSS description within some javascript. This allows me to replace the flickr badge on the home page with an image based on the combined feed.

New home page

In order to make this more useful, I used a parameter feed to allow other images to be produced by the script. So, the code
<script type="text/javascript" src="http://jane.dallaway.com/services/getImageFromFlickrRss.php?feed=http://api.flickr.com/services/feeds/photos_friends.gne%3fuser_id=11369209@N00%26friends=0%26display_all=1%26lang=en-us%26format=rss_200"></script>
returns the most recent image added by any of my contacts. The feed parameter needs to have the flickr RSS URL encoded otherwise the script will truncate the output and nothing will be produced.

So here is the output from that script - the latest photo from my contacts:


Update:
There is some cacheing going on at the yahoo pipes end, and so the RSS feed from the pipe doesn't reflect the changes in real time, or as quickly as if you run the pipe manually.

Labels: , ,

// posted by Jane @ 11:52 AM   save to del.icio.us

Comments:

Thursday, March 27, 2008

Static Code Analysis


One of my colleagues and I are looking into tools for Static Code Analysis for C#. At the moment, we have the following tools on our list to investigate further:

Do any of my readers have any suggestions for other tools we should consider? If so, please leave me a comment with the name and any feedback.

Labels: , , ,

// posted by Jane @ 6:32 PM   save to del.icio.us

Comments:
I have used both FXCop and NDepend. I found FXCop is great, although you need to spend a bit of time customising it for your own requirements. Not exactly a suggestion for other tools, but at least you know one other person has used (and likes) a couple of things on your list :).
 

Remember The Milk Pro Upgrade


Last summer I posted about Remember The Milk. Well, here I am 6 months on and I'm still using it, constantly. If I think of something I add it via whichever interface is closest - web, mobile, sms via twitter - and I no longer have a reliance on scraps of paper, or a notebook with scribbles all over it. I think that it is the number of different ways to enter a task, update a task list, review what needs to be done that makes this tool so valuable to me. Especially seeing as how I have a laptop at work, a different laptop at home, I have 2 different mobile phones (one work, one personal), a notebook/log book for work stuff - keeping a list on any one of them just wouldn't work for me without me having to make notes somewhere else as well - I know, I've tried it before.

So, yesterday, I decided it was time to support them, so I upgraded to the pro membership. And it wasn't because I wanted the extra functionality (although I'm sure I'll make use of the iPhone/iPod Touch interface) but it was because I realised how much I rely on their service, and how much I'd miss it if it wasn't around. So, for $25 for a year, I figured it was worth it for the feel good factor of supporting them.

Labels:

// posted by Jane @ 2:08 PM   save to del.icio.us

Comments:

Wednesday, March 26, 2008

Defensive SQL Updates


One of my recent tasks, well before my month off anyway, was to upgrade a number of similar SQL Server 2005 databases to a new structure. The databases had all started off the same, and were going to end up the same, but had been subjected to a differing number of bug fixes and enhancements along the way.

If I was updating just one database I would have used the excellent Redgate SQL Compare (of which more in a future post) but as I had to update many then this would not have been the most reliable way.

Instead, I wrote defensive SQL, that is SQL which checks for impact before doing it. So, before adding a column for instance, it checks to see if that column exists, and only attempts to add it if it doesn't - thus preventing errors. The whole update script was wrapped in a Transaction, and by making use use of a variable @bError of type BIT to track any errors, the last statement could COMMIT or ROLLBACK the transaction as appropriate.

So, for example, to add a new column to a table, here is the script I used:
IF @bError = 0
BEGIN
  IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE Table_Name = 'MyTable' AND Column_Name = 'MyNewColumn')
  BEGIN

    ALTER TABLE MyTable ADD MyNewColumn INT NOT NULL

    IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE Table_Name = 'MyTable' AND Column_Name = 'MyNewColumn')
    BEGIN
      PRINT 'Error Adding column ColumnName to table MyTable'
      SET @bError = 1
    END
    ELSE
    BEGIN
      PRINT 'Added column ColumnName to table MyTable'
    END
  END
END


By checking for the column's existance after applying the change, I could determine if an error had occurred, and set the @bError flag accordingly. I used the Print statements to produce a log of exactly what stages had been carried out on each database, using the function DB_NAME() to output the name of the current database at the beginning of the log.

Labels: ,

// posted by Jane @ 9:37 AM   save to del.icio.us

Comments:

Thursday, March 20, 2008

Ideas and Learning project


One of the new initiatives at Madgex is the introduction of the Ideas and Learning project. This is a cross between the Google 20% initiative and the Pixar University initiative. Out Ideas and Learning project gives us 35 days per year (roughly 15% of our working time) to developing our own ideas and learning. That covers building prototypes of new ideas, learning about a new technology, trying out something that we've been meaning to attend to, or learning new soft skills.

Yesterday I attended two internal workshops. The first was an hour long session on "Stress Management" which covered both the physical and emotional responses to stress and how the body/brain hasn't evolved sufficiently to allow for different types of stresses to be handled in different ways - we're still hard wired to run away from woolly mammoths, so when we feel stressed our senses become more acute, our heart starts pumping, our blood goes to our legs so we can start running, and our brain gets less blood. We learnt a technique for meditation which I'll give a try to help focus the brain on the present, rather than it over analysing stuff.

The second was a session on "Zen and the craft of software development" which was a whistle stop tour through some history of development covering the different paradigms, comments vs documentation, problem solving and including lots of hints and tips for development.

Both of these sessions were useful, in very different ways, and I can see that I'm going to gain a lot from this new initiative.

Labels: ,

// posted by Jane @ 1:04 PM   save to del.icio.us

Comments:

Brighton Bloggers   This page is powered by Blogger. Isn't yours?   rss Sussex Digital - focusing on the Sussex digital community