Tagged: agile

Should we B&B software development?

My last post on the topic (Let’s not Travelodge software development) may have seemed anti-Lean/Agile. It’s actually the opposite! It’s because I’m so passionate about them that I wrote that post to try and get people thinking where we are going with all this. I used Travelodge as an example of Lean / Agile taken too far, and as I’ve hinted, I see this in my work occasionally… So what’s the answer? Not surprisingly, Lean and Agile, but from a different view.

As I hinted in that post, personally I’ll be doing B&B’s again, and it’s the answer in so many ways. How? Do you like the B&B in the above photo? You should – it’s rated the number one in Horsham, only gets 5* feedback on TripAdvisor and costs about the same as that Travelodge I stayed in! It’s only a few minutes out of Horsham, but it would easily be worth a cab fare extra.

If you follow the analogy back to Software, I’m “The Business”. I have a need, accommodation that I need to solve at a reasonable price. Given a choice in what seems to me an unknown field, I go with a brand but am disappointed as I find a product which has been BadAgiled out of existence to the “threshold of revolution” – i.e. it’s quality is just good enough to stop me cancelling the contract (hey – my ego’s at stake here).

This is where “The Real Business” and I split. I know I made a mistake and am not afraid to publicly talk about it, acknowledge it and learn from it. TRB though have a (probably quite large group) ego though, so they can’t admit that they were wrong – there’s so much at stake on the table… So, they do what Einstein defined as insanity – the same thing, expecting a different result. Sometimes they’ll try a different outsourcer to give the illusion of action, but they’ll still have the same process and flawed thinking in place so I don’t need to explain what will happen.

Back to our B&B’s – good one’s are mostly quite Lean and Agile, for the simple reason that they directly relate to the owners income, and that the owners generally want a reasonable lifestyle, which means not spending too much time running the B&B.

Enter a Lean / Agile process!

If you watch the way a good B&B works, they have developed their own systems, limit WIP (especially for breakfast), have good feedback loops and quite often have Information Radiators. Their processes are tailored for their establishment and aligned to their personal brand. Looking at the bedroom shot, you can see that the owner, house and brand are all aligned – it’s the truth.

Now, let’s remind ourselves of the TL equivalent. Is there any comparison? @JenniferSertl made a very good point regarding branding and process, namely that Bic and Mont Blanc could both use Agile / Lean successfully with their own brands, which is correct.

However, if we look at part of Travelodge’s Mission statement:

The reason that more people don’t stay in hotels is simple
– they just can’t find a good quality hotel where they want to
stay, at a price that’s right for them.

Travelodge’s objective is to make hotels available to everyone
by consistently offering our customers great value hotels where
they want to stay.

So to follow up the second paragraph, to me (totally subjective) that hotel was not great value. To be great value, would of been £40-50 and I’m sure they still could of made a profit. Given what you know now though about B&B’s in Horsham, would you really want to stay there?
NOTE: One thing I should note is that the staff at the Travelodge were very helpful and positive and really turned what could of been a horrible stay in to a tolerable one – that wasn’t due to them though, it was due to poorly gathered requirements, using a bad process to transform them in to a bad “architecture”, carefully nurtured by a total lack of feedback from staff and probably guests to form a distorted implementation of their brand. Sound familiar? ;-)

Finally, to answer Jennifer’s point re pens – I don’t have a problem with Bic making pens using Lean / Agile or any other process. What I do have a problem with is Parker making them L/A and allowing(?) the mechanism to distort their quality to those of Bic or even worse!

We’re All going on a Twitter Holiday

Twitter Holiday

So, the time has come where I’ve finally been “overloaded” by Twitter on many levels.

This is not a bad thing, it’s just a thing… So as a result, surprise, surprise: I’ll be going on a Twitter Holiday (not really with Sir Cliff Richard ;) for a number of reasons:

  • A real Holiday has actually “emerged” in my life – I’ve finished a contract and:
    • An Aussie Mate will be visiting us for a while
    • We’re going to Seville in Spain for a while with our US relations (one of whom speaks Spanish because she works at a community library in US)
    • I’m catching up with an Aussie Uni Buddy and his new “girlfriend” (sounds strange as we’re both getting near 50 ;) in France
  • DailyRiczWest is dead! As I recently tweeted, I was going to do a lot more with that, but now that Twitter killed ifttt.com, I can’t really be bothered, for the moment… Anyone who knows or has worked with me, should know that I can be a stubborn, sneaky and clever bastard, capable of working around the most entrenched and stubborn systems. Needless to say, Twitter have handed me a challenge which I thank them for – Namaste’ :-)
  • I’m getting tired of the “cognitive constraints” of 140 chars! But as a result of those chars, I want to start  blogging more – around the 1,400 char point – concise, yet clearly explained
  • I love the twitter debates, but I want to get personal! Again, this is more a reference to the restrictions of twitter – I’m quite happy to email people. I could Skype them, or even maybe meet them F2F! Not Tweeting will inspire me to progress some relationships…
  • I’ve just finished up “handover” for another contract and in that way, this feels like a natural extension of that, as I’m kind of doing a handover of my experience on Twitter
  • We’re (ie my wife and I) are going through an incredible period of change – moving from the most amazingly toxic street, where we lived (foolishly) for two years to a most amazingly positive one in a totally new county! This takes time to integrate…

Finally, and probably most importantly, I’m just over-filled with Twitter Information and People!

I mean this in a totally positive way. I have formed relationships which will be developed and have been exposed to so many very smart and aware people, that I’ve yet to catch up with. And therein lies the problem – I can’t catch up with them by reading their tweets! I’ll meet some of them and read much material by them or recommended by them…

Another way to put it is that I need some reflection time from the firehose. During the past (really year or so as although I “joined” in 2009, I didn’t do much for a year or so…) I have gathered just so much information!

  • 4,444 tweets, probably a lot of which are links to articles
  • A lot (~1k?) of favourites, which I used when Twitter weren’t API Fascists to dump to text files
  • Other information related to tweets, which I have traced and tweeted

Probably, more importantly, I have formed what I feel are real connections with people – sharing my highs & lows. Having arguments, disagreements and agreements (mostly :) whom I’d like to acknowledge and encourage you to check out and maybe follow:

  • Jennifer Sertl @JenniferSertl – We just connect! I’m looking forward to meeting her some day (probably at CultureCon London 2013 :) Oh – what does she do? Strategy, Leadership and the Soul: Resilience, Responsiveness and Reflection for a Global Economy – we obviously need people like her!
  • Bob Marshall @flowchainsensei – sometimes we think the same, sometimes different. I like challenging him and having a good ‘ol discussion / debate / duke out (:) – hopefully catch up F2F @ XTC…
  • My Anonymous Friend who would probably have to kill you if you knew who he was ;-) We have so many good discussions that are not on Twitter, but should be, even if in censored form or relayed via me… You obviously know who you are – and who everyone else is ;-)
  • Alex Ley @AlexEvade – worked with him for a bit – you should check out his latest project : http://www.nerdability.com
  • tom_gall @tom_gall – Originally followed because he had a NeXT logo as his avatar – must admit I’m a bit dissapointed that it’s still not that, but he’s definitely worth following…
  • Tony DaSilva @Bulldozer0 – always great stuff – we like Control Theory ;-)
  • Andrea Chiou @andreachiou – puppy person and GREAT agilist
  • Jim Benson @ourfounder – do I really need to introduce him? no…
  • Scott Amber @scottwambler – do I really need to introduce him? no…
  • Grady Booch @Grady_Booch – do I really need to introduce him? no…
  • Ron Jeffries @RonJeffries – Never really been able to figure out who this guy is ;-) …
  • Peter Vander Auwera @petervan – I call him “The Banker”. But I mean that in a positive way – many good tweets
  • Tom Graves @tetradian – strangely enough, I have never really “twalked” with him. Probably because we think quite closely on the issues he tweets about
  • Ben Wilcock @benbravo73 – a “SOA Thinker” – Never met, but I found out about him when I worked at Glue / Reply. Good tweets
  • Ruth Malan @ruthmalan – now that Tom Gall has forsaken his NeXT Avatar, Ruth now has the best One!- we’re pretty aligned…
  • Phil Nash @phil_nash – met @ XTC – does interesting stuff
  • Dave Snowden @snowded– do I really need to introduce him? no, yes? I’ve only recently “really discovered” him, and he makes so much sense!
  • Byron Conway @aricochet – Recoveering Scientist – tweets some very broad and amazing stuff
  • Dan Mezick @DanMezick – was introduced recently – the man behind #CultureCon2012 and hopefully the one also behind #CultureCon 2013 which will be in London!
  • John Wenger @JohnQShift – hmm… hard to describe – just follow him! :-)
  • Bernd Nurnberger @CoCreatr – recently found out about him via #CultureCon2012 and an all-round interesting guy
  • Paul Klipp @agileactivist – Heard of Kanbanery? he’s that, and a lot more, including the ACE Conference, which I’ll be going to next year
  • Chris Ford @ctford – Saw him at a London Clojurians meeting. Music, Clojure – what’s not to like about this guy?
  • Ari-Pekka Skarp @apskarp – A mysterious Finn. But then again, which Finn’s aren’t mysterious? ;-)
  • Dave O’Hara @David_A_Ohara – hey – I’ve worked with Dave and he’s brilliant – you’ll be lucky if he starts blogging one day about what he really does – apart from check in to locations and listen to music ;-)
  • Richard Veryard @richardveryard – met at BCS event, works for CBDI and has some interesting EA stuff to say
  • Mark Pesce @mpesce – do I really need to introduce him? no? yes? Apparently has some sort of Secret Project – I suppose we’ll find out about it some time…
  • Ross Dawson @rossdawson – futurist and maker of many cool diagrams…
  • Sleepy Fox @sleepyfox – met at XTC – again, interesting
  • Sit At The Table @SitAtTheTable – so go sit at the table with her! ;-)
  • Rasperry Pi @Raspberry_Pi – do I really need to introduce them? NO! Yes, they are the one and ONLY – follow them if you don’t already…
  • Marcus du Sautoy @MarcusduSautoy – do I really need to introduce him? Yes? OK, if you’re outside of the UK, this guy is a maths legend…

Finally, to repeat my BlogRoll, here’s some blogs you may want to follow (that are not already mentioned above) :

So does that mean I’m disconnecting myself from the world? Hell NO! I’ll be going to XTC’s when I can. Probably also London Clojurians if timing is OK, ACE next year and any other things that are bought to my attention…

Finally, so you want to contact me? The best bet is to LinkIn with me at http://www.linkedin.com/in/rwest. From there, we can work to email / phone / video … – whatever is necessary…

Let’s not Travelodge software development

20120918-190734.jpgAs I tweeted last night, I’m currently staying at the Travelodge for some business. I must admit that I have fond memories of it as a child. Well, there’s another childhood perception blown away! Or not, as it was 40 years ago and I’d like to think they really were better then.

Anyway, to now when I checked in. The first thing that hit me was the smell! It was kind of like mouldy carpet mixed with cheap perfume… I went to the front desk and asked for them to check the room and was told it was the “Travelodge Smell” and perfectly normal, so stayed there. The funny thing was that I managed to get another room today and met the cleaner. I asked her not to “Travelodge Smell” my room (which now doesn’t smell i.e. is quite normal :) – she said no problems and remarked that it smelt like “Old People’s Home” to her anyway. How did they get it so wrong?

So, to the main subject, which is software and process. When I woke in the morning I was thinking how they must of worked out the absolute minimum that people would tolerate: soap that was mostly not soap, toilet paper that was cheaper than cheap, minimum cheap furniture and shelves made from MDF with the tackiest faux wood grain pattern plastic veneer…

THEN IT HIT ME! This was an Lean / Agile hotel room! The customer was not me, it was a corporation that wanted to maximise profit. The only thing they cared about was that I didn’t walk out, but couldn’t give a crap if I enjoyed my stay. How could you in a room like this? Talking with a colleague who was a local about this, he remarked the this place had just had a fit-out, which would explain the amazing space in the rooms. They were built for a previous era, but that had all been rationalised in to a cheap, sterile “sleeping place”. Unfortunately for them, I’ll never book Travelodge again – I normally stay at B&B’s, but fell for a brand that probably decayed a decade or more ago.

So this is mostly what I see in my work – things going to the lowest bidder, supposedly expending the minimal possible effort (but that’s a false economy) to achieve the minimal necessary solution (that’s usually less than adequate) in the minimal time (but that either slips or crucial features are thrown out) with the maximum quality (yeah, right!). But it’s not bad enough for most people to leave whoever it is. They tolerate it because the “competitors” probably have similar crap anyway.

After this rather extensive but passionate rant, I ask the question : “Where are the Quality Hotels in Software ?” What are the Mandarin’s, Four Seasons, Andaz, Armani, Bulgari and Park Hyatt? Whereas you can easily find quality hotels the world over, can we do the same for Software? Apart from Apple, who else comes to mind for quality software? Yes, there are other places like the good ‘ol Aussie Atlassian, but it’s a struggle… Most software for brands is average and probably heading towards Travelodge – is that what we really want?

PS I’m well aware of Agile / Lean practices in theory, but I’m commenting on the reality. Your experience may differ and more power to you if it does! ;-)

Pair Programming considered harmful, for some…

So as I recently tweeted, I’ve just been re-watching Susan Cain’s “The power of introverts” and I’ve had a bit of a revelation about Pair Programming. I must admit that I’ve always had doubts about it…

Note that I don’t have a problem with collaboration. It’s just this Nazi type dictate that we must always “Pair Program” and it’s “just so fantastic” and if you “don’t get pair programming, then you’re an idiot” never really sat well with me. Well, maybe for some… I’ve never had that experience, but I have had many wonderful collaborations. As for me, any activity has a Yin / Yang balance to it. There’s the Yin internal, reflective portion and then there’s the Yang, external active portion. There is no good or bad, but I personally believe that as Taoist (& Buddhist) philosophy state, “The trick is in the balance”. There is no absolute right or wrong…

One of the things that Susan mentions is that between 1/3 – 1/2 of people are Introverted, which I obviously am (to me :). It’s not that simple though – if you met me at a party, you’d probably think I was an extrovert as I do enjoy socialising, but just not too much. If you give me a choice, I’d much prefer to program / design / architect by myself and choose my interaction points. I actually think this is a good thing as extroverts can fall in to the trap of looking at “all the pretty baubles” and not getting anything done! When combined with Introverts who won’t disturb them, it actually enables them to “do what they do”.

One of the concepts I’ve always found useful and represents a compromise is “pair check-in”. So rather than pair program, you interact when necessary and then as you check in, you do a diff and then talk someone through it – I used to joke that most of the time, the “other person” could be a cardboard cutout as the mere process of talking through what you’ve changed will often surface problems, issues, etc…

Finally, to finish up & quote Susan: “Stop the madness for constant groupwork!” aka Pair Programming :-)

DailyRiczWest – behind the scenes v0.75

Ralph the News DogFirstly, let me introduce “Ralph the News Dog” (left) who replaces the generic cartoon I was using. If you follow me on Twitter, you’ll know that he passed away on the weekend, so I thought this would be a fitting tribute and better image to use. That shot was actually taken when he was 5, almost 5 years ago when we had not been in the UK for long and were living up in the Midlands… Anyway, to the code!

No major structural updates – they are coming… I’m well aware that I need to do some refactoring, but have not done it as the code fairly comfortably fits on a (slightly messy) page

use File::Copy;
use Time::Local;

$version = "0.75"; # RIP Ralphy

# Set up the Base Directories and files
$ifttt            = "/Users/rwest/Dropbox/ifttt";           # Location of If This Then That
$ifttt_favourites = "$ifttt/favourites.txt";
$twitter          = "/Users/rwest/Dropbox/Public/Twitter";  # Location of Public Twitter directory
$templates        = "$twitter/templates";

# Set up Date Strings
# Array of month strings for converting a month number in to a string
@month_text = qw( jan feb mar apr may jun jul aug sep oct nov dec );
# Get information for the day before this is invoked by subtracting seconds: 24h * 60m * 60s
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = (localtime(time - (24 * 60 * 60)));
$month = $month_text[$mon]; # Convert the month in to text from a number
$year += 1900;              # Perl Years are based from 1900, so we have to add this to get a real one

# Set up date based directories
$twitter_year = "$twitter/$year";                   # Twitter & Year directory
$twitter_year_month = "$twitter_year/$month";       # Twitter, Year & Month directory
# If the Twitter Year directory doesn't exist, make it
unless (-d $twitter_year)       { mkdir $twitter_year or die "Unable to create $twitter_year\n"};
unless (-d $twitter_year_month) { mkdir $twitter_year_month or die "Unable to create $twitter_year_month\n"};

# Assemble the String Date of form XX mon YEAR
$twitter_date = "$mday $month, $year";
print "DailyRiczWestDate : ", $twitter_date;

chdir("$twitter_year_month"); # Process in Year and Month directory under "Twitter"

# Assemble header
copy("$templates/header1.html", "header.html") or die "$templates/header1.html cannot be copied to $twitter_year_month";
open (HEADER, ">> header.html") or die ("Cannot Append to header.html - after header1.html");
print HEADER $twitter_date; close(HEADER);
system("cat $templates/header2.html >> header.html");
open (HEADER, ">> header.html") or die ("Cannot Append to header.html - after header2.html");
print HEADER $twitter_date; close(HEADER);
system("cat $templates/header3.html >> header.html");
open (HEADER, ">> header.html") or die ("Cannot Append to header.html - after header3.html");
print HEADER $version; close(HEADER);
system("cat $templates/header4.html >> header.html");

# Process Body
copy($ifttt_favourites, "favourites.html") or die "$ifttt_favourites cannot be copied to $twitter_year_month";

open(FAVOURITES,"< favourites.html") or die("Cannot Read favourites.html");
open(BODY,"> body.html")             or die("Cannot Write body.html");

# Replace *BR* with <br> because ifttt will not pass through <br>
while (<FAVOURITES>) {
    s/\*BR\*/<br>/;
    print BODY;
}

close BODY; close FAVOURITES;

# Assemble Daily
system("cat header.html body.html $templates/footer.html > daily-$mday.html");
system("rm header.html favourites.html body.html");
$twodig_year = $year-2000;
system("mv $ifttt_favourites $ifttt/archive/favourites-$mday$month$twodig_year.txt");

There are a few new bits I’ve added here:

  • General rearrangement of initialisations in to more logical groupings
  • Addition of some more comments (always important in Perl!)
  • Handling any date rollover properly, i.e.
    • Computing the day before properly (1d = 24h * 60m * 60s) and then creating the date from that
    • Checking that directories exist and creating them if not
  • Finally, archiving the favourites.txt properly (I should probably structure this the same as the archives for the HTML pages, that way I Won’t be Repeating Myself ;-)

The next thing will be to do some basic structuring in Perl, which I haven’t done that much of as I don’t use it that often and usually for something quick and dirty. Seeing as my plans are much bigger than just what you’re seeing at the moment I’ll need this for the next major phase which will get me to the stage of looking like a real “online newspaper”

DailyRiczWest – behind the scenes v0.6

Newspaper MegaphoneHuoston – we have full automation! :-)

At last, I’ve bitten the bullet and actually automated the whole thing (for this month at least – more on that later). Up until now, I’ve been manually tweaking page info etc… but now I’ve broken the header in to 4 html fragments:

header1.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>

<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>DailyRiczWest -

header2.html

</title></head><body>
<big><big><span style="font-family: Arial Black;"></span></big></big>
<table style="text-align: left; width: 100%;" border="0" cellpadding="0" cellspacing="5">
<tbody>
<tr>
<td style="vertical-align: top; height: 1px; width: 1px;"><img style="width: 70px; height: 70px;" src="../../images/newspaperMegaphone.jpg" alt=""></td>
<td style="vertical-align: top;"><big><big><span style="font-family: Arial Black;">Daily</span></big></big><big><big><span style="font-family: Arial Black;">RiczWest</span></big></big><span style="font-family: Helvetica,Arial,sans-serif;"> for

header3.html

</span><br>
<span style="font-family: Helvetica,Arial,sans-serif;">=&gt; not
your
ordinary daily feed - version

header4.html

<br>
<small><span style="font-weight: bold;">NOTE: </span>Will be
continually evolving, i.e. improving quite quickly</small></span></td>
</tr>
</tbody>
</table>
<span style="font-family: Helvetica,Arial,sans-serif;"></span>

Ah yes, takes me back to the “good old days”, pre frameworks and a whole bunch of other crap ;-)

Anyway, to the code, which is starting to get a bit messy now, with the actual maintenance and archiving of files, along with the fully automated generation. It will definitely be time for some GitHubbing and refactoring, but for the mean time, here it is in all it’s glory (not quite ;)

#!/usr/bin/perl -w
# use strict;

# IMPORTANT NOTE: This WILL NOT handle month & year rollovers yet!

use File::Copy;
use Time::Local;

$version = "0.6";

$ifttt = "/Users/rwest/Dropbox/ifttt";
$ifttt_favourites = "$ifttt/favourites.txt";
$templates = "../../templates";

@month_text = qw( jan feb mar apr may jun jul aug sep oct nov dec );
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$month = $month_text[$mon];
$year += 1900;
$twitter_month = "/Users/rwest/Dropbox/Public/Twitter/2012/$month";
$daily_day = $mday-1;
$twitter_date = "$daily_day $month, $year";
print "DailyRiczWestDate : ", $twitter_date;

chdir("$twitter_month"); # Process in month directory

# Assemble header
copy("$templates/header1.html", "header.html") or die "$templates/header1.html cannot be copied to $twitter_month";
open (HEADER, ">> header.html") or die ("Cannot Append to header.html - after header1.html");
print HEADER $twitter_date; close(HEADER);
system("cat $templates/header2.html >> header.html");
open (HEADER, ">> header.html") or die ("Cannot Append to header.html - after header2.html");
print HEADER $twitter_date; close(HEADER);
system("cat $templates/header3.html >> header.html");
open (HEADER, ">> header.html") or die ("Cannot Append to header.html - after header3.html");
print HEADER $version; close(HEADER);
system("cat $templates/header4.html >> header.html");

# Process Body
copy($ifttt_favourites, "favourites.html") or die "$ifttt_favourites cannot be copied to $twitter_month";

open(FAVOURITES,"< favourites.html") or die("Cannot Read favourites.html");
open(BODY,"> body.html") or die("Cannot Write body.html");

# Replace *BR* with <br> because ifttt will not pass through <br>
while (<FAVOURITES>) {
    s/\*BR\*/<br>/;
    print BODY;
}

close BODY; close FAVOURITES;

# Assemble Daily
system("cat header.html body.html $templates/footer.html > daily-$daily_day.html");
system("rm header.html favourites.html body.html");
system("mv $ifttt_favourites $ifttt/archive/favourites-$daily_day$month$year.txt");

Finally I have something that totally automatically:

  • Assembles the Page: Header (with date & version), Body and Footer
  • Archives the favourites.txt file should I need it in it’s raw form
  • Is designed to be invoked from cron on the day after the favorites are gathered

It’s far from ideal, as the code is no longer so clear and it won’t work properly when the month and year change, but I have 3 days to fix the month problem and 4 months to fix the year one ;-)

DailyRiczWest – behind the scenes v0.5

Newspaper MegaphoneWhew! Bit of a Perl coding session, best summed up by by my twitter comment:

Apologies in advance to “The Ladies” but Perl is like a Burlesque Dancer. Very Sexy and when she does her stuff, you just have to admire ;-)

It’s been a while (probably 1y+) since I’ve coded Perl and it just reminds me what a fickle language that it is! After searching probably 20+ various google searches, I’ve finally figured it all out:

#!/usr/bin/perl -w
# use strict;

use File::Copy;

$ifttt_favourites = ".../Dropbox/ifttt/favourites.txt";
$twitter_month = ".../Dropbox/Public/Twitter/2012/apr";
$templates = "../../templates";

chdir("$twitter_month");
copy($ifttt_favourites, "body.html") or die "$ifttt_favourites cannot be copied to $twitter_month";

open(BODY,"< body.html") or die("Cannot Read body.html");
open(NEW_BODY,"> newbody.html") or die("Cannot Write newbody.html");

while (<BODY>) {
    s/\*BR\*/<br>/;
    print NEW_BODY;
}

close NEW_BODY;
close BODY;

system("cat $templates/header.html newbody.html $templates/footer.html > daily.html");
system("rm body.html newbody.html");

Seems so simple now, but there is so much “noise” about how to code Perl to do even simple tasks like search and replace that it’s a bit mind boggling!

Anyway, I’m almost there with the “automation” (the only thing I had to do was manually edit the Page Title Properties – and that was only because I’m running out of time). I now have a “program” that I can extend to automatically create the DailyRiczWest. The thing that really strikes me about Perl (yet again) is it’s awesome simplicity – it’s just so much work to reach that stage when you’re effectively a novice… Any comment’s on my code are welcome and I’ll soon put it up on GitHub when I have some time, but meanwhile, this at least makes generating my “Papers” a bit simpler.

How this will fit in with Twitter’s “grand new control-oriented plan” remains to be seen, but at the end of the day, I’m just getting a feed from If This Then That, while they are allowed to provide it… How this will fare under the new Twitter API Nazi Regime remains to be seen…

DailyRiczWest – behind the scenes v0.4

Newspaper MegaphoneDue to extraordinary circumstances (i.e. the hottest day this year) I didn’t quite get as far as I wanted with this release, but I did generate it from the command line in UNIX. I have 2 files under templates:

  • header.html
  • footer.html

and generated this file with the UNIX commands

  • sed -e 's/\*BR\*/\<br\>/g'
    ../../../../ifttt/favourites.txt > body.html

– this is the “Stream EDitor” which can perform various editing tricks from the command line. In this case, it’s doing a global search and replace for the string “*BR*” and replacing it with “<br>” to get the breaks in the HTML for reasonable formatting

  • cat ../../templates/header.html body.html
    ../../templates/footer.html > daily-18.html

– which basically ConcATenates the header, body and footer files in to one file

  • rm body.html

– that deletes the intermediate file

so there was no real manual editing, and I could obviously put this in a shell script with the above 3 commands.

DailyRiczWest – behind the scenes v0.3

Newspaper MegaphoneNot really much change for this version, so I thought I’d take a step back from the detail. As mentioned originally, apart from solving a problem for me, this is an experiment in “Social Coding”. So what do I mean by this? I’m certainly not up to the standards of the “Raspberry Pi Teenagers” who were in The Future of Programming – hint: it’s not a new IDE! but this is an experiment in my own context with the following overall objectives:

  • Solve my immediate need for a totally customisable personal paper
  • Get in to the habit of blogging more than once every 1 or so weeks
  • Play around with some social / web tech
  • Learn whatever else I can and have fun!

Oh – the “programming change” – that was pretty simple – I just used *br* instead of <br> in the template

<hr><br>
@{{UserName}} : {{Text}}*br*<br>
{{CreatedAt}} : <a href=”{{LinkToTweet}}”>
Link to Tweet</a> <a href=”{{FirstLinkUrl}}”>
Link to Article</a>*br*<br>

and did a search/replace on the generated file to put <br>’s in. So far, I’ve been “producing” the paper manually using KompoZer and for now the template is fairly sorted, so it’s time for some programming to get this puppy automated! Luckily, it’s the weekend…

DailyRiczWest – behind the scenes v0.2

Newspaper MegaphoneToday I’ve changed the IFTTT rule so it outputs HTML and can hopefully just add a header and footer to almost automatically get a page. Or that was the plan…

IFTTT Uses a <br> to indicate a new line. Of course, if you know HTML, then you’ll know it’s used for the same purpose in that. In v0.1, I had to manually put in the newlines using an HTML editor – BTW KompoZer is the best free, cross platform editor I know of. So, I thought “I’ll outsmart IFTTT and use <br />” which is really the same thing, giving me the content of:

<hr><br>
@{{UserName}} : {{Text}}<br /><br>
{{CreatedAt}} : <a href=”{{LinkToTweet}}”>
Link to Tweet</a> <a href=”{{FirstLinkUrl}}”>
Link to Article</a><br /><br>

Nope, it was too smart and realised that was the same thing, so I just ended up with double newlines! Back to manual edits…

As usual, I have an idea to get around that, so I’ll give it a go in v0.3