<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss version="2.0"> 
  <channel> 
    <title>AddedBytes.com Blog (formerly ILoveJackDaniels.com)</title> 
    <link>http://www.addedbytes.com/</link> 
    <description>AddedBytes.com, formerly ILoveJackDaniels.com, is the online playground of Dave Child, an ecommerce manager and web developer from Brighton, on the south coast of the UK.</description> 
    <language>en-us</language> 
    <copyright>Copyright 2003 addedbytes.com</copyright> 
    <managingEditor>dave@addedbytes.com</managingEditor> 
    <webMaster>dave@addedbytes.com</webMaster> 
    <generator>bBlog 0.6</generator> 
    <docs>http://blogs.law.harvard.edu/tech/rss</docs> 
	<!-- ckey="76C662BB" -->

    <image><link>http://www.addedbytes.com/</link><url>http://www.addedbytes.com/images/v7/feed-logo.png</url><title>AddedBytes.com</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Ilovejackdanielsblog" type="application/rss+xml" /><item> 
      <title>Blogging in Business</title> 
      <link>http://www.addedbytes.com/blog/blogging-in-business/</link> 
	  <comments>http://www.addedbytes.com/blog/blogging-in-business/comments/</comments>
      <description>&lt;p&gt;When I started at &lt;a href="http://www.activeparity.co.uk/"&gt;Active Parity&lt;/a&gt;, one of the first things I wanted to do was help the company to get a blog started. They're a great way to show off your knowledge and communicate with clients. My first post over on the new blog is up, and it's on exactly that subject: &lt;a href="http://www.activeparity.co.uk/blog/2008/11/blogging-in-business/"&gt;Blogging in Business&lt;/a&gt; - specifically, why businesses should blog and what the potential downsides are. The first of many posts over there, I'm sure!&lt;/p&gt;</description> 
      <author>dave@addedbytes.com</author> 
      <pubDate>Fri, 14 Nov 2008 10:15:44 GMT</pubDate> 
      <guid>http://www.addedbytes.com/blog/blogging-in-business/</guid> 
    </item> 
    <item> 
      <title>Personal Development: To Do</title> 
      <link>http://www.addedbytes.com/blog/personal-development-to-do/</link> 
	  <comments>http://www.addedbytes.com/blog/personal-development-to-do/comments/</comments>
      <description>&lt;p&gt;On Hacker News, &lt;a href="http://news.ycombinator.com/item?id=282299"&gt;ambition posted&lt;/a&gt; a to-do list inspired by / taken from this &lt;a href="http://gist.github.com/6443"&gt;excellent bit of advice&lt;/a&gt; from &lt;a href="http://errtheblog.com/"&gt;Chris Wanstrath&lt;/a&gt;. Which got me thinking about what I want to work on and with in my spare time.&lt;/p&gt;

&lt;p&gt;I've been meaning to organise my side-projects better. Like everyone else, I have lots of ideas and little time to make anything of them. I have a folder packed with projects at 95% completion, sitting there unloved because I got distracted, or found something better to use.&lt;/p&gt;

&lt;p&gt;The problem with that is that taking projects to 95% is ultimately demotivating. It breeds guilt, and that's not helpful. And a project at 95% doesn't pay you back for the time you put in to it. You eventually need to release something if you don't want to end up looking back and seeing missed opportunities and wasted time.&lt;/p&gt;

&lt;p&gt;In addition to a collection of projects on the go and ideas, there are technical skills I want to develop. I'm learning Python, and Linux server administration. I'm interested in looking into Objective-C and Cocoa. jQuery is great but I need more time with it. My "Dave! Play with PostgreSQL!" post-it is faded it's been on my wall for so long. And I need to stay sharp with the languages and technologies I use day-to-day.&lt;/p&gt;

&lt;p&gt;Some fat needs to be trimmed.&lt;/p&gt;

&lt;p&gt;I need to leave time for new things, too. Stuff I've not heard of yet. I'm always going to be distracted by shiny new technology. I think that's a good thing. But I want time to experiment and to tinker. If I earmark all my time for projects, I'm not going to suddenly lose interest in web technologies and tools. No, I'd start cutting into time I've promised to other things. Voila - the guilt's back and the schedule's shot. Back to square one.&lt;/p&gt;

&lt;p&gt;So I've spent some time thinking about what I really want to get out of the time I spend on personal projects, and come up with a to-do list. I expect this to change over time, and while I don't expect for a second that you, the reader, will have the same goals or that this list itself will be useful to you, I hope if you're in a similar position it helps you to get a handle on things and get back to spending your time doing what you enjoy.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Keep on blogging!&lt;/li&gt;&lt;li&gt;Keep on making cheat sheets!&lt;/li&gt;&lt;li&gt;Move AddedBytes (set up server).&lt;/li&gt;&lt;li&gt;Thin out project folder and pick 2 to work on until finished.&lt;/li&gt;&lt;li&gt;Write a web service.&lt;/li&gt;&lt;li&gt;Write SVN Statistics app in Python (learn Python).&lt;/li&gt;&lt;li&gt;Rewrite site management VB app in Python (learn Python).&lt;/li&gt;&lt;li&gt;Learn Objective-C and Cocoa by writing a Useful Small Mac App (decide on what app!).&lt;/li&gt;&lt;li&gt;Learn a new PHP framework.&lt;/li&gt;&lt;li&gt;Get involved in an open source project.&lt;/li&gt;&lt;li&gt;Update and release more code from AddedBytes.com under open source license.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;That should keep me going for a while. Next, I need to flesh out some of those ideas and work out how much time I can put into them.&lt;/p&gt;</description> 
      <author>dave@addedbytes.com</author> 
      <pubDate>Thu, 21 Aug 2008 12:34:54 GMT</pubDate> 
      <guid>http://www.addedbytes.com/blog/personal-development-to-do/</guid> 
    </item> 
    <item> 
      <title>Readability Code Open Sourced</title> 
      <link>http://www.addedbytes.com/blog/readability-code-open-sourced/</link> 
	  <comments>http://www.addedbytes.com/blog/readability-code-open-sourced/comments/</comments>
      <description>&lt;p&gt;In July 2004 I wrote some code to calculate the readability of text using the most common algorithms available (&lt;a href="http://www.addedbytes.com/php/flesch-kincaid-function/"&gt;Flesch-Kincaid&lt;/a&gt; and &lt;a href="http://www.addedbytes.com/php/gunning-fog-function/"&gt;Gunning-Fog&lt;/a&gt;). The code hasn't aged well, and had many flaws, especially when it came to the subject of syllable counting.&lt;p&gt;

&lt;p&gt;Syllable counting is a tricky prospect. Consider the following sentence, for example: "I moped about, hopeful that my moped would be back on the highway soon". Sound innocuous? There's a pair of homographs in there (two words, spelled the same, that sound different) - and these have different syllable counts depending on which of the two words you mean. Words can be almost identical, with the same order and number of consonants and vowels (and it's that order you generally use to calculate syllable numbers) - "sired" has one syllable, while "sided" has two. Throw in prefixes, suffixes, plurals and compound words and you've got yourself a challenge.&lt;/p&gt;

&lt;p&gt;Syllable counting is a minefield, with a small set of rules and a massive set of exceptions to handle.&lt;/p&gt;

&lt;p&gt;That said, I've spent some time working through a set of test data and have come up with a small set of rules to take on the task. It helped tremendously having the work of Greg Fast (creator of Perl module Lingua::EN::Syllables) handy for reference, and setting up a decent set of unit tests allowed me to experiement with different rules until I found a set that works. So far. I expect to find more and more exceptions as time goes on, and hopefully the rules can be expanded to account for them.&lt;/p&gt;

&lt;p&gt;It wasn't just the syllable counting that was bad. The code was inefficient, disorganised, and incapable of handling anything unpredictable (every extra space counted as an extra word, for example). There were lines in there that didn't make any sense. And I hadn't documented anything, so couldn't tell you why I'd added them in the first place. Oh to be that young and inexperienced again ...&lt;/p&gt;

&lt;p&gt;So, as with the other releases in the last few weeks, I went back and rewrote the code properly. The new and improved version has been released as a Google Code project by the name of &lt;a href="http://code.google.com/p/php-text-statistics/"&gt;PHP Text Statistics&lt;/a&gt;. It's released (as with the &lt;a href="http://code.google.com/p/modem-emulator/"&gt;other&lt;/a&gt; &lt;a href="http://www.addedbytes.com/blog/email-address-validation-v2/"&gt;projects&lt;/a&gt; I've set free recently) under a New BSD License.&lt;/p&gt;

&lt;h3&gt;TextStatistics.php&lt;/h3&gt;

&lt;p&gt;It consists (so far) of a single class that will tell you various things about the text you feed it:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;String length&lt;/li&gt;&lt;li&gt;Letter count&lt;/li&gt;&lt;li&gt;Syllable count&lt;/li&gt;&lt;li&gt;Sentence count&lt;/li&gt;&lt;li&gt;Average words per sentence&lt;/li&gt;&lt;li&gt;Average syllables per word&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;It will also calculate the readability of the text you enter according to the 6 known algorithms (links go to Wikipedia):&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Flesch-Kincaid_Readability_Test"&gt;Flesch Kincaid Reading Ease&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Flesch-Kincaid_Readability_Test"&gt;Flesch Kincaid Grade Level&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Gunning_fog_index"&gt;Gunning Fog Score&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Coleman-Liau_Index"&gt;Coleman-Liau Index&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/SMOG_Index"&gt;SMOG Index&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Automated_Readability_Index"&gt;Automated Reability Index&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;TextStatistics.php4&lt;/h3&gt;

&lt;p&gt;There is also a PHP4 compatible version of the code. At the time of writing, it returns the correct scores for test data, though given PHP4's decline and the rise of PHP5, this version may not remain as current as the previous file.&lt;/p&gt;

&lt;h3&gt;tests/&lt;/h3&gt;

&lt;p&gt;Next thing to be aware of is the unit tests included in the project. There's no easy way to check your calculations are correct, unless you have a set of verified numbers to compare them against. So, I put together (so far) three files with a variety of different tests for the code. These tests should be run with &lt;a href="http://www.phpunit.de/"&gt;PHPUnit&lt;/a&gt; and at the time of writing they all pass (which means there's not enough of them yet).&lt;/p&gt;

&lt;h3&gt;tests/TextStatisticsTest.php&lt;/h3&gt;

&lt;p&gt;The basic unit test class lists a large selection of words and compares their calculated syllable count with their actual syllable count (worked out the old fashioned way). It includes a variety of tests to ensure sentence counting and word counting both work as intended. It also includes a small selection of sentences, for which readability scores have been calculated by hand, and checks that the class returns the correct scores for these items.&lt;/p&gt;

&lt;h3&gt;tests/TextStatisticsKiplingIf.php&lt;/h3&gt;

&lt;p&gt;Rudyard Kipling's &lt;em&gt;If&lt;/em&gt; is, aside from a brilliant piece of inspiring poetry, one long sentence comprised of lots and lots of short words (take a look - impressive how few of the words are multi-syllabic). This file contains a selection of tests to run against &lt;em&gt;If&lt;/em&gt;. It checks all of the words of the poem have their syllable count correctly calculated, and that all of the readability scores are correctly calculated, by matching the calculated scores against hand-calculated numbers.&lt;/p&gt;

&lt;h3&gt;tests/TextStatisticsMelvilleMobyDick.php&lt;/h3&gt;

&lt;p&gt;Herman Melville's &lt;em&gt;Moby Dick&lt;/em&gt; is up next (well, the first paragraph is - I'm not prepared to count, by hand, the number of syllables in the entire book). Like &lt;em&gt;If&lt;/em&gt;, it is (I believe) in the public domain, so can be used for this sort of purpose without complications. It's also a brilliant read. This file contains a selection of tests to run against the first paragraph of &lt;em&gt;Moby Dick&lt;/em&gt;. It checks all of the words of the passage have their syllable count correctly calculated, and that all of the readability scores are correctly calculated, by matching the calculated scores against hand-calculated numbers.&lt;/p&gt;

&lt;h3&gt;Get Involved!&lt;/h3&gt;

&lt;p&gt;This project can benefit from the involvement of people in many ways. Initially, the most helpful thing anyone can do is find words whose syllable count is not correctly calculated by the script and add a new test for that word. There are going to be a lot out there (especially compound words, like "shoreline", and odd words that are not pronounced according to normal rules, like "simile").&lt;/p&gt;

&lt;p&gt;The class could be expanded to give more information about text - like letter frequencies, word and phrase freqencies (useful for SEO) and unique word count, among other things. I've made a start on making the code multi-byte character set safe, but there's lots more to do there too.&lt;/p&gt;

&lt;p&gt;The really brave could add more test text, too. Paragraphs of (public domain) text provide an excellent way to check the tool is working as it should. I'd suggest using either the Kipling or Melville file as a template to work from, and prepare for a boring few hours. You get a great feeling of satisfaction at the end, though, when the whole thing is done!&lt;/p&gt;

&lt;p&gt;There's a &lt;a href="http://groups.google.co.uk/group/php-text-statistics/"&gt;discussion group&lt;/a&gt; for ... well, discussion. Suggestions, comments and feedback all welcome. If you would like to &lt;a href="http://code.google.com/p/php-text-statistics/"&gt;get involved in this project&lt;/a&gt;, start there (or &lt;a href="mailto:dave@addedbytes.com"&gt;email me&lt;/a&gt;), or grab a copy of the code from the SVN repository on Google Code.&lt;/p&gt;</description> 
      <author>dave@addedbytes.com</author> 
      <pubDate>Fri, 01 Aug 2008 12:01:00 GMT</pubDate> 
      <guid>http://www.addedbytes.com/blog/readability-code-open-sourced/</guid> 
    </item> 
    <item> 
      <title>Cheat Sheet Requests Updated</title> 
      <link>http://www.addedbytes.com/blog/cheat-sheet-requests-updated/</link> 
	  <comments>http://www.addedbytes.com/blog/cheat-sheet-requests-updated/comments/</comments>
      <description>&lt;p&gt;The Cheat Sheet Requests system has so far been more successful than I had hoped it could be, so I'm chuffed, and very grateful to everyone who has contributed so far.&lt;/p&gt;

&lt;p&gt;Three problems have arisen, however. The first is the sheer volume of requests. There are simply too many to give people a reasonable selection to choose from, so the voting becomes skewed in favour of the items already at the top of the list.&lt;/p&gt;

&lt;p&gt;The second problem is abuse, which has of course been rife. Lots of people requesting all sorts of dark and depraved cheat sheets. Amusing, but as requests go live instantly, not ideal.&lt;/p&gt;

&lt;p&gt;Finally, there are only so many hours in the day, and I'm never going to be able to fulfil every cheat sheet request (though I am working on something to help people make their own).&lt;/p&gt;

&lt;p&gt;Something that was unexpected but entirely positive was (is) the volume of requests and votes for non-techy cheat sheets. A "Girls" cheat sheet is in high demand, though I suspect it would take far more than a A4 sheet to list anything useful about women. And that's assuming any of the content could be agreed on by anyone. "French", "Guitar", "Chess" and "Leadership" are all great ideas, and I'm definitely up for doing more non-geek ones. That said, I suspect "Squid" and "Cockroaches" are not entirely serious requests.&lt;/p&gt;

&lt;p&gt;So, I've changed the system. Now, you can still request anything you like, but only short-listed ideas will be displayed for voting. These are the ones I've picked out of the requests list that are very likely, depending on votes, to become cheat sheets. The top of the pile, so to speak. At the moment, the list is 15 requests, drawn from the most popular and the most interesting to date.&lt;/p&gt;

&lt;p&gt;Those that aren't on the short list won't be forgotten or ignored. I'm going to start organising the requests into categories, and create a new section for requests and votes for those who want to see, and add to, the full list of requests.&lt;/p&gt;

&lt;p&gt;For those of you not part of the Google Group, the new Python and Subversion cheat sheets are both in the preview stage there, so if you want to have a say about what goes on them, or just see what they look like before they're properly released, take a look at the &lt;a href="http://groups.google.co.uk/group/added-bytes-cheat-sheets/"&gt;Added Bytes Cheat Sheets Google Group&lt;/a&gt;.&lt;/p&gt;</description> 
      <author>dave@addedbytes.com</author> 
      <pubDate>Mon, 28 Jul 2008 19:18:14 GMT</pubDate> 
      <guid>http://www.addedbytes.com/blog/cheat-sheet-requests-updated/</guid> 
    </item> 
    <item> 
      <title>Modem Emulator Open Sourced</title> 
      <link>http://www.addedbytes.com/blog/modem-emulator-open-sourced/</link> 
	  <comments>http://www.addedbytes.com/blog/modem-emulator-open-sourced/comments/</comments>
      <description>&lt;p&gt;In July 2004 I released a &lt;a href="http://www.addedbytes.com/tools/modem-emulator/"&gt;modem emulator&lt;/a&gt; (a.k.a. a throughput throttling proxy). It was created to help give designers a sense of how their sites function for people with slower connections.&lt;/p&gt;

&lt;p&gt;I've had to take it offline a number of times due to the volume of traffic and the various ways it was being used (turns out it was a highly effective way to bypass workplace web filters).&lt;/p&gt;

&lt;p&gt;Not only that, the code was badly out of date (code soup, not an object in sight, no real validation ... the shame) and badly needed an update.&lt;/p&gt;

&lt;p&gt;It's been sitting there, half-working and half-not, and begging for an update for almost exactly 4 years. Ultimately, the choice was to update it or kill it permanently.&lt;/p&gt;

&lt;p&gt;So, I spent some quality time rewriting the whole thing, pretty much from the ground up, and now with pleasure announce that it has been turned into an &lt;a href="http://code.google.com/p/modem-emulator/"&gt;open source project&lt;/a&gt; (yes, &lt;a href="http://www.addedbytes.com/blog/email-address-validation-v2/"&gt;another one&lt;/a&gt;) and the code is now available from Google Code under a New BSD License.&lt;/p&gt;

&lt;p&gt;With any luck, this will allow more people to make this tool part of their workflow.&lt;/p&gt;</description> 
      <author>dave@addedbytes.com</author> 
      <pubDate>Fri, 18 Jul 2008 03:09:00 GMT</pubDate> 
      <guid>http://www.addedbytes.com/blog/modem-emulator-open-sourced/</guid> 
    </item> 
 
  </channel> 
</rss>
