<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Alex's Adventures on the Infobahn</title><link href="https://www.bennee.com/~alex/" rel="alternate"></link><link href="https://www.bennee.com/~alex/feeds/all.atom.xml" rel="self"></link><id>https://www.bennee.com/~alex/</id><updated>2023-12-10T19:28:00+00:00</updated><subtitle>the wanderings of a supposed digital native</subtitle><entry><title>A Systems Programmer's Perspectives on Generative AI</title><link href="https://www.bennee.com/~alex/blog/2023/12/10/a-systems-programmers-perspectives-on-generative-ai/" rel="alternate"></link><published>2023-12-10T19:28:00+00:00</published><updated>2023-12-10T19:28:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2023-12-10:/~alex/blog/2023/12/10/a-systems-programmers-perspectives-on-generative-ai/</id><summary type="html">&lt;p&gt;Alex discusses his experience playing with the current crop of large language models and muses on the power of processors multiplying lots of numbers together.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Like many people over the last few months I've been playing with a number of Large Language Models (LLMs). LLMs are
perhaps best typified by the current media star ChatGPT. It is hard to avoid the current media buzz while every tech
titan is developing their "AI" play and people are exposed to tools where the label of Artificial Intelligence is
liberally applied. The ability of these models to spit out &lt;a href="https://www.bennee.com/~alex/blog/2023/10/22/comparing-forge-based-and-email-based-workflow-for-open-source-projects/"&gt;competent comprehensible
text&lt;/a&gt; is seemingly a step change in ability compared to previous generations of tech.&lt;/p&gt;
&lt;p&gt;I thought I would try and collect some of my thoughts and perspectives on this from the point of view of a &lt;a href="https://en.wikipedia.org/wiki/Systems_programming" title="link to wikipedia definition"&gt;systems
programmer&lt;/a&gt;. For those not familiar
with the term is refers to the low level development of providing platforms for the applications people actually use. In
my case a lot of the work I do on &lt;a href="https://www.qemu.org" title="link to QEMU homepage"&gt;QEMU&lt;/a&gt; which involves emulating the very
lowest level instructions a computer can do: the simple arithmetic and comparison of numbers that all code is eventually
expressed as.&lt;/p&gt;
&lt;h1&gt;Magic numbers and computing them&lt;/h1&gt;
&lt;p&gt;I claim no particular expertise on machine learning so expect this to be a very superficial explanation of whats going
on.&lt;/p&gt;
&lt;p&gt;In normal code the CPU tends to execute a lot of different instruction sequences as a program runs through solving the
problem you have set it. The code that calculates where to draw your window will be different to the code checking the
network for new data, or the logic that stores information safely on your file system. Each of those tasks is decomposed
and abstracted into simpler and simpler steps until eventually it is simple arithmetic dictating what the processor
should do do next. You occasionally see hot spots where a particular sequence of instructions are doing a lot of heavy
lifting. There is a whole discipline devoted to managing computational complexity and ensuring algorithms are as
efficient as possible.&lt;/p&gt;
&lt;p&gt;However the various technologies that are currently wowing the world work very differently. They are models of various
networks represented by a series of magic numbers or "weights" arranged in a hierarchical structure of interconnected
&lt;a href="https://en.wikipedia.org/wiki/Matrix_(mathematics)"&gt;matrices&lt;/a&gt;. While there is a lot of nuance to how problems are
encoded and fed into these models fundamentally the core piece of computation is multiplying a bunch of numbers with
another bunch of numbers feeding their results into the next layer of the network. At the end of the process the model
spits out a prediction of the most likely next word is going to be. After selecting one the cycle repeats taking to
account our expanded context to predict the most likely next word.&lt;/p&gt;
&lt;p&gt;The "models" that drive these things are described mostly by the number of parameters they have. This encompasses the
number of inputs and outputs they have and the number of numbers in between. For example common small open source models
start at 3 billion parameters with 7, 13 and 34 billion also being popular sizes. Beyond that it starts getting hard to
run models locally on all but the most tricked out desktop PCs. As a developer my desktop is pretty beefy (32 cores,
64Gb RAM) and can chew through computationally expensive builds pretty easily. However as I can't off-load processing
onto my GPU a decent sized model will chug out a few words a second while maxing out my CPU. The ChatGPT v4 model is
speculated to run about 1.7 trillion parameters which needs to be run on expensive cloud hardware - I certainly don't
envy &lt;a href="https://openai.com/"&gt;OpenAI&lt;/a&gt; their infrastructure bill.&lt;/p&gt;
&lt;p&gt;Of course the computational power needed to run these models is a mere fraction of what it took to train them. In fact
the bandwidth and processing requirements are so large it pays to develop custom silicon that is really good at
multiplying large amounts of numbers and not much else. You can get a lot more bang for your buck compared to running
those calculations on a general purpose CPU designed for tackling a wide range of computation problems.&lt;/p&gt;
&lt;h1&gt;The Value of Numbers&lt;/h1&gt;
&lt;p&gt;Because of the massive investment in synthesising these magic numbers they themselves become worth something. The "magic
sauce" behind a model is more about how it was trained and what data was used to do it. We already know its possible to
encode societies biases into models due to sloppy selection of the input data. One of the principle criticisms of
proprietary generative models is how opaque the training methods are making it hard to judge their safety. The degree to
which models may regurgitate data without any transformation is hard to quantify when you don't know what went into it.&lt;/p&gt;
&lt;p&gt;As I'm fundamentally more interested in knowing how the technology I use works under the hood its fortunate there is a
growing open source community working on building their own models. Credit should be given to Meta who made their
language model &lt;a href="https://ai.meta.com/llama/" title="link to Meta's Llama page"&gt;LLaMA 2&lt;/a&gt; freely available on fairly permissive
terms. Since then there has been an explosion of open source projects that can run the models (e.g:
&lt;a href="https://github.com/ggerganov/llama.cpp" title="link to the llama.cpp project for running CPU bound models"&gt;llama.cpp&lt;/a&gt;,
&lt;a href="https://ollama.ai/" title="link to Ollama, another tool for locally running models"&gt;Ollama&lt;/a&gt;) and provide front-ends (e.g:
&lt;a href="https://github.com/oobabooga/text-generation-webui" title="link to Oobabooga's text generation UI"&gt;Oobabooga's text generation UI&lt;/a&gt;, &lt;a href="https://github.com/s-kostyaev/ellama" title="link to the Ellama github page"&gt;Ellama front-end for Emacs&lt;/a&gt;) for them.&lt;/p&gt;
&lt;h1&gt;Smaller Magic Numbers&lt;/h1&gt;
&lt;p&gt;The principle place where this work is going on is &lt;a href="https://huggingface.co/" title="link to the Hugging Face website"&gt;Hugging Face&lt;/a&gt;. Think of it as the &lt;a href="https://github.com" title="GitHub"&gt;GitHub&lt;/a&gt; of the machine learning community. It provides an
environment for publishing and collaborating on data sets and models as well hosting and testing their effectiveness in
various benchmarks. This make experimenting with models accessible to developers who aren't part of the well funded
research divisions of the various tech titans. Datasets for example come with
&lt;a href="https://huggingface.co/docs/hub/datasets-cards"&gt;cards&lt;/a&gt; which describe the sources that went into these multi-terabyte
files.&lt;/p&gt;
&lt;p&gt;One example of a such is the &lt;a href="https://huggingface.co/datasets/togethercomputer/RedPajama-Data-1T" title="link to the RedPajama dataset"&gt;RedPajama dataset&lt;/a&gt;. This is an open source initiative to recreate the LLaMA training data which combines
data from the open web and well as numerous permissively licensed source such as Wikipedia, GitHub, StackExchange and
ArXiv. This dataset has been used to train models like &lt;a href="https://huggingface.co/openlm-research" title="link to OpenLM research Hugging Face pages"&gt;OpenLLaMA&lt;/a&gt; in an attempt to provide an unencumbered version of Meta's LLaMA 2. However
training up these foundational models is an expensive and time consuming task, the real action is taking these models
and then fine tuning them for particular tasks.&lt;/p&gt;
&lt;p&gt;To fine tune a model you first take a general purpose model and further train it against data with a specific task in
mind. The purpose of this is not only to make your new model better suited for a particular task but also to optimise
the number of calculations that model has to do to achieve acceptable results. This is also where the style of prompting
will be set as you feed the model examples of the sort of questions and answers you want it to give.&lt;/p&gt;
&lt;p&gt;The are further stages that be applied including "alignment" where you ensure results are broadly in tune with the
values of the organisation. This is the reason the various chatbots around won't readily cough up the recipe to build
nukes or make it easier to explicitly break the law. This can be augmented with Reinforcement Learning through Human
Feedback (RHLF) which is practically the purpose of every &lt;a href="https://en.wikipedia.org/wiki/CAPTCHA"&gt;CAPTCHA&lt;/a&gt; you'll have
filled in over the last 25 years online.&lt;/p&gt;
&lt;p&gt;Finally the model can be quantised to make it more manageable. This takes advantage of the fact that a lot of the
numbers will be have a negligible effect on the result for a wide range of inputs. In those cases there is no point
storing them at full precision. As computation is a function of the number of bits of information being processed this
also reduces the cost of computation. While phones and other devices are increasingly including dedicated hardware to
process these models they are still constrained by physics - and the more you process the more heat you need to
dissipate, the more battery you use and the more bandwidth you consume. Obviously the more aggressively you quantise the
models the worse it will perform so there is an engineering trade off to make. Phones work best with multiple highly
tuned models solving specific tasks as efficiently as possible. Fully flexible models giving a
&lt;a href="https://en.wikipedia.org/wiki/J.A.R.V.I.S."&gt;J.A.R.V.I.S&lt;/a&gt; like experience will probably always need to run in the cloud
where thermal management is simply an exercise in plumbing.&lt;/p&gt;
&lt;h1&gt;Making magic numbers work for you&lt;/h1&gt;
&lt;p&gt;Before we discuss using models I want to discuss 3 more concepts: "prompts", "context" and "hallucinations".&lt;/p&gt;
&lt;p&gt;The prompt is the closest thing there is to "programming" the model. The prompt can be purely explicit or include other
inputs behind the scenes. For example the prompt can instruct the model to be friendly or terse, decorate code snippets
with markdown, make changes as diffs or in full functions. Generally the more explicit your prompt is about what you
want the better the result you get from the model. &lt;a href="https://en.wikipedia.org/wiki/Prompt_engineering"&gt;Prompt
engineering&lt;/a&gt; has the potential to be one of those newly created job
titles that will have to replace the jobs obsoleted by advancing AI. One of the ways to embed AI APIs into your app is
to create a task specific prompt that will be put in front of user input that guides the results to what you want.&lt;/p&gt;
&lt;p&gt;The "context" is the rest of the input into the model. That could be the current conversation in a chat or the current
page of source code in a code editor. The larger the context the more reference the model has for its answer although
that does come at the cost of even more computation as the context makes for more input parameters into the model.&lt;/p&gt;
&lt;p&gt;In a strong candidate for 2023's word of the year "hallucination" describes the quirky and sometime unsettling behaviour
of models outputting weird sometimes contradictory information. They will sincerely and confidently answer questions
with blatant lies or start &lt;a href="https://www.theregister.com/2023/12/01/chatgpt_poetry_ai/"&gt;regurgitating training data&lt;/a&gt; when
given certain prompts. It is a salient reminder that the statistical nature of these generative models will mean they
occasionally spout complete rubbish. They are also very prone to following the lead of their users - the longer you chat
with a model the more likely it is to end up agreeing with you.&lt;/p&gt;
&lt;p&gt;So lets talk about what these models can and can't do. As a developer one of the areas I'm most interested in is their
ability to write code. Systems code especially is an exercise in precisely instructing a computer what to do in explicit
situations. I'd confidently predicted my job would be one of the last to succumb to the advance of AI as systems aren't
something you can get "mostly" right. It was quite a shock when I first saw quite how sophisticated the generated code
can be.&lt;/p&gt;
&lt;h2&gt;Code Review&lt;/h2&gt;
&lt;p&gt;One of the first things I asked ChatGPT to do was review a function I'd written. It manged to make 6 observations about
the code, 3 of which where actual logic problems I'd missed and 3 where general points about variable naming and
comments. The prompt is pretty important though. If not constrained to point out actual problems LLMs tend to have a
tendency to spit out rather generic advice about writing clean well commented code.&lt;/p&gt;
&lt;p&gt;They can be super useful when working with an unfamiliar language or framework. If you are having trouble getting
something to work it might be faster to ask an LLM how to fix your function that spending time reading multiple
&lt;a href="https://stackoverflow.com/"&gt;StackOverflow&lt;/a&gt; answers to figure out what you've misunderstood. If compiler errors are
confusing supplying the message alongside the code can often be helpful in understanding whats going on.&lt;/p&gt;
&lt;h2&gt;Writing Code&lt;/h2&gt;
&lt;p&gt;However rather than just suggesting changes one very tempting use case is writing code from scratch based on a
description of what you want. Here the context is very important, the more detail you provide the better chance of
generating something useful. My experience has been that the solutions are usually fairly rudimentary and can often
benefit from a manual polishing step once you have something working.&lt;/p&gt;
&lt;p&gt;For my &lt;a href="https://www.bennee.com/~alex/presentations/kvm23-qemu-keynote.html"&gt;QEMU KVM Forum 2023 Keynote&lt;/a&gt; I got ChatGPT
to write the first draft of a number of my data processing scripts. However it missed obvious optimisations by
repeatedly reading values inside inner loops that made the scripts slower than they needed to be.&lt;/p&gt;
&lt;p&gt;If the task is a straight transformation they are very good. Ask an LLM to convert a function in one language into
another and it will do a pretty good job - and probably with less mistakes than your first attempt. However there are
limitations. For example I asked a model to convert some Aarch64 assembler into the equivalent 32 bit Arm assembler. It
did a very good job of the mechanical part of that but missed the subtle differences in how to setup the MMU. This
resulted in code which compiled but didn't work until debugged by a human who was paying close attention to the
architecture documentation as they went.&lt;/p&gt;
&lt;p&gt;One of the jobs LLM's are very well suited for is writing code that matches an existing template. For example if you are
mechanically transforming a bunch of enums into a function to convert them to strings you need only do a few examples
before there is enough context for the LLM to reliably figure out what you are doing. LLM's are a lot more powerful than
a simple template expansion because you don't need to explicitly define a template first. The same is true of tasks like
generating test fixtures for your code.&lt;/p&gt;
&lt;p&gt;There is a potential trap however with using LLMs to write code. As there is no source code and the proprietary models
are fairly cagey about exactly what data the models where trained on there are worries about them committing copyright
infringement. There are active debates ongoing in the open source community (e.g. &lt;a href="https://lists.gnu.org/archive/html/qemu-devel/2023-11/msg05007.html" title="link to archive of discussion about LLM code generation"&gt;on
qemu-devel&lt;/a&gt;) about the potential ramifications of a model regurgitating its training data. Without clarity on what
license that data has there is a risk of contaminating projects with code of an unknown province. While I'm sure these
issues will be resolved in time it's certainly a problem you need to be cognisant off.&lt;/p&gt;
&lt;h2&gt;Prose&lt;/h2&gt;
&lt;p&gt;Writing prose is a much more natural problem territory for LLM's and an area where low-effort text generation will be
rapidly replaced by generative models like ChatGPT. "My" previous &lt;a href="https://www.bennee.com/~alex/blog/2023/10/22/comparing-forge-based-and-email-based-workflow-for-open-source-projects/#comparing-forge-based-and-email-based-workflow-for-open-source-projects"&gt;blog
post&lt;/a&gt;
was mostly written by a ChatGPT based on a simple brief and a few requests for rewrites in a chat session. While it made
the process fairly quick the result comes across as a little bland and "off". I find there is a tendency for LLM's to
fall back on fairly obvious generalisations and erase any unique authorial voice there may have been.&lt;/p&gt;
&lt;p&gt;However if you give enough structure its very easy to get an LLM to expand on a bullet list into more flowery prose.
They are more powerful when being fed a large piece of text and asked to summarise key information in a more accessible
way.&lt;/p&gt;
&lt;p&gt;They are certainly an easy way to give a first pass review of your writing although I try to re-phrase things myself
rather than accept suggestions verbatim to keep my voice coming through the text.&lt;/p&gt;
&lt;h1&gt;Final Thoughts&lt;/h1&gt;
&lt;p&gt;The recent advances in LLM's and the public's exposure to popular tools like ChatGPT have certainly propelled the topic
of AI in the zeitgeist. While we are almost certainly approaching the "Peak of Inflated Expectations" stage of the &lt;a href="https://en.wikipedia.org/wiki/Gartner_hype_cycle"&gt;hype
cycle&lt;/a&gt; they will undoubtedly be an important step on the road to the
eventual goal of &lt;a href="https://en.wikipedia.org/wiki/Artificial_general_intelligence"&gt;Artificial General Intelligence (AGI)&lt;/a&gt;.
We are still a long way from being able to ask computers to solve complex problems they way they can in for example in
Star Trek. However in their current form they will certainly have a big impact on the way we work over the next decade
or so.&lt;/p&gt;
&lt;p&gt;It's important as a society we learn about how they are built, what their limitations are and understand the
computational cost and resultant impact on the environment. It will be awhile before I'd want to trust a set of magic
numbers over a carefully developed algorithm to actuate the control surfaces on a plane I'm flying on. However they are
already well placed to help us learn new information through interactive questioning and summarising random information
on the internet. We must learn to recognise when we've gone down hallucinatory rabbit hole and verify what we've learned
with reference to trusted sources.&lt;/p&gt;</content><category term="geek"></category><category term="ai"></category><category term="llms"></category><category term="systems"></category><category term="programming"></category><category term="chatgpt"></category><category term="qemu"></category><category term="open source"></category></entry><entry><title>Comparing Forge-Based and Email-Based Workflow for Open Source Projects</title><link href="https://www.bennee.com/~alex/blog/2023/10/22/comparing-forge-based-and-email-based-workflow-for-open-source-projects/" rel="alternate"></link><published>2023-10-22T12:22:00+01:00</published><updated>2023-10-22T12:22:00+01:00</updated><author><name>chatgpt</name></author><id>tag:www.bennee.com,2023-10-22:/~alex/blog/2023/10/22/comparing-forge-based-and-email-based-workflow-for-open-source-projects/</id><summary type="html">&lt;p&gt;Comparing Forge-Based and Email-Based Workflow for Open Source Projects&lt;/p&gt;</summary><content type="html">&lt;p&gt;In the open source technology universe, how teams coordinate,
collaborate and contribute is determined by the workflow they opt for.
At a high level, workflows can fall into one of two camps: Forge-based
or Email-based workflows. Forge-based workflows gained popularity with
platforms such as GitHub and GitLab, while Email-based workflows have
been a stalwart mechanism for open source software development with
mailing list platforms like GNU Mailman and SourceHut.&lt;/p&gt;
&lt;p&gt;In this post, we will look at the benefits and drawbacks of the
various approaches, hopefully lending insight to what will work best
for your project.&lt;/p&gt;
&lt;h2&gt;Forge-Based Workflow&lt;/h2&gt;
&lt;p&gt;Forge-based workflows have revolutionised open source software
development. Various advantages have made it an accessible choice for
many, including:&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;1. User-Friendly&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Forge-based platforms such as GitHub or GitLab feature a friendly GUI
and offer excellent documentation, making it super easy for beginners
to contribute to open source projects without needing an in-depth
understanding of git and email tools.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;2. Centralised and Organised&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;These platforms provide central repositories that make project
management streamlined. Access controls, issue tracking, continuous
integration, and other tools all exist in one place.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;3. Collaborative Environment&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The pull-request model common to forge platforms encourages
collaborative code review, making it an excellent tool for open-source
projects where code quality is a priority.&lt;/p&gt;
&lt;p&gt;However, there's a flip side to this coin:&lt;/p&gt;
&lt;h4&gt;Cons: Risk of Vendor Lock-in&lt;/h4&gt;
&lt;p&gt;Choosing a specific forge platform means accepting their choices of
features, tools, standard practices, and policies which subtly enforce
vendor lock-in. For most open source projects this also means relying
on the forge supporting projects with cost free access to features and
CI time.&lt;/p&gt;
&lt;h2&gt;Email-Based Workflow&lt;/h2&gt;
&lt;p&gt;Despite being considered 'old school', email-based workflows still
have merit in today's software development world. They offer:&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;1. Decentralized and Flexible&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;In sharp contrast to forge-based workflows, email workflows are
inherently decentralized. This approach offers more flexibility for
contributors and maintainers alike, as they are not bound to tools
offered by a single platform.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;2. Line-by-Line Review and Inline Feedback&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Email-based workflows stand out when it comes to the review process.
The nature of emails allows for contributors and reviewers to break
down commits line-by-line. This allows for more granular attention to
detail, leading to clearer communication about specific code changes.
Additionally, the threading mechanism of emails allows for inline
commentary during reviews, making it easier for contributors to
respond and iterate on feedback. This approach can encourage deeper
understanding and discussion around code changes, leading to
well-reviewed and robust code contributions.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;3. Enhances git Understanding&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Contributors working with email-based workflows generally have a
better understanding of git because it requires more hands-on actions
when sharing code.&lt;/p&gt;
&lt;p&gt;However, they too have potential drawbacks.&lt;/p&gt;
&lt;h4&gt;Cons: Less Beginner-Friendly&lt;/h4&gt;
&lt;p&gt;Email-based workflows requires a steeper learning curve and are less
friendly for collaborative code reviewing, making it challenging for
new contributors to a project.&lt;/p&gt;
&lt;h1&gt;Adapting Open Source Projects: Email to Forge Workflow Transitions&lt;/h1&gt;
&lt;p&gt;Transitioning from an email-based workflow to a forge-based one should
be a meticulously planned process that respects the existing
community's culture and comfort. It's pivotal to keep this move as an
evolution rather than an abrupt change.&lt;/p&gt;
&lt;p&gt;Initial steps in such transitions can include moving non-code elements
to the forge platform. Functions such as issue tracking,
documentation, and discussions could be the first set of activities
transferred to the forge platform. This strategy allows the
contributors to become proficient with the platform’s tools and
interfaces while keeping the code contributions intact on email lists.&lt;/p&gt;
&lt;p&gt;Your project might encompass several sub-systems, and it could be
worth considering this while transitioning. Instead of transforming
the entire project at once, one could start by moving individual
sub-systems to the new workflow. This incremental, phased approach can
prevent chaos and reduce the chances of any significant disruption in
the project's flow.&lt;/p&gt;
&lt;p&gt;Following the sub-system shifts, the project should then introduce
acceptance of pull requests or merge requests created by maintainers.
These PRs should still contain code that underwent email list reviews
in the previous workflow, ensuring the robustness of code quality.&lt;/p&gt;
&lt;p&gt;The final stage of the transition is welcoming all contributors to
submit merge requests through the forge platform. The key is to ensure
that contributors understand the reasons behind the shift towards a
complete merge request approach. They should be given clear guidelines
about how and why to use merge requests, making them comfortable with
the transition, and empowering them to take full advantage of the
tool's capabilities.&lt;/p&gt;
&lt;p&gt;In transition, it's necessary to alleviate concerns, clarify intents,
and provide resources to learn and help the contributors adjust to the
new workflow. Both email and forge-based workflows hold their place
and value in open-source. So, when transiting, the project needs and
the contributor adaptability should be the cornerstone of your
strategy. No two projects are the same, and neither are their paths in
adopting new workflow models.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Fuller disclosure: as
&lt;a href="https://chaos.social/@epilys/111280150345667417" title="comment spotting the chatgpt origins"&gt;@epilys&lt;/a&gt; noticed this post was generated via
chatgpt. I may have spent more time fiddling with my pelican settings
to make sure the author slug was properly shown than I did iterating
with GPT4 on the article. It has had some light copy-editing since to
clean up some copy and paste errors between iterations and some of the
more artificial phrasing it used)&lt;/em&gt;&lt;/p&gt;</content><category term="geek"></category><category term="email"></category><category term="workflow"></category><category term="git"></category><category term="gitlab"></category><category term="github"></category><category term="floss"></category><category term="development"></category><category term="chatgpt"></category></entry><entry><title>dired-rsync 0.7 released</title><link href="https://www.bennee.com/~alex/blog/2023/07/14/dired-rsync-07-released/" rel="alternate"></link><published>2023-07-14T16:04:00+01:00</published><updated>2023-07-14T16:04:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2023-07-14:/~alex/blog/2023/07/14/dired-rsync-07-released/</id><summary type="html">&lt;p&gt;There haven't been many changes in the last few years but Liu Hui did
submit a new package that allows you to use dired-rsync with a
&lt;a href="https://www.gnu.org/software/emacs/manual/html_mono/transient.html"&gt;transient&lt;/a&gt;
interface. Aside from that there have been a few minor bug fixes for a
few issues and I spent some time cleaning up …&lt;/p&gt;</summary><content type="html">&lt;p&gt;There haven't been many changes in the last few years but Liu Hui did
submit a new package that allows you to use dired-rsync with a
&lt;a href="https://www.gnu.org/software/emacs/manual/html_mono/transient.html"&gt;transient&lt;/a&gt;
interface. Aside from that there have been a few minor bug fixes for a
few issues and I spent some time cleaning up the bit rotted CI system
by migrating from the broken Travis setup to using GitHub actions.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;v0.7&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;truncate process buffer output to last status line&lt;/li&gt;
&lt;li&gt;raise minimum Emacs version to 25.1&lt;/li&gt;
&lt;li&gt;new dired-rsync-transient frontend&lt;/li&gt;
&lt;li&gt;various code clean-ups&lt;/li&gt;
&lt;li&gt;new customisation hook dired-rsync-success-hook&lt;/li&gt;
&lt;li&gt;moved the project CI to GitHub Actions&lt;/li&gt;
&lt;li&gt;now understands alternate port syntax in tramp URIs&lt;/li&gt;
&lt;/ul&gt;</content><category term="geek"></category><category term="emacs"></category><category term="dired"></category><category term="dired-rsync"></category></entry><entry><title>The Locksmiths Dream</title><link href="https://www.bennee.com/~alex/blog/2022/12/28/the-locksmiths-dream/" rel="alternate"></link><published>2022-12-28T14:54:00+00:00</published><updated>2022-12-28T14:54:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2022-12-28:/~alex/blog/2022/12/28/the-locksmiths-dream/</id><summary type="html">&lt;p&gt;A review of attending the event The Locksmiths Dream, a Cultist Simulator puzzle experience&lt;/p&gt;</summary><content type="html">&lt;p&gt;Just before Christmas I attended a LARP adjacent event at the
conveniently local 17th century manor house
&lt;a href="https://www.treowen.co.uk/" title="link to Treowen homepage"&gt;Treowen&lt;/a&gt;
called The Locksmiths Dream. I use that phrase because I'm fairly sure
some of my fellow attendees had prior live roleplaying experience
although it is certainly not required. The organisers have evidently
spent a lot of time making the game as accessible as possible to the
widest range of participants.&lt;/p&gt;
&lt;h1&gt;Setting&lt;/h1&gt;
&lt;p&gt;While there is no requirement to dress-up it seems waste of the
environment to not make some sort of effort. The world of event is set
loosely in the 1920's in a house that sits on the boundary of our
world and other planes. Secret gods have met in the house before your
arrival and your mission is to sift through the traces of their
interactions and perhaps discover some deeper meaning. To aid your
exploration and puzzle solving a cast of characters inhabit the house
who are perhaps able to help your exploration. The staff will also
prepare you 3 meals, lunch on arrival, an evening meal and breakfast
the next day, to keep energised for your task.&lt;/p&gt;
&lt;h1&gt;Gameplay&lt;/h1&gt;
&lt;p&gt;On arrival I headed to my room which involved some winding stairs and
eventually a short ladder to enter my bedroom at the very top of the
house. The player bedrooms are off-limits to everyone else unless by
invitation so I had a chance to collect my thoughts and read through
the supplied materials while enjoying a nice view of the surrounding
Monmouthshire countryside.&lt;/p&gt;
&lt;p&gt;The materials included a brief overview of the game (solve puzzles,
collect the ephemeral birdsong left behind by the gods), a letter from
my in-game sponsor outlining some particular tasks and a beautifully
bound personal note book.&lt;/p&gt;
&lt;p&gt;&lt;img alt="A selection of materials from the game" class="image-process-large-photo" src="https://www.bennee.com/~alex/images/locksmith_bumbf.jpg"&gt;&lt;/p&gt;
&lt;p&gt;The note book was the first indication of the attention to detail and
production values of the event. It contained a number of in-game
printed notes to provide background and clues as well as plenty of
blanks pages for taking notes. You are strongly encouraged to make
liberal use of the book and it provides for a nice memento of your
experience afterwards.&lt;/p&gt;
&lt;p&gt;The initial puzzles are fairly simple with keys being found around the
house with an attached set of clues. Solving these clues will lead you
to a location where you can find and hopefully unlock a padlocked box
to reveal your prize. Each key comes with several clue styles so for
example those unfamiliar with the lore of the &lt;a href="https://weatherfactory.biz/cultist-simulator/" title="link to cultist simulator homepage"&gt;cultist
simulator&lt;/a&gt; from which the event draws its story
don't draw a blank. Sometimes the boxes reveal additional clues to
some of the deeper puzzles that require solving in multiple stages and
paying attention to changes in the rest of the house and its
characters.&lt;/p&gt;
&lt;h1&gt;My Experience&lt;/h1&gt;
&lt;p&gt;I was originally going to attend with a friend of mine however they
were unfortunately unable to attend thanks to our virus afflicted
times. I also missed out on the first few hours where the house tour
and orientation events happen which help the players learn about where
they are. Fortunately the staff were very helpful and able to give a
few useful hints to ease me into the game once I arrived.&lt;/p&gt;
&lt;p&gt;The event was certainly immersive and I never found myself bored and
without something to do. The food was very nice although at stages I
was worried if I should concentrate on eating the meal or trying to
solve the meaning of way it was presented. The organisers took full
advantage of the nooks and crannies of the wonderful setting.&lt;/p&gt;
&lt;p&gt;Next time I will have to make sure I have a back-up buddy in case of
illness because some of the more in depth puzzle solving benefits from
having another person to bounce ideas off. You can of course talk to
the other guests playing the game although some of them might be
working for competing sponsors with different priorities.&lt;/p&gt;
&lt;p&gt;It was certainly one of the most engaging experiences I'd had this
year. I would recommend it for anyone interested in an immersive
puzzle solving weekend and especially if they are already interested
in the source games lore.&lt;/p&gt;
&lt;h1&gt;Media&lt;/h1&gt;
&lt;p&gt;The following video made by the team behind he game was put together
with footage from the game I attended and gives a give idea of the
setting and ambience you can expect.&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/1uUom0wdM_w" title="YouTube video
player" frameborder="0" allow="accelerometer; autoplay;
clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;I also found another more detailed write-up of the event over at &lt;a href="https://noproscenium.com/the-remarkable-hours-of-the-locksmiths-dream-the-nopro-review-5c7f87f7f5d8"&gt;No
Prescenium&lt;/a&gt;
if you want another perspective.&lt;/p&gt;</content><category term="geek"></category><category term="larp"></category><category term="event"></category><category term="review"></category></entry><entry><title>My Setup (2022 Edition)</title><link href="https://www.bennee.com/~alex/blog/2022/11/01/my-setup-2022-edition/" rel="alternate"></link><published>2022-11-01T09:30:00+00:00</published><updated>2022-11-01T09:30:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2022-11-01:/~alex/blog/2022/11/01/my-setup-2022-edition/</id><summary type="html">&lt;p&gt;It's been a while since I last blogged about anything personally (although I have written a few things for work). In a struggle to come up with things to talk about I finally decided it might be worth documenting my current working setup. It's probably a function of my aging …&lt;/p&gt;</summary><content type="html">&lt;p&gt;It's been a while since I last blogged about anything personally (although I have written a few things for work). In a struggle to come up with things to talk about I finally decided it might be worth documenting my current working setup. It's probably a function of my aging but as I've gotten older I've slowly tweaked and tuned my
environment to minimise the friction of doing things. I'll briefly talk about the hardware but most of the environment is software and therefor fairly malleable.&lt;/p&gt;
&lt;p&gt;Starting from the top and working my way down.&lt;/p&gt;
&lt;h1&gt;Desktop (sway/i3/Gnome/ChromeOS)&lt;/h1&gt;
&lt;p&gt;I spend by far and away the most time in &lt;a href="https://swaywm.org/" title="link to sway website"&gt;Sway&lt;/a&gt; and previously it's X11 reference &lt;a href="https://i3wm.org/" title="link to i3 website"&gt;i3&lt;/a&gt; which are both tiling window managers. I don't really use the tiling feature much as in reality my main workflow is to have full maximised single application screens in workspaces. However I do have hotkeys for the two most important applications I open (terminal and editor) and with a narrowing launcher for the rest. I use &lt;a href="https://www.gnome.org/" title="link to Gnome website"&gt;Gnome&lt;/a&gt; on one of my laptops because I share it with other people and it pays to keep track of the mainstream Linux desktop. I have remapped some keys to closer match my tiling experience as well as tweaking the default applications.&lt;/p&gt;
&lt;p&gt;ChromeOS is the weird case where I accept a slightly different desktop paradigm because when travelling I like the ChromeOS feature set of secure and lightweight hardware. Any development I do on the road tends to use the &lt;a href="https://chromeos.dev/en/linux"&gt;Crostini terminal&lt;/a&gt;. More often than not it's just a shell for a ssh or mosh session to a bigger development box.&lt;/p&gt;
&lt;h2&gt;Key Desktop Apps (Emacs, Firefox, Modern Terminal)&lt;/h2&gt;
&lt;p&gt;It won't be a surprise to anyone that my main application is &lt;a href="https://www.gnu.org/software/emacs/" title="link to Emacs website"&gt;Emacs&lt;/a&gt; which provides the main interface into the rest of the system for pretty much everything except browsing the web. For web browsing I prefer &lt;a href="https://www.mozilla.org/en-GB/firefox/browsers/" title="link to Firefox website"&gt;Firefox&lt;/a&gt; which is synced up between my desktop and mobile. I occasionally have to use Chrome to access Javascript heavy web apps like Atlassian or some video call solutions.&lt;/p&gt;
&lt;p&gt;I currently use a range of &lt;a href="https://github.com/stsquad/dotfiles/blob/master/dotconfig/i3/terminal.sh" title="terminal launch script"&gt;terminals&lt;/a&gt; depending on the system. My daily driver terminal on my main box is &lt;a href="https://codeberg.org/dnkl/foot" title="Foot development pages"&gt;foot&lt;/a&gt; which is simple and minimal. It has a client/server setup so there is really only one foot binary running for all my terminals. I don't need anything fancy because all my terminal multiplexing is handled by &lt;a href="https://github.com/tmux/tmux" title="tmux development site"&gt;tmux&lt;/a&gt; which also handles shell persistence.&lt;/p&gt;
&lt;h2&gt;Hardware&lt;/h2&gt;
&lt;p&gt;I now run a single desktop machine which is a ~9 year old Intel brought for work which has seen upgrades to the SSDs and thats about it. When I do serious building I have a range of powerful servers with lots of cores and disk space which I can use. I have an electric standing desk although I don't tend to move it during my work day. I do put it in the upright position at the end of the day to stop me sitting down if I'm just checking something in the evening. I also own a personal XPS15 laptop which I can run Steam on although mostly on the built in Intel graphics as &lt;a href="https://nouveau.freedesktop.org/" title="Nouveau development site"&gt;Nouveau&lt;/a&gt; can't clock it to get any reasonable performance. I don't really mind because for most of my intensive high frame rate gaming I use my PS5 on a big flat screen TV.&lt;/p&gt;
&lt;p&gt;For my NAS I have a Synology DiskStation with around 8TB of storage and a Raspberry Pi 4 in a cute metal case running Kodi connected to the main TV. Finally there is a 24 core Arm server which draws a miniscule 5w which acts as a permanent point of presence and eventually may take on some home automation tasks. This is all supplied with 300Mbs of fibre optic broadband and a mesh network of Eero's supplying WiFi to the rest of the house. My office network has a hard link to the main router and comes through a &lt;a href="https://www.turris.com/en/omnia/overview/" title="Turris Omnia homepage"&gt;Turris Omnia&lt;/a&gt;.&lt;/p&gt;</content><category term="geek"></category><category term="tools"></category><category term="desktop"></category><category term="setup"></category><category term="emacs"></category></entry><entry><title>dired-rsync 0.6 released</title><link href="https://www.bennee.com/~alex/blog/2020/12/24/dired-rsync-06-released/" rel="alternate"></link><published>2020-12-24T22:18:00+00:00</published><updated>2020-12-24T22:18:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2020-12-24:/~alex/blog/2020/12/24/dired-rsync-06-released/</id><summary type="html">&lt;p&gt;Given the slowly growing collection of fixes I thought it was worth cutting a new release for the benefit of those that get their dired-rsync via the stable MELPA channels. The biggest user visible change is dired-rsync no longer tweaks mode-line-process itself. You can now decide if to add dired-rsync-modeline-status …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Given the slowly growing collection of fixes I thought it was worth cutting a new release for the benefit of those that get their dired-rsync via the stable MELPA channels. The biggest user visible change is dired-rsync no longer tweaks mode-line-process itself. You can now decide if to add dired-rsync-modeline-status in your modeline (or anywhere else if you wish).&lt;/p&gt;
&lt;p&gt;Merry Christmas ;-)&lt;/p&gt;
&lt;p&gt;v0.6&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;use tramp functions to decompose URIs (fix #22)&lt;/li&gt;
&lt;li&gt;use username from dired URI if we have it in rsync&lt;/li&gt;
&lt;li&gt;fix escaping of 's for remote-to-remote copies&lt;/li&gt;
&lt;li&gt;better detection of running jobs by parsing buffers&lt;/li&gt;
&lt;li&gt;increment the reverse proxy port based on active connections&lt;/li&gt;
&lt;li&gt;don't set mode-line-process, leave it to user to put dired-rsync-modeline-status somewhere&lt;/li&gt;
&lt;/ul&gt;</content><category term="geek"></category><category term="emacs"></category><category term="dired"></category><category term="dired-rsync"></category></entry><entry><title>Edit with Emacs v1.16 released</title><link href="https://www.bennee.com/~alex/blog/2020/12/24/edit-with-emacs-v116-released/" rel="alternate"></link><published>2020-12-24T16:10:00+00:00</published><updated>2020-12-24T16:10:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2020-12-24:/~alex/blog/2020/12/24/edit-with-emacs-v116-released/</id><summary type="html">&lt;p&gt;Despite what I said &lt;a href="https://www.bennee.com/~alex/blog/2018/01/17/edit-with-emacs-v1-15-released" title="link to the last release"&gt;last time&lt;/a&gt; it seems that this is still a useful tool for me. I had some free time to peruse some of the open issues and managed to work out what was breaking the GMail interaction and work out a fix. While &lt;a href="https://github.com/alpha22jp/atomic-chrome" title="Atomic Chrome homepage"&gt;Atomic Chrome&lt;/a&gt; provides a …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Despite what I said &lt;a href="https://www.bennee.com/~alex/blog/2018/01/17/edit-with-emacs-v1-15-released" title="link to the last release"&gt;last time&lt;/a&gt; it seems that this is still a useful tool for me. I had some free time to peruse some of the open issues and managed to work out what was breaking the GMail interaction and work out a fix. While &lt;a href="https://github.com/alpha22jp/atomic-chrome" title="Atomic Chrome homepage"&gt;Atomic Chrome&lt;/a&gt; provides a nicer interactive experience with direct feedback the release of Crostini keeps the Emacs flame alive on my Chromebook. I suspect I still need someone to step up who is more conversant in the web languages of Javascript and CSS to improve the front end experience and maybe tackle the frequently requested feature of interaction with fancy javascript editors. In the meantime I'll continue to bumble along and look at what pull requests do come in and leave the pile of feature requests slowly growing.&lt;/p&gt;
&lt;p&gt;Merry Christmas ;-)&lt;/p&gt;
&lt;p&gt;v1.16&lt;/p&gt;
&lt;p&gt;Extension&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;allow disabling of switch to settings behaviour&lt;/li&gt;
&lt;li&gt;whitelist penguin.linux.test for edit server (ChromeOS/Crostini)&lt;/li&gt;
&lt;li&gt;fix context menu on newer Chromes (#158)&lt;/li&gt;
&lt;li&gt;honour edit_server_host instead of hard-coding 127.0.0.1&lt;/li&gt;
&lt;li&gt;use the Chrome/Firefox extension UI to set keyboard shortcuts.&lt;/li&gt;
&lt;li&gt;fix handling of spellcheck=false nodes for Gmail (#171, #162)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;edit-server.el&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;use make-frame (see updated docs for edit-server-new-frame-alist)&lt;/li&gt;
&lt;/ul&gt;</content><category term="geek"></category><category term="emacs"></category><category term="edit with emacs"></category><category term="chrome"></category><category term="chromeos"></category><category term="firefox"></category></entry><entry><title>magit-file-dispatch</title><link href="https://www.bennee.com/~alex/blog/2020/12/14/magit-file-dispatch/" rel="alternate"></link><published>2020-12-14T16:10:00+00:00</published><updated>2020-12-14T16:10:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2020-12-14:/~alex/blog/2020/12/14/magit-file-dispatch/</id><summary type="html">&lt;p&gt;&lt;a href="https://magit.vc/manual/magit/Commands-for-Buffers-Visiting-Files.html" title="manual page for magit-file-dispatch"&gt;magit-file-dispatch&lt;/a&gt; is my new favourite command since the recent removal of &lt;a href="https://github.com/magit/magit/pull/4237" title="pull request describing change"&gt;magit-file-mode&lt;/a&gt;. Rather than paper over the change and stick to the old way I tried the &lt;a href="https://emacsredux.com/blog/2020/12/10/essential-magit-file-commands/" title="Bozhidar Batsov blog post discussing Magit launch strategies"&gt;suggestions of launching with the dispatch commands&lt;/a&gt;. I discovered a few cool things including the ability to trace an individual functions changes over …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://magit.vc/manual/magit/Commands-for-Buffers-Visiting-Files.html" title="manual page for magit-file-dispatch"&gt;magit-file-dispatch&lt;/a&gt; is my new favourite command since the recent removal of &lt;a href="https://github.com/magit/magit/pull/4237" title="pull request describing change"&gt;magit-file-mode&lt;/a&gt;. Rather than paper over the change and stick to the old way I tried the &lt;a href="https://emacsredux.com/blog/2020/12/10/essential-magit-file-commands/" title="Bozhidar Batsov blog post discussing Magit launch strategies"&gt;suggestions of launching with the dispatch commands&lt;/a&gt;. I discovered a few cool things including the ability to trace an individual functions changes over time which has completely replaced my old method of piping &lt;em&gt;git log&lt;/em&gt; through &lt;em&gt;less&lt;/em&gt;. In the end I found the fall-back of going to &lt;em&gt;magit-dispatch&lt;/em&gt; a little too much friction given I've a lot of memory muscle to launch the status of git from various non-file backed yet still project orientated buffers. &lt;em&gt;compilation-mode&lt;/em&gt; is one example but I also have my mail client set-up so I can quickly get to the code from the relevant mailing list. As everyone can have their own special snowflake settings in Emacs I finally went with:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;with-eval-after-load&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;magit&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;defun&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;my-magit-file-bindings&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Setup my file bindings&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;local-set-key&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;kbd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;lt;f5&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;my-counsel-git-grep&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;add-hook&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;magit-find-file-hook&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;my-magit-file-bindings&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;defun&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;my-magit-dispatch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kp"&gt;&amp;amp;optional&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;My personal preference for magit-dispatch.&lt;/span&gt;
&lt;span class="s"&gt;While magit-file-dispatch is cool, falling back to magit-dispatch is&lt;/span&gt;
&lt;span class="s"&gt;not, I&amp;#39;d rather just go to magit-status. Lets make it so.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;interactive&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;P&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;prefix&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;buffer-file-name&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;functionp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;magit-file-dispatch&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;magit-status&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;magit-file-dispatch&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;

&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;use-package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;magit&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nb"&gt;:bind&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;C-x g&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;my-magit-dispatch&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="geek"></category><category term="emacs"></category><category term="magit"></category></entry><entry><title>Migration Complete</title><link href="https://www.bennee.com/~alex/blog/2020/11/15/migration-complete/" rel="alternate"></link><published>2020-11-15T10:45:00+00:00</published><updated>2020-11-15T10:45:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2020-11-15:/~alex/blog/2020/11/15/migration-complete/</id><summary type="html">&lt;p&gt;As I'm sure a lot of people have found in these COVID inflected times
the completion of lockdown projects is harder than originally
anticipated. As the hosting platform for my old Wordpress setup gets
closer to end-of-life I finally pulled my finger out to put the
finishing touches on the …&lt;/p&gt;</summary><content type="html">&lt;p&gt;As I'm sure a lot of people have found in these COVID inflected times
the completion of lockdown projects is harder than originally
anticipated. As the hosting platform for my old Wordpress setup gets
closer to end-of-life I finally pulled my finger out to put the
finishing touches on the migration and switch the DNS across. Now all
I need to do is get back into the habit of posting non-process related
things. Anyway welcome to the new (old) blog ;-)&lt;/p&gt;</content><category term="geek"></category><category term="wordpress"></category><category term="blog"></category><category term="pelican"></category></entry><entry><title>Migrating again</title><link href="https://www.bennee.com/~alex/blog/2020/05/25/migrating-again/" rel="alternate"></link><published>2020-05-25T17:53:00+01:00</published><updated>2020-05-25T17:53:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2020-05-25:/~alex/blog/2020/05/25/migrating-again/</id><summary type="html">&lt;p&gt;It's been some time since I last blogged but I have been doing some
spring cleaning amongst my servers. While moving all my web content
onto a new box I though I would take advantage of the fresh start to
migrate away from &lt;a href="https://wordpress.org/"&gt;Wordpress&lt;/a&gt;. While it is a
fine FLOSS …&lt;/p&gt;</summary><content type="html">&lt;p&gt;It's been some time since I last blogged but I have been doing some
spring cleaning amongst my servers. While moving all my web content
onto a new box I though I would take advantage of the fresh start to
migrate away from &lt;a href="https://wordpress.org/"&gt;Wordpress&lt;/a&gt;. While it is a
fine FLOSS project it really needs quite a bit of time to keep it up
to date and secure. I've decided it's much better to have a static
site so I've imported all my exiting blog content into a bunch of rST
and Markdown files and re-generated the site with a Python based
content generator called
&lt;a href="https://docs.getpelican.com/en/stable/"&gt;Pelican&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So far it seems easy enough to tweak. The main challenge is ensuring
the various feeds for different planets are in the same place as they
would have been with Wordpress. One difference with the change is the
lack of comments although I think I could probably re-enable them with
some 3rd party solution if I wanted to. We shall see.&lt;/p&gt;</content><category term="geek"></category><category term="emacs"></category><category term="wordpress"></category><category term="blog"></category></entry><entry><title>dired-rsync 0.5 release</title><link href="https://www.bennee.com/~alex/blog/2019/11/10/dired-rsync-0-5-release/" rel="alternate"></link><published>2019-11-10T19:42:00+00:00</published><updated>2019-11-10T19:42:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2019-11-10:/~alex/blog/2019/11/10/dired-rsync-0-5-release/</id><summary type="html">&lt;p&gt;If you've been running from MELPA you will have had all these features already but it was certainly overdue a stable tagging. The commit history shows a lot of faffing around getting the CI working again. However there are a bunch of customisation tweaks exposed as well as support for …&lt;/p&gt;</summary><content type="html">&lt;p&gt;If you've been running from MELPA you will have had all these features already but it was certainly overdue a stable tagging. The commit history shows a lot of faffing around getting the CI working again. However there are a bunch of customisation tweaks exposed as well as support for remote-to-remote rsync support (with a very ugly port-forward hack). From the NEWS file:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Big CI clean-ups (dropped emake, added Cask)&lt;/li&gt;
&lt;li&gt;smarter modeline status (show R:n% when one job running)&lt;/li&gt;
&lt;li&gt;make dired-rsync process dest with expand-file-name&lt;/li&gt;
&lt;li&gt;we now support remote to remote with an ugly port forward hack&lt;/li&gt;
&lt;li&gt;prompt the user for a passphrase if we detect stall in process&lt;/li&gt;
&lt;li&gt;add some basic ert tests&lt;/li&gt;
&lt;li&gt;new customisation option dired-rsync-source-files&lt;/li&gt;
&lt;li&gt;new customisation hook dired-rsync-failed-hook&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Happy file syncing ;-)&lt;/p&gt;
</content><category term="geek"></category><category term="dired"></category><category term="dired-rsync"></category><category term="emacs"></category></entry><entry><title>dired-rsync 0.4 released</title><link href="https://www.bennee.com/~alex/blog/2018/06/01/dired-rsync-0-4-released/" rel="alternate"></link><published>2018-06-01T18:12:00+01:00</published><updated>2018-06-01T18:12:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2018-06-01:/~alex/blog/2018/06/01/dired-rsync-0-4-released/</id><summary type="html">&lt;p&gt;I started hacking on this a while back but I've finally done the house-keeping tasks required to make it a proper grown up package.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/stsquad/dired-rsync"&gt;dired-rsync&lt;/a&gt; is a simple command which you can use to trigger an rsync copy from within dired. This is especially useful when you want to copy …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I started hacking on this a while back but I've finally done the house-keeping tasks required to make it a proper grown up package.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/stsquad/dired-rsync"&gt;dired-rsync&lt;/a&gt; is a simple command which you can use to trigger an rsync copy from within dired. This is especially useful when you want to copy across large files from a remote server without locking up Emacs/Tramp. The rsync just runs as an inferior process in the background.&lt;/p&gt;
&lt;p&gt;Today was mainly a process of cleaning up the CI and fixing any issues with it. I'd still like to add some proper tests but the whole thing is interactive and that seems to be tricky for Emacs to test. Anyway I've now tagged 0.4 so it will be available from MELPA Stable once it rebuilds. You can of course grab the building edge from MELPA any time ;-)&lt;/p&gt;
</content><category term="geek"></category><category term="dired"></category><category term="elisp"></category><category term="emacs"></category><category term="dired-rsync"></category></entry><entry><title>Working with dired</title><link href="https://www.bennee.com/~alex/blog/2018/04/07/working-with-dired/" rel="alternate"></link><published>2018-04-07T11:12:00+01:00</published><updated>2018-04-07T11:12:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2018-04-07:/~alex/blog/2018/04/07/working-with-dired/</id><summary type="html">&lt;p&gt;I've been making a lot more use of dired recently. One use case is copying files from my remote server to my home machine. Doing this directly from dired, even with the power of tramp, is a little too time consuming and potentially locks up your session for large files …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've been making a lot more use of dired recently. One use case is copying files from my remote server to my home machine. Doing this directly from dired, even with the power of tramp, is a little too time consuming and potentially locks up your session for large files. While browsing reddit &lt;a class="reference internal" href="#r-emacs"&gt;r/emacs&lt;/a&gt; I found a reference to &lt;cite&gt;this post &amp;lt;https://vxlabs.com/2018/03/30/asynchronous-rsync-with-emacs-dired-and-tramp/&amp;gt;&lt;/cite&gt; that spurred me to look at spawning rsync from dired some more.&lt;/p&gt;
&lt;p&gt;:: &lt;span class="target" id="r-emacs"&gt;r/emacs&lt;/span&gt;: &lt;a class="reference external" href="http://reddit.com/r/emacs"&gt;http://reddit.com/r/emacs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately the solution is currently sitting in a pull-request to what looks like an orphaned package. I also ran into some other problems with the handling of where rsync needs to be run from so rather than unpicking some unfamiliar code I decided to re-implement everything in my &lt;cite&gt;own package &amp;lt;https://github.com/stsquad/dired-rsync&amp;gt;&lt;/cite&gt;.&lt;/p&gt;
&lt;p&gt;I've still got some debugging to do to get it to cleanly handle multiple sessions as well as a more detailed mode-line status. Once I'm happy I'll tag a 0.1 and get it submitted to MELPA.&lt;/p&gt;
&lt;p&gt;While getting more familiar with dired I also came up with this little helper:&lt;/p&gt;
&lt;pre class="code elisp literal-block"&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;defun&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;my-dired-frame&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Open up a dired frame which closes on exit.&amp;quot;&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;interactive&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;switch-to-buffer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;dired&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;local-set-key&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;kbd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;C-x C-c&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;lambda&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;interactive&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;kill-this-buffer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;save-buffers-kill-terminal&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;'t&lt;/span&gt;&lt;span class="p"&gt;))))&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Which is paired with a simple alias in my shell setup:&lt;/p&gt;
&lt;pre class="code shell literal-block"&gt;
&lt;span class="nb"&gt;alias&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;dired&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;emacsclient -a '' -t -e '(my-dired-frame default-directory)'&amp;quot;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;This works really nicely for popping up a dired frame in your terminal window and cleaning itself up when you exit.&lt;/p&gt;
</content><category term="geek"></category><category term="dired"></category><category term="dired-rsync"></category><category term="emacs"></category></entry><entry><title>Solving the HKG18 puzzle with org-mode</title><link href="https://www.bennee.com/~alex/blog/2018/03/26/solving-the-hkg18-puzzle-with-org-mode/" rel="alternate"></link><published>2018-03-26T11:19:00+01:00</published><updated>2018-03-26T11:19:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2018-03-26:/~alex/blog/2018/03/26/solving-the-hkg18-puzzle-with-org-mode/</id><summary type="html">&lt;p&gt;One of the traditions I like about Linaro's Connect event is the
conference puzzle. Usually set by &lt;a href="https://www.linaro.org/author/dave-pigott/"&gt;Dave Piggot&lt;/a&gt; they provide a challenge
to your jet lagged brain. Full disclosure: I did not complete the
puzzle in time. In fact when Dave explained it I realised the answer
had been …&lt;/p&gt;</summary><content type="html">&lt;p&gt;One of the traditions I like about Linaro's Connect event is the
conference puzzle. Usually set by &lt;a href="https://www.linaro.org/author/dave-pigott/"&gt;Dave Piggot&lt;/a&gt; they provide a challenge
to your jet lagged brain. Full disclosure: I did not complete the
puzzle in time. In fact when Dave explained it I realised the answer
had been staring me in the face. However I thought a successful walk
through would make for a more entertaining read ;-)&lt;/p&gt;
&lt;p&gt;First the Puzzle:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Take the clues below and solve them. Once solved, figure out what the
hex numbers mean and then you should be able to associate each of the
clue solutions with their respective hex numbers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table id="org530cfaf" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"&gt;


&lt;colgroup&gt;
&lt;col  class="org-left" /&gt;

&lt;col  class="org-left" /&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="col" class="org-left"&gt;Clue&lt;/th&gt;
&lt;th scope="col" class="org-left"&gt;Hex Number&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;Lava Ale Code&lt;/td&gt;
&lt;td class="org-left"&gt;1114DBA&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Be Google Roe&lt;/td&gt;
&lt;td class="org-left"&gt;114F6BE&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Natural Gin&lt;/td&gt;
&lt;td class="org-left"&gt;114F72A&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Pope Charger&lt;/td&gt;
&lt;td class="org-left"&gt;121EE50&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Dolt And Hunk&lt;/td&gt;
&lt;td class="org-left"&gt;12264BC&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Monk Hops Net&lt;/td&gt;
&lt;td class="org-left"&gt;122D9D9&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Is Enriched Tin&lt;/td&gt;
&lt;td class="org-left"&gt;123C1EF&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Bran Hearing Kin&lt;/td&gt;
&lt;td class="org-left"&gt;1245D6E&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Enter Slim Beer&lt;/td&gt;
&lt;td class="org-left"&gt;127B78E&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Herbal Cabbages&lt;/td&gt;
&lt;td class="org-left"&gt;1282FDD&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Jan Venom Hon Nun&lt;/td&gt;
&lt;td class="org-left"&gt;12853C5&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;A Cherry Skull&lt;/td&gt;
&lt;td class="org-left"&gt;1287B3C&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Each Noun Lands&lt;/td&gt;
&lt;td class="org-left"&gt;1298F0B&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Wave Zone Kits&lt;/td&gt;
&lt;td class="org-left"&gt;12A024C&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Avid Null Sorts&lt;/td&gt;
&lt;td class="org-left"&gt;12A5190&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Handcars All Trim&lt;/td&gt;
&lt;td class="org-left"&gt;12C76DC&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h1&gt;Clues&lt;/h1&gt;
&lt;p&gt;It looks like all the clues are anagrams. I was lazy and just used the
first online anagram solver that Google pointed me at. However we can
automate this by combining org-mode with Python and the excellent
Beautiful Soup library.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;bs4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;BeautifulSoup&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;re&lt;/span&gt;

&lt;span class="c1"&gt;# ask internet to solve the puzzle&lt;/span&gt;
&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;http://anagram-solver.net/&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;anagram&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;%20&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# fish out the answers&lt;/span&gt;
&lt;span class="n"&gt;soup&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;BeautifulSoup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;answers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;soup&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;ul&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;class_&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;answers&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;li&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;answers&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;find_all&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;li&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;li&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# filter out non computer related or poor results&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Elmer Berstein&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Tim-Berners Lee&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Babbage Charles&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Calude Shannon&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;continue&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# filter out non proper names&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;[a-z] [A-Z]&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;break&lt;/span&gt;

&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;So with &lt;code&gt;:var anagram=clues[2,0]&lt;/code&gt; we get&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;Ada Lovelace
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I admit the "if result in []" is a bit of hack.&lt;/p&gt;
&lt;h1&gt;Hex Numbers&lt;/h1&gt;
&lt;p&gt;The hex numbers could be anything. But lets first start by converting
to something else.&lt;/p&gt;
&lt;table id="orgf38fe0d" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"&gt;


&lt;colgroup&gt;
&lt;col  class="org-left" /&gt;

&lt;col  class="org-right" /&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="col" class="org-left"&gt;Hex Prompt&lt;/th&gt;
&lt;th scope="col" class="org-right"&gt;Number&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;1114DBA&lt;/td&gt;
&lt;td class="org-right"&gt;17911226&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;114F6BE&lt;/td&gt;
&lt;td class="org-right"&gt;18151102&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;114F72A&lt;/td&gt;
&lt;td class="org-right"&gt;18151210&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;121EE50&lt;/td&gt;
&lt;td class="org-right"&gt;19000912&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;12264BC&lt;/td&gt;
&lt;td class="org-right"&gt;19031228&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;122D9D9&lt;/td&gt;
&lt;td class="org-right"&gt;19061209&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;123C1EF&lt;/td&gt;
&lt;td class="org-right"&gt;19120623&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;1245D6E&lt;/td&gt;
&lt;td class="org-right"&gt;19160430&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;127B78E&lt;/td&gt;
&lt;td class="org-right"&gt;19380110&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;1282FDD&lt;/td&gt;
&lt;td class="org-right"&gt;19410909&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;12853C5&lt;/td&gt;
&lt;td class="org-right"&gt;19420101&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;1287B3C&lt;/td&gt;
&lt;td class="org-right"&gt;19430204&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;1298F0B&lt;/td&gt;
&lt;td class="org-right"&gt;19500811&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;12A024C&lt;/td&gt;
&lt;td class="org-right"&gt;19530316&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;12A5190&lt;/td&gt;
&lt;td class="org-right"&gt;19550608&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;12C76DC&lt;/td&gt;
&lt;td class="org-right"&gt;19691228&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;The #+TBLFM: is &lt;code&gt;$1='(identity remote(clues,@@#$2))::$2='(string-to-number $1 16)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This is where I went down a blind alley. The fact all they all had the
top bit set made me think that Dave was giving a hint to the purpose
of the hex number in the way many &lt;a href="https://en.wikipedia.org/wiki/Cryptic_crossword"&gt;cryptic crosswords&lt;/a&gt; do (I know he is
a fan of these). However the more obvious answer is that everyone in
the list was born in the last millennium.&lt;/p&gt;
&lt;h1&gt;Looking up Birth Dates&lt;/h1&gt;
&lt;p&gt;Now I could go through all the names by hand and look up their birth
dates but as we are automating things perhaps we can use computers for
what they are good at. Unfortunately there isn't a simple web-api for
looking up this stuff. However there is a project called &lt;a href="http://wiki.dbpedia.org/about"&gt;DBpedia&lt;/a&gt; which
takes Wikipedia's data and attempts to make it semantically useful. We
can query this using a semantic query language called SparQL. If only
I could call it from Emacs&amp;#x2026;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;select distinct ?birthDate {
  dbr:$name dbo:birthDate|dbp:birthDate ?birthDate
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;So calling with &lt;code&gt;:var name="Ada_Lovelace"&lt;/code&gt; we get&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&amp;quot;birthDate&amp;quot;
1815-12-10
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Of course it shouldn't be a surprise this exists. And in what I hope
is a growing trend &lt;a href="https://github.com/ljos/sparql-mode"&gt;sparql-mode&lt;/a&gt; supports org-mode out of the box. The
$name in the snippet is expanded from the passed in variables to the
function. This makes it a general purpose lookup function we can use
for all our names.&lt;/p&gt;
&lt;p&gt;There are a couple of wrinkles. We need to format the name we are
looking up with underscores to make a valid URL. Also the output spits
out a header and possible multiple birth dates. We can solve this with
a little wrapper function. It also introduces some rate limiting so we
don't smash DBpedia's public SPARQL endpoint.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;limit&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sleep&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mh"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;let&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;replace&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;all&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;#39;((&lt;/span&gt;&lt;span class="s"&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;_&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Von&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;von&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ret&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;eval&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;car&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;from&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;string&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;(org-sbe get-dob (name $&lt;/span&gt;&lt;span class="se"&gt;\&amp;quot;&lt;/span&gt;&lt;span class="s"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\&amp;quot;&lt;/span&gt;&lt;span class="s"&gt;))&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;))))))&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;string&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;replace&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;regexp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;in&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;string&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;-&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cdr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;lines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ret&lt;/span&gt;&lt;span class="p"&gt;))))))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Calling with &lt;code&gt;:var name="Ada Lovelace"&lt;/code&gt; we get&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="mf"&gt;18151210&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h1&gt;Full Solution&lt;/h1&gt;
&lt;p&gt;So now we know what we are doing we need to solve all the puzzles and
lookup the data. Fortunately org-mode's tables are fully functional
spreadsheets except they are not limited to simple transformations.
Each formula can be a fully realised bit of elisp, calling other
source blocks as needed.&lt;/p&gt;
&lt;table id="orgb836df6" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"&gt;


&lt;colgroup&gt;
&lt;col  class="org-left" /&gt;

&lt;col  class="org-left" /&gt;

&lt;col  class="org-right" /&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="col" class="org-left"&gt;Clue&lt;/th&gt;
&lt;th scope="col" class="org-left"&gt;Solution&lt;/th&gt;
&lt;th scope="col" class="org-right"&gt;DOB&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;Herbal Cabbages&lt;/td&gt;
&lt;td class="org-left"&gt;Charles Babbage&lt;/td&gt;
&lt;td class="org-right"&gt;17911226&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Be Google Roe&lt;/td&gt;
&lt;td class="org-left"&gt;George Boole&lt;/td&gt;
&lt;td class="org-right"&gt;18151102&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Lava Ale Code&lt;/td&gt;
&lt;td class="org-left"&gt;Ada Lovelace&lt;/td&gt;
&lt;td class="org-right"&gt;18151210&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;A Cherry Skull&lt;/td&gt;
&lt;td class="org-left"&gt;Haskell Curry&lt;/td&gt;
&lt;td class="org-right"&gt;19000912&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Jan Venom Hon Nun&lt;/td&gt;
&lt;td class="org-left"&gt;John Von Neumann&lt;/td&gt;
&lt;td class="org-right"&gt;19031228&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Pope Charger&lt;/td&gt;
&lt;td class="org-left"&gt;Grace Hopper&lt;/td&gt;
&lt;td class="org-right"&gt;19061209&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Natural Gin&lt;/td&gt;
&lt;td class="org-left"&gt;Alan Turing&lt;/td&gt;
&lt;td class="org-right"&gt;19120623&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Each Noun Lands&lt;/td&gt;
&lt;td class="org-left"&gt;Claude Shannon&lt;/td&gt;
&lt;td class="org-right"&gt;19160430&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Dolt And Hunk&lt;/td&gt;
&lt;td class="org-left"&gt;Donald Knuth&lt;/td&gt;
&lt;td class="org-right"&gt;19380110&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Is Enriched Tin&lt;/td&gt;
&lt;td class="org-left"&gt;Dennis Ritchie&lt;/td&gt;
&lt;td class="org-right"&gt;19410909&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Bran Hearing Kin&lt;/td&gt;
&lt;td class="org-left"&gt;Brian Kernighan&lt;/td&gt;
&lt;td class="org-right"&gt;19420101&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Monk Hops Net&lt;/td&gt;
&lt;td class="org-left"&gt;Ken Thompson&lt;/td&gt;
&lt;td class="org-right"&gt;19430204&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Wave Zone Kits&lt;/td&gt;
&lt;td class="org-left"&gt;Steve Wozniak&lt;/td&gt;
&lt;td class="org-right"&gt;19500811&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Handcars All Trim&lt;/td&gt;
&lt;td class="org-left"&gt;Richard Stallman&lt;/td&gt;
&lt;td class="org-right"&gt;19530316&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Enter Slim Beer&lt;/td&gt;
&lt;td class="org-left"&gt;Tim Berners-Lee&lt;/td&gt;
&lt;td class="org-right"&gt;19550608&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td class="org-left"&gt;Avid Null Sorts&lt;/td&gt;
&lt;td class="org-left"&gt;Linus Torvalds&lt;/td&gt;
&lt;td class="org-right"&gt;19691228&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;The #+TBLFM: is &lt;code&gt;$1='(identity remote(clues,@@#$1))::$2='(org-sbe solve-anagram (anagram $$1))::$3='(org-sbe frob-dob (name $$2))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The hex numbers are helpfully sorted so as long as we sort the clues
table by the looked up date of birth using &lt;em&gt;M-x org-table-sort-lines&lt;/em&gt;
we are good to go.&lt;/p&gt;</content><category term="geek"></category><category term="connect"></category><category term="emacs"></category><category term="linaro"></category><category term="org-mode"></category></entry><entry><title>Workbooks for Benchmarking</title><link href="https://www.bennee.com/~alex/blog/2018/02/21/workbooks-for-benchmarking/" rel="alternate"></link><published>2018-02-21T20:34:00+00:00</published><updated>2018-02-21T20:34:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2018-02-21:/~alex/blog/2018/02/21/workbooks-for-benchmarking/</id><summary type="html">&lt;p&gt;While working on a major re-factor of &lt;a class="reference external" href="http://lists.gnu.org/archive/html/qemu-devel/2018-02/msg01330.html"&gt;QEMU's softfloat code&lt;/a&gt; I've been doing a lot of benchmarking. It can be quite tedious work as you need to be careful you've run the correct steps on the correct binaries and keeping notes is important. It is a task that cries out …&lt;/p&gt;</summary><content type="html">&lt;p&gt;While working on a major re-factor of &lt;a class="reference external" href="http://lists.gnu.org/archive/html/qemu-devel/2018-02/msg01330.html"&gt;QEMU's softfloat code&lt;/a&gt; I've been doing a lot of benchmarking. It can be quite tedious work as you need to be careful you've run the correct steps on the correct binaries and keeping notes is important. It is a task that cries out for scripting but that in itself can be a compromise as you end up stitching a pipeline of commands together in something like perl. You may script it all in a language designed for this sort of thing like R but then find your final upload step is a pain to implement.&lt;/p&gt;
&lt;p&gt;One solution to this is to use a literate programming workbook like &lt;a class="reference external" href="https://github.com/stsquad/testcases/blob/master/aarch64/benchmark.org"&gt;this&lt;/a&gt;. Literate programming is a style where you interleave your code with natural prose describing the steps you go through. This is different from simply having well commented code in a source tree. For one thing you do not have to leap around a large code base as everything you need is on the file you are reading, from top to bottom. There are many solutions out there including &lt;a class="reference external" href="https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks"&gt;various python based examples&lt;/a&gt;. Of course being a happy Emacs user I use one of its stand-out features &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Org-mode"&gt;org-mode&lt;/a&gt; which comes with multi-language &lt;a class="reference external" href="https://orgmode.org/worg/org-contrib/babel/"&gt;org-babel&lt;/a&gt; support. This allows me to document my benchmarking while scripting up the steps in a variety of &amp;quot;languages&amp;quot; depending on the my needs at the time. Let's take a look at the first section:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="rubric" id="orgb7da4a0"&gt;1 Binaries To Test&lt;/p&gt;
&lt;div id="text-1" class="outline-text-2"&gt;&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Here we have several tables of binaries to test. We refer to the&lt;/div&gt;
&lt;div class="line"&gt;current benchmarking set from the next stage, Run Benchmark.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;For a final test we might compare the system QEMU with a reference&lt;/div&gt;
&lt;div class="line"&gt;build as well as our current build.&lt;/div&gt;
&lt;/div&gt;
&lt;table border="1" class="docutils"&gt;
&lt;colgroup&gt;
&lt;col width="81%" /&gt;
&lt;col width="19%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Binary&lt;/th&gt;
&lt;th class="head"&gt;title&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;/usr/bin/qemu-aarch64&lt;/td&gt;
&lt;td&gt;system-2.5.log&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;~/lsrc/qemu/qemu-builddirs/arm-targets.build/aarch64-linux-user/qemu-aarch64&lt;/td&gt;
&lt;td&gt;master.log&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;~/lsrc/qemu/qemu.git/aarch64-linux-user/qemu-aarch64&lt;/td&gt;
&lt;td&gt;softfloat-v4.log&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/blockquote&gt;&lt;p&gt;Well that is certainly fairly explanatory. These are named org-mode tables which can be referred to in other code snippets and passed in as variables. So the next job is to run the benchmark itself:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="rubric" id="org5a36bd2"&gt;2 Run Benchmark&lt;/p&gt;
&lt;div id="text-2" class="outline-text-2"&gt;&lt;p&gt;This runs the benchmark against each binary we have selected above.&lt;/p&gt;
&lt;pre class="literal-block"&gt;
import subprocess
import os

runs=[]

for qemu,logname in files:
cmd=&amp;quot;taskset -c 0 %s ./vector-benchmark -n %s | tee %s&amp;quot; % (qemu, tests, logname)
    subprocess.call(cmd, shell=True)
    runs.append(logname)

    return runs
&lt;/pre&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;So why use python as the test runner? Well truth is whenever I end up munging arrays in shell script I forget the syntax and end up jumping through all sorts of hoops. Easier just to have some simple python. I use python again later to read the data back into an org-table so I can pass it to the next step, graphing:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre class="literal-block"&gt;
set title &amp;quot;Vector Benchmark Results (lower is better)&amp;quot;
set style data histograms
set style fill solid 1.0 border lt -1

set xtics rotate by 90 right
set yrange [:]
set xlabel noenhanced
set ylabel &amp;quot;nsecs/Kop&amp;quot; noenhanced
set xtics noenhanced
set ytics noenhanced
set boxwidth 1
set xtics format &amp;quot;&amp;quot;
set xtics scale 0
set grid ytics
set term pngcairo size 1200,500

plot for [i=2:5] data using i:xtic(1) title columnhead
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is a &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Gnuplot"&gt;GNU Plot&lt;/a&gt; script which takes the data and plots an image from it. org-mode takes care of the details of marshalling the table data into GNU Plot so all this script is really concerned with is setting styles and titles. The language is capable of some fairly advanced stuff but I could always pre-process the data with something else if I needed to.&lt;/p&gt;
&lt;p&gt;Finally I need to upload my graph to an image hosting service to share with my colleges. This can be done with a elaborate curl command but I have another trick at my disposal thanks to the excellent &lt;a class="reference external" href="https://github.com/pashky/restclient.el"&gt;restclient-mode&lt;/a&gt;. This mode is actually designed for interactive debugging of REST APIs but it is also easily to use from an org-mode source block. So the whole thing looks like a HTTP session:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre class="literal-block"&gt;
:client_id = feedbeef

# Upload images to imgur
POST https://api.imgur.com/3/image
Authorization: Client-ID :client_id
Content-type: image/png

&amp;lt; benchmark.png
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;Finally because the above dumps all the headers when run (which is very handy for debugging) I actually only want the URL in most cases. I can do this simply enough in elisp:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre class="literal-block"&gt;
#+name: post-to-imgur
#+begin_src emacs-lisp :var json-string=upload-to-imgur()
  (when (string-match
         (rx &amp;quot;link&amp;quot; (one-or-more (any &amp;quot;\&amp;quot;:&amp;quot; whitespace))
             (group (one-or-more (not (any &amp;quot;\&amp;quot;&amp;quot;)))))
         json-string)
    (match-string 1 json-string))
#+end_src
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;The :var line calls the restclient-mode function automatically and passes it the result which it can then extract the final URL from.&lt;/p&gt;
&lt;p&gt;And there you have it, my entire benchmarking workflow document in a single file which I can read through tweaking each step as I go. This isn't the first time I've done this sort of thing. As I use org-mode extensively as a logbook to keep track of my upstream work I've slowly grown a series of scripts for common tasks. For example every patch series and pull request I post is done via org. I keep the whole thing in a git repository so each time I finish a sequence I can commit the results into the repository as a permanent record of what steps I ran.&lt;/p&gt;
&lt;p&gt;If you want even more inspiration I suggest you look at John Kitchen's &lt;a class="reference external" href="http://kitchingroup.cheme.cmu.edu/scimax"&gt;scimax&lt;/a&gt; work. As a publishing scientist he makes extensive use of org-mode when writing his papers. He is able to include the main prose with the code to plot the graphs and tables in a single source document from which his camera ready documents are generated. Should he ever need to reproduce any work his exact steps are all there in the source document. Yet another example of why org-mode is awesome ;-)&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;
</content><category term="general"></category><category term="benchmark"></category><category term="emacs"></category><category term="linaro"></category><category term="org-mode"></category><category term="qemu"></category></entry><entry><title>FOSDEM 2018</title><link href="https://www.bennee.com/~alex/blog/2018/02/06/fosdem-2018/" rel="alternate"></link><published>2018-02-06T09:36:00+00:00</published><updated>2018-02-06T09:36:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2018-02-06:/~alex/blog/2018/02/06/fosdem-2018/</id><summary type="html">&lt;p&gt;I've just returned from a weekend in Brussels for my first ever FOSDEM - the Free and Open Source Developers, European Meeting. It's been on my list of conferences to go to for some time and thanks to getting my talk accepted, my &lt;a class="reference external" href="http://www.linaro.org"&gt;employer&lt;/a&gt; financed the cost of travel and hotels …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've just returned from a weekend in Brussels for my first ever FOSDEM - the Free and Open Source Developers, European Meeting. It's been on my list of conferences to go to for some time and thanks to getting my talk accepted, my &lt;a class="reference external" href="http://www.linaro.org"&gt;employer&lt;/a&gt; financed the cost of travel and hotels. Thanks to the support of the &lt;a class="reference external" href="http://www.ulb.ac.be/"&gt;Université libre de Bruxelles (ULB)&lt;/a&gt; the event itself is free and run entirely by volunteers. As you can expect from the name they also have a strong commitment to free and open source software.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image0" class="alignright size-thumbnail wp-image-2761" src="/~alex/blog/wp-content/uploads/2018/02/fos-150x33.jpg" style="width: 150px; height: 33px;" /&gt;&lt;/p&gt;
&lt;p&gt;The first thing that struck me about the conference is how wide ranging it was. There were talks on everything from the internals of debugging tools to developing public policy. When I first loaded up their excellent companion app (naturally via &lt;a class="reference external" href="https://f-droid.org/en/packages/be.digitalia.fosdem/"&gt;the F-Droid repository&lt;/a&gt;) I was somewhat overwhelmed by the choice. As it is a free conference there is no limit on the numbers who can attend which means you are not always guarenteed to be able to get into every talk. In fact during the event I walked past many long queues for the more popular talks. In the end I ended up just bookmarking all the talks I was interested in and deciding which one to go to depending on how I felt at the time. Fortunately FOSDEM have a strong archiving policy and video most of their talks so I'll be spending the next few weeks catching up on the ones I missed.&lt;/p&gt;
&lt;p&gt;There now follows a non-exhaustive list of the most interesting ones I was able to see live:&lt;/p&gt;
&lt;p&gt;Dashamir's &lt;a class="reference external" href="https://fosdem.org/2018/schedule/event/easy_gnupg/"&gt;talk on EasyGPG&lt;/a&gt; dealt with the opinionated decisions it makes to try and make the use of GnuPG more intuitive to those not versed in the full gory details of public key cryptography. Although I use GPG mainly for signing GIT pull requests I really should make better use it over all. The split-key solution to backups was particularly interesting. I suspect I'll need a little convincing before I put part of my key in the cloud but I'll certainly check out his scripts.&lt;/p&gt;
&lt;p&gt;Liam's &lt;a class="reference external" href="https://fosdem.org/2018/schedule/event/alternative_histories/"&gt;A Circuit Less Travelled&lt;/a&gt; was an entertaining tour of some of the technologies and ideas from early computer history that got abandoned on the wayside. These ideas were often to be re-invented in a less superior form as engineers realised the error of their ways as technology advanced. The later half of the talk turns into a bit of LISP love-fest but as an Emacs user with an ever growing config file that is fine by me ;-)&lt;/p&gt;
&lt;p&gt;Following on in the history vein was Steven Goodwin's talk on &lt;a class="reference external" href="https://fosdem.org/2018/schedule/event/digital_archaeology/"&gt;Digital Archaeology&lt;/a&gt; which was a salutatory reminder of the amount of recent history that is getting lost as computing's breakneck pace has discarded old physical formats in lieu of newer equally short lived formats. It reminded me I should really do something about the 3 boxes of floppy disks I have under my desk. I also need to schedule a visit to the &lt;a class="reference external" href="http://www.computinghistory.org.uk/"&gt;Computer History Museum&lt;/a&gt; with my children seeing as it is more or less on my doorstep.&lt;/p&gt;
&lt;p&gt;There was a tongue in check &lt;a class="reference external" href="http://n-gate.com/fosdem/"&gt;preview&lt;/a&gt; that described the &lt;a class="reference external" href="https://fosdem.org/2018/schedule/event/edsac/"&gt;EDSAC talk&lt;/a&gt; as recreating &amp;quot;an ancient computer without any of the things that made it interesting&amp;quot;. This was was a little unkind. Although the project re-implemented the computation parts in a tiny little FPGA the core idea was to introduce potential students to the physicality of the early computers. After an introduction to the hoary architecture of the original EDSAC and &lt;a class="reference external" href="https://www.youtube.com/watch?v=DcZ1bFfDvSQ"&gt;the Wheeler Jump&lt;/a&gt; Mary introduced the hardware they re-imagined for the project. The first was an optical reader developed to read in paper tapes although this time ones printed on thermal receipt paper. This included an in-depth review of the problems of smoothing out analogue inputs to get reliable signals from their optical sensors which mirrors the problems the rebuild is facing with nature of the valves used in EDSAC. It is a shame they couldn't come up with some way to involve a valve but I guess high-tension supplies and school kids don't mix well. However they did come up with a way of re-creating the original acoustic mercury delay lines but this time with a tube of air and some 3D printed parabolic ends.&lt;/p&gt;
&lt;p&gt;The big geek event was the much anticipated announcement of RISC-V hardware during the &lt;a class="reference external" href="https://fosdem.org/2018/schedule/event/riscv/"&gt;RISC-V enablement talk&lt;/a&gt;. It seemed to be an open secret the announcement was coming but it still garnered hearty applause when it finally came. I should point out I'm indirectly employed by companies with an interest in a competing architecture but it is still good to see other stuff out there. The board is fairly open but there are still some peripheral IPs which were closed which shows just how tricky getting to fully-free hardware is going to be. As I understand the RISC-V's licensing model the ISA is open (unlike for example an ARM Architecture License) but individual companies can still have closed implementations which they license to be manufactured which is how I assume SiFive funds development. The actual CPU implementation is still very much a black box you have to take on trust.&lt;/p&gt;
&lt;p&gt;Finally for those that are interested &lt;a class="reference external" href="https://fosdem.org/2018/schedule/event/vai_vectors_meet_virtualization/"&gt;my talk is already online&lt;/a&gt; for those that are interested in what I'm currently working on. The slides have been slightly cropped in the video but if you follow the &lt;a class="reference external" href="http://people.linaro.org/~alex.bennee/org/presentations/vectors-meet-virt.html"&gt;link to the HTML version&lt;/a&gt; you can read along on your machine.&lt;/p&gt;
&lt;p&gt;I have to say FOSDEM's setup is pretty impressive. Although there was a volunteer in each room to deal with fire safety and replace microphones all the recording is fully automated. There are rather fancy hand crafted wooden boxes in each room which take the feed from your laptop and mux it with the camera. I got the email from the automated system asking me to review a preview of my talk about half and hour after I gave it. It took a little longer for the final product to get encoded and online but it's certainly the nicest system I've come across so far.&lt;/p&gt;
&lt;p&gt;All in all I can heartily recommend FOSDEM for anyone in an interest is FLOSS. It's a packed schedule and there is going to be something for everyone there. Big thanks to all the volunteers and organisers and I hope I can make it next year ;-)&lt;/p&gt;
</content><category term="geek"></category><category term="conference"></category><category term="edsac"></category><category term="emacs"></category><category term="fosdem"></category><category term="linaro"></category><category term="lisp"></category></entry><entry><title>Edit with Emacs v1.15 released</title><link href="https://www.bennee.com/~alex/blog/2018/01/17/edit-with-emacs-v1-15-released/" rel="alternate"></link><published>2018-01-17T16:47:00+00:00</published><updated>2018-01-17T16:47:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2018-01-17:/~alex/blog/2018/01/17/edit-with-emacs-v1-15-released/</id><summary type="html">&lt;p&gt;After a bit of hiatus there was enough of a flurry of patches to make it worth pushing out a new release. I'm in a little bit of a quandary with what to do with this package now. It's obviously a useful extension for a good number of people but …&lt;/p&gt;</summary><content type="html">&lt;p&gt;After a bit of hiatus there was enough of a flurry of patches to make it worth pushing out a new release. I'm in a little bit of a quandary with what to do with this package now. It's obviously a useful extension for a good number of people but I notice the &lt;a class="reference external" href="https://github.com/stsquad/emacs_chrome/issues"&gt;slowly growing number of issues&lt;/a&gt; which I'm not making much progress on. It's hard to find time to debug and fix things when it's main state is Works For Me. There is also competition from the &lt;a class="reference external" href="https://github.com/tuvistavie/atomic-chrome"&gt;Atomic Chrome&lt;/a&gt; extension (and it's related &lt;a class="reference external" href="https://github.com/alpha22jp/atomic-chrome"&gt;emacs extension&lt;/a&gt;). It's an excellent package and has the advantage of a Chrome extension that is more actively developed and using a bi-directional web-socket to communicate with the edit server. It's been a feature I've wanted to add to Edit with Emacs for a while but my re-factoring efforts are slowed down by the fact that Javascript is not a language I'm fluent in and finding a long enough period of spare time is hard with a family. I guess this is a roundabout way of saying that realistically this package is in maintenance mode and you shouldn't expect to see any new development for the time being. I'll of course try my best to address reproducible bugs and process pull requests in a timely manner. That said please enjoy v1.15:&lt;/p&gt;
&lt;p&gt;Extension&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* Now builds for Firefox using WebExtension hooks&lt;/div&gt;
&lt;div class="line"&gt;* Use chrome.notifications instead of webkitNotifications&lt;/div&gt;
&lt;div class="line"&gt;* Use&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;p&gt;with style instead of inline for edit button
* fake &amp;quot;input&amp;quot; event to stop active page components overwriting text area&lt;/p&gt;
&lt;/p&gt;&lt;p&gt;edit-server.el&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* avoid calling make-frame-on-display for TTY setups (#103/#132/#133)&lt;/div&gt;
&lt;div class="line"&gt;* restore edit-server-default-major-mode if auto-mode lookup fails&lt;/div&gt;
&lt;div class="line"&gt;* delete window when done editing with no new frame&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Get the latest from &lt;a class="reference external" href="https://chrome.google.com/webstore/detail/edit-with-emacs/ljobjlafonikaiipfkggjbhkghgicgoh"&gt;the Chrome Webstore&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;</content><category term="geek"></category><category term="edit with emacs"></category><category term="emacs"></category></entry><entry><title>checkpatch-mode</title><link href="https://www.bennee.com/~alex/blog/2017/02/09/checkpatch-mode/" rel="alternate"></link><published>2017-02-09T15:30:00+00:00</published><updated>2017-02-09T15:30:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2017-02-09:/~alex/blog/2017/02/09/checkpatch-mode/</id><summary type="html">&lt;p&gt;A couple of weeks ago I mused that I should really collect together the &lt;a class="reference external" href="https://github.com/stsquad/my-emacs-stuff/blob/master/my-git.el#L139"&gt;various&lt;/a&gt; &lt;a class="reference external" href="https://github.com/stsquad/my-emacs-stuff/blob/master/my-email.el#L562"&gt;hacks&lt;/a&gt; to integrate checkpatch into my workflow into a consistent mode. Having a quick look around I couldn't find any other implementations and went to create the said mode. It turns out I'd created the …&lt;/p&gt;</summary><content type="html">&lt;p&gt;A couple of weeks ago I mused that I should really collect together the &lt;a class="reference external" href="https://github.com/stsquad/my-emacs-stuff/blob/master/my-git.el#L139"&gt;various&lt;/a&gt; &lt;a class="reference external" href="https://github.com/stsquad/my-emacs-stuff/blob/master/my-email.el#L562"&gt;hacks&lt;/a&gt; to integrate checkpatch into my workflow into a consistent mode. Having a quick look around I couldn't find any other implementations and went to create the said mode. It turns out I'd created the directory and done the initial commit 3 years ago. Anyway I polished it up a bit and you can now get it &lt;a class="reference external" href="https://github.com/stsquad/checkpatch-mode"&gt;here&lt;/a&gt;. I hope it's useful to the wider community and as ever patches welcome ;-)&lt;/p&gt;
</content><category term="geek"></category><category term="emacs"></category></entry><entry><title>Running Linux in QEMU's aarch64 system emulation mode</title><link href="https://www.bennee.com/~alex/blog/2014/05/09/running-linux-in-qemus-aarch64-system-emulation-mode/" rel="alternate"></link><published>2014-05-09T13:14:00+01:00</published><updated>2014-05-09T13:14:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2014-05-09:/~alex/blog/2014/05/09/running-linux-in-qemus-aarch64-system-emulation-mode/</id><summary type="html">&lt;p&gt;Since I started working on &lt;a class="reference external" href="http://translatedcode.wordpress.com/2014/04/24/64-bit-arm-usermode-emulation-in-qemu-2-0-0/"&gt;aarch64 support for QEMU&lt;/a&gt; the most frequently asked question I got was &amp;quot;when can I run aarch64 system emulation on QEMU?&amp;quot;. Well wait no more as support for a VIRT-IO based aarch64 board was recently merged into the master branch of QEMU. In this post …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Since I started working on &lt;a class="reference external" href="http://translatedcode.wordpress.com/2014/04/24/64-bit-arm-usermode-emulation-in-qemu-2-0-0/"&gt;aarch64 support for QEMU&lt;/a&gt; the most frequently asked question I got was &amp;quot;when can I run aarch64 system emulation on QEMU?&amp;quot;. Well wait no more as support for a VIRT-IO based aarch64 board was recently merged into the master branch of QEMU. In this post I'll talk about building QEMU, a rootfs and a kernel that will allow you to start experimenting with the architecture.&lt;/p&gt;
&lt;div class="section" id="quick-start"&gt;
&lt;h2&gt;Quick start&lt;/h2&gt;
&lt;p&gt;Let's first start with building and running QEMU with some pre-built images.&lt;/p&gt;
&lt;div class="section" id="build-dependancies"&gt;
&lt;h3&gt;Build Dependancies&lt;/h3&gt;
&lt;p&gt;As has been noted in the comments the &lt;em&gt;configure&lt;/em&gt; script will automatically enable features as long as the pre-requisite developer libraries are installed on your sytem. With a Debian/Ubuntu system this is easily achieved by running:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
sudo apt-get build-dep qemu
&lt;/pre&gt;
&lt;p&gt;Of course if you want to enable a feature (either a bleeding edge or non-standard) that requires additional libraries then you will need to install the appropriate development packages manually. The &lt;em&gt;config.log&lt;/em&gt; file is usually a useful first step in working out what headers are being looked for.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="building-qemu"&gt;
&lt;h3&gt;Building QEMU&lt;/h3&gt;
&lt;pre class="literal-block"&gt;
git clone git://git.qemu.org/qemu.git qemu.git
cd qemu.git
./configure --target-list=aarch64-softmmu
make
&lt;/pre&gt;
&lt;p&gt;Assuming the build ran without any problems you should now have an executable &lt;em&gt;./aarch64-softmmu/qemu-system-aarch64&lt;/em&gt; in your build directory. Grab a pre-built image from &lt;a class="reference external" href="http://people.linaro.org/~alex.bennee/images/aarch64-linux-3.15rc2-buildroot.img"&gt;here&lt;/a&gt; and we'll check it works. The image is a kernel that has been combined with an initial RAM disk (initrd) with a basic root file-system. I go into more details on how to create this later on.&lt;/p&gt;
&lt;p&gt;Be aware the command line is quite long so make sure you copy it all ;-)&lt;/p&gt;
&lt;pre class="literal-block"&gt;
wget http://people.linaro.org/~alex.bennee/images/aarch64-linux-3.15rc2-buildroot.img
./aarch64-softmmu/qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine type=virt -nographic -smp 1 -m 2048 -kernel aarch64-linux-3.15rc2-buildroot.img  --append &amp;quot;console=ttyAMA0&amp;quot;
&lt;/pre&gt;
&lt;p&gt;If all went well you should see the familiar Linux boot sequence and eventually get a login prompt. Login as root (no password) and play in the new sandbox.&lt;/p&gt;
&lt;pre class="literal-block"&gt;
... usual kernel boot output ...
Welcome to Buildroot
buildroot login: root
# uname -a
Linux buildroot 3.15.0-rc2ajb-00069-g1aae31c #39 SMP Thu Apr 24 11:48:57 BST 2014 aarch64 GNU/Linux
&lt;/pre&gt;
&lt;p&gt;Once you are done type &lt;em&gt;C-a c&lt;/em&gt; to enter QEMU's monitor mode and then quit to exit.&lt;/p&gt;
&lt;pre class="literal-block"&gt;
QEMU 2.0.50 monitor - type 'help' for more information
(qemu) quit
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="accessing-your-local-file-system"&gt;
&lt;h2&gt;Accessing your local file-system&lt;/h2&gt;
&lt;p&gt;This is all very well but the test image only has a fairly limited root file-system attached to it. It will be a lot more useful if you could access your host file-system to test other binaries. Thanks to VIRT FS we can achieve this without too much hassle. Use the following extended QEMU command line:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
./aarch64-softmmu/qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine type=virt -nographic -smp 1 -m 2048 -kernel aarch64-linux-3.15rc2-buildroot.img --append &amp;quot;console=ttyAMA0&amp;quot; -fsdev local,id=r,path=/home/alex/lsrc/qemu/rootfs/trusty-core,security_model=none -device virtio-9p-device,fsdev=r,mount_tag=r
&lt;/pre&gt;
&lt;p&gt;This sets up the selected path to be mountable by the guest. In this case I'm using an Ubuntu rootfs which can be downloaded from &lt;a class="reference external" href="http://cdimages.ubuntu.com/ubuntu-core/releases/14.04/release/"&gt;here&lt;/a&gt;. Once the system has booted the following commands on the guest will mount the local file-system:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
Welcome to Buildroot
buildroot login: root
# mount -t 9p -o trans=virtio r /mnt
# ls -l /mnt/
total 84
drwxr-xr-x    2 default  default       4096 Apr  2  2014 bin
drwxr-xr-x    2 default  default       4096 Feb 27  2014 boot
drwxr-xr-x    3 default  default       4096 Apr  2  2014 dev
drwxr-xr-x   64 default  default       4096 Apr  3  2014 etc
drwxr-xr-x    2 default  default       4096 Feb 27  2014 home
..
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="building-your-own-rootfs"&gt;
&lt;h2&gt;Building your own rootfs&lt;/h2&gt;
&lt;p&gt;There are many solutions to this (including downloading &lt;a class="reference external" href="http://www.linaro.org/downloads/"&gt;Linaro engineering builds&lt;/a&gt;) but the simplest one I've found for rolling your own from scratch is the &lt;a class="reference external" href="http://buildroot.uclibc.org/"&gt;Buildroot project&lt;/a&gt;. It present the familiar kernel menuconfig interface and deals with all the hassle of setting up cross compilers for you.&lt;/p&gt;
&lt;pre class="literal-block"&gt;
git clone git://git.buildroot.net/buildroot buildroot.git
cd buildroot.git
make menuconfig
&lt;/pre&gt;
&lt;p&gt;There are lots of configuration options to choose from but the following are what I use:&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* Target Options -&amp;gt; Target Architecture(AArch64)&lt;/div&gt;
&lt;div class="line"&gt;* Toolchain -&amp;gt; Toolchain type (External toolchain)&lt;/div&gt;
&lt;div class="line"&gt;* Toolchain -&amp;gt; Toolchain (Linaro AArch64 14.02)&lt;/div&gt;
&lt;div class="line"&gt;* System configuration -&amp;gt; Run a getty (login prompt) after boot (BR2_TARGET_GENERIC_GETTY)&lt;/div&gt;
&lt;div class="line"&gt;* System configuration -&amp;gt; getty options -&amp;gt; TTY Port (ttyAMA0) (BR2_TARGET_GENERIC_GETTY_PORT)&lt;/div&gt;
&lt;div class="line"&gt;* Target Packages -&amp;gt; Show packages that are also provided by busybox (BR2_PACKAGE_BUSYBOX_SHOW_OTHERS)&lt;/div&gt;
&lt;div class="line"&gt;* Filesystem images -&amp;gt; cpio the root filesystem (for use as an initial RAM filesystem) (BR2_TARGET_ROOTFS_CPIO)&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The last one will be important for when we build the kernel next. Once you have configured buildroot to your liking it's time to type make and leave it for a while as you enjoy a nice lunch ;-)&lt;/p&gt;
&lt;pre class="literal-block"&gt;
make
.. lots of output ..
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="building-a-kernel"&gt;
&lt;h2&gt;Building a kernel&lt;/h2&gt;
&lt;p&gt;For building the kernel I use my distro's aarch64 cross-compiler. On Debian/Ubuntu systems this is easily added with:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ sudo apt-get install gcc-aarch64-linux-gnu
&lt;/pre&gt;
&lt;p&gt;And the usual kernel building process, with a few tweaks for cross compiling:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git linux.git
cd linux.git
ARCH=arm64 make menuconfig
&lt;/pre&gt;
&lt;p&gt;I've put my full config up &lt;a class="reference external" href="http://people.linaro.org/~alex.bennee/images/aarch64-kernel.config"&gt;here&lt;/a&gt; but important options to note are:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
CONFIG_CROSS_COMPILE=&amp;quot;aarch64-linux-gnu-&amp;quot;                                               # needs to match your cross-compiler prefix
CONFIG_INITRAMFS_SOURCE=&amp;quot;/home/alex/lsrc/qemu/buildroot.git/output/images/rootfs.cpio&amp;quot;  # points at your buildroot image
CONFIG_NET_9P=y                                                                         # needed for virtfs mount
CONFIG_NET_9P_VIRTIO=y
&lt;/pre&gt;
&lt;p&gt;Finally you build it all with:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
ARCH=arm64 make -j 8
&lt;/pre&gt;
&lt;p&gt;The &lt;em&gt;-j 8&lt;/em&gt; just specifies how many parallel build threads to use. Generally set it to the number of cores you have on your machine.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="final-test"&gt;
&lt;h2&gt;Final test&lt;/h2&gt;
&lt;p&gt;All that remains is to test that the newly built kernel works:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
./aarch64-softmmu/qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine type=virt -nographic -smp 1 -m 2048 -kernel ../linux.git/arch/arm64/boot/Image  --append &amp;quot;console=ttyAMA0&amp;quot;
... lots more output ...
Welcome to Buildroot
ajbtest login: root
[root&amp;#64;ajbtest ~]# ls -l
total 0
[root&amp;#64;ajbtest ~]# uname -a
Linux ajbtest 3.15.0-rc4ajb-00320-gafcf0a2-dirty #41 SMP Fri May 9 13:05:31 BST 2014 aarch64 GNU/Linux
&lt;/pre&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;strong&gt;UPDATED:&lt;/strong&gt; 27/05/2014&lt;/div&gt;
&lt;div class="line"&gt;* Added notes about library dependencies&lt;/div&gt;
&lt;div class="line"&gt;* Cleaned up formatting of shell sections, mention length of command line!&lt;/div&gt;
&lt;div class="line"&gt;* Fix some spelling errors&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="geek"></category><category term="aarch64"></category><category term="arm64"></category><category term="linaro"></category><category term="qemu"></category></entry><entry><title>Anyone interested at an Emacs BoF at LCU14?</title><link href="https://www.bennee.com/~alex/blog/2014/04/29/anyone-interested-at-an-emacs-bof-at-lcu14/" rel="alternate"></link><published>2014-04-29T16:00:00+01:00</published><updated>2014-04-29T16:00:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2014-04-29:/~alex/blog/2014/04/29/anyone-interested-at-an-emacs-bof-at-lcu14/</id><summary type="html">&lt;p&gt;I'm fairly atypical as a Linaro employee because I have a desk in a shared office. This means I get to participate in technical banter with the other employees based in the Cambridge office. However it has become quite clear I'm surrounded on all sides by VIMers with only one …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I'm fairly atypical as a Linaro employee because I have a desk in a shared office. This means I get to participate in technical banter with the other employees based in the Cambridge office. However it has become quite clear I'm surrounded on all sides by VIMers with only one potential convert who wants to try Emacs out &amp;quot;one day&amp;quot;. As a result I thought it might be nice to have an Emacs Birds of a Feather (BoF) session at &lt;a class="reference external" href="http://www.linaro.org/connect/lcu/lcu14/"&gt;LCU14&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;BoF sessions are basically an informal gathering where people with a shared interest who come along to swap tips and stories about their area of interest. In the context of LCU it would be an opportunity to network and meet fellow Emacers. So any interest?&lt;/p&gt;
</content><category term="geek"></category><category term="emacs"></category><category term="linaro"></category></entry><entry><title>Boutique modes</title><link href="https://www.bennee.com/~alex/blog/2014/03/05/boutique-modes/" rel="alternate"></link><published>2014-03-05T10:12:00+00:00</published><updated>2014-03-05T10:12:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2014-03-05:/~alex/blog/2014/03/05/boutique-modes/</id><summary type="html">&lt;p&gt;I've recently started a new job at &lt;a class="reference external" href="http:www.linaro.org"&gt;Linaro&lt;/a&gt; which has been keeping me very busy. My role combines the low-level fun of Dynamic Binary Translation that I so enjoyed at Transitive and the fact Linaro is a fully Open Source company. I work directly on the upstream projects (in this …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've recently started a new job at &lt;a class="reference external" href="http:www.linaro.org"&gt;Linaro&lt;/a&gt; which has been keeping me very busy. My role combines the low-level fun of Dynamic Binary Translation that I so enjoyed at Transitive and the fact Linaro is a fully Open Source company. I work directly on the upstream projects (in this case &lt;a class="reference external" href="http://wiki.qemu.org/Main_Page"&gt;QEMU&lt;/a&gt;) and with the project community. In many ways it's my ideal job.&lt;/p&gt;
&lt;p&gt;Of course I've quickly built up a reputation as the Emacs guy in the office surrounded by a sea of VIMers although one of the guys does profess a desire to learn Emacs &amp;quot;one day&amp;quot;.&lt;/p&gt;
&lt;p&gt;One of the first things I did was move all my email into Emacs. I'd long been dissatisfied with the state of Thunderbird (and previously Evolution) that I took the opportunity to migrate to &lt;a class="reference external" href="http://www.djcbsoftware.nl/code/mu/mu4e.html"&gt;mu4e&lt;/a&gt;. I spend my days slinging patches and going through mailing lists so I really appreciate being in my editor while I do that.&lt;/p&gt;
&lt;p&gt;I have also started streamlining some of my work-flow with a few specialised extensions to Emacs. I think I'm finally comfortable enough with elisp to have a pretty good stab at solving most problems. I'm also appreciating the ability to leverage the mass of Emacs code under the hood to make incremental tweaks rather than solve everything at once. I thought I might give you a tour of the code I've written so far.&lt;/p&gt;
&lt;p&gt;First up is &lt;a class="reference external" href="https://github.com/stsquad/risu/blob/aarch-with-ajb-hacks/risu.el"&gt;risu-mode&lt;/a&gt;. RISU is the code testing tool we've been using to verify our aarch64 ARM work in QEMU. The .risu file is a template that's used to specify instruction patterns that the tool then uses to generate random code sequences with. &lt;em&gt;risu-mode&lt;/em&gt; is really just a bunch of regex expressions wrapped in the mode machinery that highlights the elements on the page. It doesn't sound like much but when you are working through a bunch of patterns looking for bugs it's easier on the eye when the different elements are coloured.&lt;/p&gt;
&lt;p&gt;Next thing I wrote was my own &lt;a class="reference external" href="https://github.com/stsquad/qemu-mode/blob/master/qemu-mode.el"&gt;QEMU mode&lt;/a&gt; which is a simple comint-mode based mode for launching QEMU system emulation. It's still very rough and ready as I'm mostly working on user emulation but I suspect it will be handy once I start on system emulation stuff.&lt;/p&gt;
&lt;p&gt;Finally there is &lt;a class="reference external" href="http://git.linaro.org/people/alex.bennee/lava-mode.git"&gt;lava-mode&lt;/a&gt;. LAVA is Linaro's automated test and validation framework. Although it already provides command line and web interfaces I thought it would be nice to launch and track test jobs from within Emacs itself. The job control files a JSON based so I built on the existing json-mode and a &lt;a class="reference external" href="https://github.com/stsquad/xml-rpc/tree/extra-headers"&gt;slightly patched version of xml-rpc.el&lt;/a&gt; to add job submission. I've started a simple job tracking mode that uses the tabulated-list-mode framework and eventually I'll link it into the tracking library so job completion will be as seamless as my IRC work-flow.&lt;/p&gt;
&lt;p&gt;So there you have it, a bunch of code that may well not interest anyone else but shows how Emacs provides a very rich base of functionality on which to build up tools that are useful to you.&lt;/p&gt;
&lt;p&gt;Does anyone else want to share an example of their esoteric extensions? What's the most obscure thing you've built on top of our favourite text editor?&lt;/p&gt;
</content><category term="geek"></category><category term="emacs"></category><category term="linaro"></category></entry><entry><title>Edit with Emacs v1.13 now available</title><link href="https://www.bennee.com/~alex/blog/2013/11/08/edit-with-emacs-v1-13-now-available/" rel="alternate"></link><published>2013-11-08T14:05:00+00:00</published><updated>2013-11-08T14:05:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2013-11-08:/~alex/blog/2013/11/08/edit-with-emacs-v1-13-now-available/</id><summary type="html">&lt;p&gt;I've just pushed the latest version of Edit with Emacs to the Chrome App Store. Hopefully most people are already tracking the latest edit-server.el via MELPA but this does introduce a few minor fixes to the extension itself. A new piece of functionality is the ability to trigger bringing …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've just pushed the latest version of Edit with Emacs to the Chrome App Store. Hopefully most people are already tracking the latest edit-server.el via MELPA but this does introduce a few minor fixes to the extension itself. A new piece of functionality is the ability to trigger bringing Emacs to the foreground from a key-stroke within Chrome. I added this to support running Emacs on ChromeOS which together with &lt;a class="reference external" href="https://github.com/stsquad/emacs-chromebooks"&gt;my chromebooks.el&lt;/a&gt; package gives me a rather nice development environment without having to dump ChromeOS.&lt;/p&gt;
&lt;p&gt;So new for v1.13&lt;/p&gt;
&lt;p&gt;Extension&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* Change the handling of hidden elements (fix bug #78)&lt;/div&gt;
&lt;div class="line"&gt;* Add debugging for erroneous hidden text areas (#93)&lt;/div&gt;
&lt;div class="line"&gt;* Add keyboard shortcut to bring Emacs to foreground&lt;/div&gt;
&lt;div class="line"&gt;* Pass clipboard contents to foreground request&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;edit-server.el&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* add advice to save-buffers-kill-emacs to avoid prompting on shutdown&lt;/div&gt;
&lt;div class="line"&gt;* add autoload cookies&lt;/div&gt;
&lt;div class="line"&gt;* fix bug with format chars in url (#80)&lt;/div&gt;
&lt;div class="line"&gt;* don't call kill buffer hooks twice (#92)&lt;/div&gt;
&lt;div class="line"&gt;* don't set-buffer-multibyte on process buffer&lt;/div&gt;
&lt;div class="line"&gt;* support the &amp;quot;foreground&amp;quot; request with optional clipboard contents&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Get the latest from &lt;a class="reference external" href="https://chrome.google.com/webstore/detail/edit-with-emacs/ljobjlafonikaiipfkggjbhkghgicgoh"&gt;the Chrome Webstore&lt;/a&gt;.&lt;/p&gt;
</content><category term="geek"></category><category term="chrome"></category><category term="chromeos"></category><category term="chromium"></category><category term="edit with emacs"></category><category term="emacs"></category></entry><entry><title>Travelling with the truffler</title><link href="https://www.bennee.com/~alex/blog/2013/04/24/travelling-with-the-truffler/" rel="alternate"></link><published>2013-04-24T01:22:00+01:00</published><updated>2013-04-24T01:22:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2013-04-24:/~alex/blog/2013/04/24/travelling-with-the-truffler/</id><summary type="html">&lt;p&gt;We're are about halfway through our family holiday to the remote ends of the earth. It has been the first time we've taken Ursula on a plane so we thought we'd make it a big journey while we are at it.&lt;/p&gt;
&lt;p&gt;To her credit she was mostly fine with the …&lt;/p&gt;</summary><content type="html">&lt;p&gt;We're are about halfway through our family holiday to the remote ends of the earth. It has been the first time we've taken Ursula on a plane so we thought we'd make it a big journey while we are at it.&lt;/p&gt;
&lt;p&gt;To her credit she was mostly fine with the 24 hours on a plane required to get to the other side of the world. Most of the tears were during take-off and landing when it was hard to explain pressurisation to a 16 month old child. There were a few other snatches of complaint due to tiredness but otherwise it went well. It helps that she is a very cute child who instantly won over the cabin crew who were keen to help keeping her amused. She even had a freshly prepared meal of Salmon Fried Rice cooked for her by the First Class cabin crew.&lt;/p&gt;
&lt;p&gt;Before we left the UK I had left Ursula playing in the kitchen while I sorted something out in the living room. When I came back into the suspiciously quiet kitchen I found the following example of toddler OCD:&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="/~alex/blog/wp-content/uploads/2013/04/IMG_20130402_074142.jpg"&gt;OCD much?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;An interesting aspect of having psychologist for a mother-in-law is the wonderful insight she gives me on how the mind works. It had only been few weeks earlier that we had been talking about a common behaviour that often precedes a spurt in language development. It seems as children start getting their heads around the concept of things belonging to categories they will start sorting their toys (or anything else) into organised piles. Obviously an understanding of the fact things can exist in categories is a prerequisite for understanding a lot of things about language.&lt;/p&gt;
&lt;p&gt;I make the distinction between language and speech because the two are very different skills. Language is primarily a cognitive ability to map communicated ideas to abstract concepts. Speech is the vocalisation of that communication and involves fairly precise control of a dizzying array of muscles in our mouth and vocal chords. The mastery of this physical skill takes a lot longer so often the distinction between words is only recognisable to parents and others who spend a lot of time with the child.&lt;/p&gt;
&lt;p&gt;Ursula has been understanding basic instructions for some time now and it's now possible to send her off to fetch or carry things with a reasonable degree of success. Combined with her deistic pointing there has been genuine two way communication for some time. However perhaps due to fluke or stimulated by the new environment she's in on holiday we are starting to see an explosion in words. She's had the basic &amp;quot;Dadadada&amp;quot; and &amp;quot;Momamama&amp;quot; for sometime although it's hard to distinguish from the baby babbling she's been doing for a long time. We have long joked about her generic use of &amp;quot;dat/cat&amp;quot; for the cat and then pretty much any other object she was pointing at. Just before we left she had started associating &amp;quot;NaNa&amp;quot; with bananas (a favourite food of hers). We now have distinct sounds for birds, cats, dogs and my favourite &amp;quot;papa&amp;quot; for the Nexus 7 which we call the PadPad so as to avoid confusing it with the Apple brand product ;-)&lt;/p&gt;
&lt;p&gt;My mum found my description of all this behaviour very amusing as I swing between proud Dad and scientific curiosity. I will put on the record that I'm not treating my daughter as a lab experiment but I do find the whole development of language and mind fascinating. I understand now why watching your kids grow and develop is so often cited by parents as one of the main joys of parenthood.&lt;/p&gt;
</content><category term="general"></category><category term="parenting"></category><category term="ursula"></category></entry><entry><title>On the death of Google Reader</title><link href="https://www.bennee.com/~alex/blog/2013/03/14/on-the-death-of-google-reader/" rel="alternate"></link><published>2013-03-14T22:17:00+00:00</published><updated>2013-03-14T22:17:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2013-03-14:/~alex/blog/2013/03/14/on-the-death-of-google-reader/</id><summary type="html">&lt;p&gt;You can probably tell the sort of on-line company I keep from the deluge of noise on the social networks regarding Google's decision to shut down Reader. However we shouldn't be that surprised. In fact some companies that source content from Reader &lt;a class="reference external" href="http://blog.feedly.com/2013/03/14/google-reader/"&gt;have anticipated the need to collect content themselves …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;You can probably tell the sort of on-line company I keep from the deluge of noise on the social networks regarding Google's decision to shut down Reader. However we shouldn't be that surprised. In fact some companies that source content from Reader &lt;a class="reference external" href="http://blog.feedly.com/2013/03/14/google-reader/"&gt;have anticipated the need to collect content themselves&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I of course will have to make a decision at some point. However I'll not do it today like a lot of Reader users have. The rush to try out alternatives has over-whelmed some &lt;a class="reference external" href="https://twitter.com/samuelclay"&gt;open source based projects&lt;/a&gt; who were quietly growing organically. I don't envy those that have to suddenly gear up their back-end systems because an Internet behemoth gave us 2593 hours notice to sort out a replacement.&lt;/p&gt;
&lt;p&gt;I'm mulling over the difference between self-hosting and having someone else do it. I'm not overly worried about going for convenience if I know I can get my data back if I need to. In fact the knowledge that you can theoretically self-host might be enough. To be fair to Google their &lt;a class="reference external" href="http://www.dataliberation.org/"&gt;Data Liberation&lt;/a&gt; team made exporting all my Reader data easy.&lt;/p&gt;
&lt;p&gt;Before I make a choice I need to decide what my priorities are. Currently I subscribe to 250+ RSS feeds. Obviously I don't read every single post but I make extensive use of tags to quickly process through stuff I do need to see when I need to see it. Aside from news, blog posts, funny cat pictures I also subscribe to other data feeds like bug trackers, code repositories, and other data sources. I of course want access to all of this data at any point on one of a number of devices. This makes a web hosted solution pretty much a must. There is no point having the data on my desktop when I'm somewhere else. From my point of view I want it to be open source compatible because if the company hosting now decides it no longer wants to I'll only have to move the data and not break my work-flow.&lt;/p&gt;
&lt;p&gt;It would also be very useful if it had a public API so others can interact with the data. I don't need the solution to be all provided by one company. It's perfectly fine to have multiple 3rd parties sorting out the Android integration. I might even look to doing something to integrate it with my favourite editor (the name of which even my non-geek readers probably know by now). So far my experiment with moving all of IRC and IM into Emacs seems to be working well and should be a subject of another post.&lt;/p&gt;
&lt;p&gt;Are you a Reader user? What are your criteria for it's eventual replacement? Is RSS just a dying protocol or is the need to aggregate and sift through data becoming more important?&lt;/p&gt;
&lt;p&gt;There may well be a much better way of solving this problem around the corner. I certainly am open to persuasion. But don't take away my current preferred solution until I'm convinced I'm ready to switch ;-)&lt;/p&gt;
</content><category term="geek"></category><category term="emacs"></category><category term="floss"></category><category term="google"></category><category term="hosting"></category><category term="rss"></category></entry><entry><title>The future is inching its way onto our set-top boxes</title><link href="https://www.bennee.com/~alex/blog/2013/02/11/the-future-is-inching-its-way-onto-our-set-top-boxes/" rel="alternate"></link><published>2013-02-11T16:41:00+00:00</published><updated>2013-02-11T16:41:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2013-02-11:/~alex/blog/2013/02/11/the-future-is-inching-its-way-onto-our-set-top-boxes/</id><summary type="html">&lt;p&gt;I have from time to time lamented the tardiness of media producers in getting content in-front of my eyeballs. It's not a case of being tight with money, although giving Murdoch £30/month for a glut of programming I'll never watch is *too much* for me. I'll happily pay for …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I have from time to time lamented the tardiness of media producers in getting content in-front of my eyeballs. It's not a case of being tight with money, although giving Murdoch £30/month for a glut of programming I'll never watch is *too much* for me. I'll happily pay for the stuff I want to watch as long as I can watch it now on whatever device I happen to have to hand. Until it's made that easy for consumers the pirates will keep winning by default.&lt;/p&gt;
&lt;p&gt;There was an interesting quote from the boss of Netflix in a &lt;a class="reference external" href="http://www.gq.com/entertainment/movies-and-tv/201302/netflix-founder-reed-hastings-house-of-cards-arrested-development?currentPage=1"&gt;recent interview&lt;/a&gt;: &amp;quot;The goal is to become HBO faster than HBO can become us&amp;quot;. Netflix is moving from being just a content distribution company to a producer of content. And if they can create content as good as their new remake &lt;a class="reference external" href="http://en.wikipedia.org/wiki/House_of_Cards_(U.S._TV_series)"&gt;of House of Cards&lt;/a&gt; hopefully the days of production companies being tied to restrictive bundle contracts are numbered.&lt;/p&gt;
&lt;p&gt;The fact that shows can be disconnected from the broadcast schedules also offers other compelling opportunities. The BBC recently aired a number of comedy sketch show pilots which we only caught on iPlayer. Indeed they are now going to start trialling &lt;a class="reference external" href="http://www.telegraph.co.uk/culture/tvandradio/bbc/9855828/BBC-to-launch-programmes-online-first.html"&gt;iPlayer net first runs&lt;/a&gt; of new shows over the next 12 months. No longer does the success of a show have to hope that it was picked up by enough of the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Broadcasters%27_Audience_Research_Board"&gt;11500 viewers&lt;/a&gt; that happened to catch a random scheduled slot. Each and every viewing can be accounted for and counted even if the show is a slow burner like &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Firefly_(TV_series)"&gt;Firefly&lt;/a&gt; which was cruelly cancelled before it built up it's cult following.&lt;/p&gt;
&lt;p&gt;So the balls now in HBOs court. How exactly to I pay you so I can watch the next season of Game of Thrones when it comes out?&lt;/p&gt;
</content><category term="geek"></category><category term="content"></category><category term="iplayer"></category><category term="netflix"></category><category term="tv"></category></entry><entry><title>2012 a year in review</title><link href="https://www.bennee.com/~alex/blog/2013/01/18/2012-a-year-in-review/" rel="alternate"></link><published>2013-01-18T12:38:00+00:00</published><updated>2013-01-18T12:38:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2013-01-18:/~alex/blog/2013/01/18/2012-a-year-in-review/</id><summary type="html">&lt;p&gt;In past years when I would review the year I'd flip back through my blog. For 2012 however I managed on average one post a month and the majority of those were geek related ones which in some ways are a lot easier to write.&lt;/p&gt;
&lt;p&gt;The big change has been …&lt;/p&gt;</summary><content type="html">&lt;p&gt;In past years when I would review the year I'd flip back through my blog. For 2012 however I managed on average one post a month and the majority of those were geek related ones which in some ways are a lot easier to write.&lt;/p&gt;
&lt;p&gt;The big change has been becoming a parent of course but at the same time I also took back the reigns of management as I became the head of the software team at work. The combined effect has been a year that flew by very quickly leaving a slight sense of bewilderment about where it has all gone.&lt;/p&gt;
&lt;p&gt;I no longer feel quite as out of my depth as I did half way through last year. The first 6 months are pretty gruelling in terms of missing sleep and trying to interpret the needs and desires of something that can basically sleep or cry. However Ursula has grown up so fast you soon forget about what she was like and try and re-focus on what's she's doing now.&lt;/p&gt;
&lt;p&gt;For starters she's now a fully mobile and operational battle-truffler able to move under her own direction. Next to that she's moved from simply reporting state (happy/unhappy) to communication. Granted every object she sees currently seems to be a cat (or possibly &amp;quot;that&amp;quot;) but I suspect her vocal cords just need to catch up.&lt;/p&gt;
&lt;p&gt;She's now pointing to objects she wants to interact with including multiple objects she'd like to combine (e.g. Bonjella and teething ring) like some sort console RPG game. She laughs at silliness, enjoys playing around and being chased and basically has a personality that is uniquely hers.&lt;/p&gt;
&lt;p&gt;I used to think that it wouldn't get interesting until she learnt to talk but of course my preconceptions about what it would be like are constantly being shattered. Sure it still gets frustrating at times especially for Ursula. She understands more and more of what her parents are saying without being able to respond the same way. As she gradually realises she's an independent being able to manipulate the world around her she's very quickly having to learn that she can't control everything. I suspect that would put teenage angst in perspective if only we could remember our really formative years.&lt;/p&gt;
&lt;p&gt;Well this post seems to have turned into yet another one about my child growing up. Other things have happened to me that are not Ursula related but really there not as interesting. Instead I shall try and look forward to what's coming up. The annual February walking holiday is just round the corner and I'm looking forward to catching up with all the other new (and slightly more experienced) parents at that. We'll be up in Manchester (without Ursula) for P&amp;amp;K's wedding which we are really looking forward to. And we'll be off to the land down-under for a much delayed holiday in April. Hopefully the next post will not be too far away ;-)&lt;/p&gt;
</content><category term="general"></category><category term="parenting"></category><category term="review"></category><category term="ursula"></category></entry><entry><title>Edit with Emacs v1.12 now available</title><link href="https://www.bennee.com/~alex/blog/2012/12/03/edit-with-emacs-v1-12-now-available/" rel="alternate"></link><published>2012-12-03T21:58:00+00:00</published><updated>2012-12-03T21:58:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2012-12-03:/~alex/blog/2012/12/03/edit-with-emacs-v1-12-now-available/</id><summary type="html">&lt;p&gt;Apologies for the extended delay in getting out a new release of Edit with Emacs. Real life has been doing a good job keeping me busy that spare hacking time is in short supply. A number of people have submitted pull requests and I've also done a bit of clean-up …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Apologies for the extended delay in getting out a new release of Edit with Emacs. Real life has been doing a good job keeping me busy that spare hacking time is in short supply. A number of people have submitted pull requests and I've also done a bit of clean-up on the code.&lt;/p&gt;
&lt;p&gt;The JavaScript in the extension has had the hacky change tracking code replaced with a modern funky 21st century &lt;a class="reference external" href="https://code.google.com/p/mutation-summary/"&gt;Mutation Observer implementation&lt;/a&gt;. This should solve some of the more obvious performance problems on highly dynamic pages.&lt;/p&gt;
&lt;p&gt;I've also implemented the iterative save method for edit-server.el. Unfortunately it doesn't quite work as intended if the edited region uses encoding (e.g. longlines). In theory the buffer you have saved should have it's contents replaced with the new data from the browser but it just doesn't seem to work. For now I've just ensured the kill-ring has the real data in it so it's not overly painful to restore formatting. Patches and/or explanations are of course welcome!&lt;/p&gt;
&lt;p&gt;So grab it now from &lt;a class="reference external" href="https://chrome.google.com/webstore/detail/edit-with-emacs/ljobjlafonikaiipfkggjbhkghgicgoh"&gt;webstore&lt;/a&gt;. The changes are as follows:&lt;/p&gt;
&lt;p&gt;Extension&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* Upgraded manifest to version 2 for future releases of Chrome&lt;/div&gt;
&lt;div class="line"&gt;* Added an &amp;quot;Enable Debug&amp;quot; flag to control logging to console&lt;/div&gt;
&lt;div class="line"&gt;* Use Mutation Observers to better track changes in dynamic DOMs&lt;/div&gt;
&lt;div class="line"&gt;* Fake a keypress when updating the textarea&lt;/div&gt;
&lt;div class="line"&gt;* Bug fix for handling editable DIV elements&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;edit-server.el&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* Now available from the MELPA package archive!&lt;/div&gt;
&lt;div class="line"&gt;* Beta support for iterative C-x C-s saving (it works but is ugly, see kill-ring)&lt;/div&gt;
&lt;div class="line"&gt;* Default to using UTF-8 coding for process communication&lt;/div&gt;
&lt;div class="line"&gt;* Raise existing frame consistently on Mac&lt;/div&gt;
&lt;div class="line"&gt;* Tweak the portion of the URL used to name buffers&lt;/div&gt;
&lt;/div&gt;
</content><category term="geek"></category><category term="edit with emacs"></category><category term="emacs"></category></entry><entry><title>Many ways to skin a GNU</title><link href="https://www.bennee.com/~alex/blog/2012/07/24/many-ways-to-skin-a-gnu/" rel="alternate"></link><published>2012-07-24T15:09:00+01:00</published><updated>2012-07-24T15:09:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2012-07-24:/~alex/blog/2012/07/24/many-ways-to-skin-a-gnu/</id><summary type="html">&lt;p&gt;It's time for another examination of Emacs LISP and a selection of ways to solve the same problem. In this case it's the behaviour of the &lt;em&gt;etags-select&lt;/em&gt; package. This handy function will present a selection table when it finds multiple definitions of the same tag. This is handy if your …&lt;/p&gt;</summary><content type="html">&lt;p&gt;It's time for another examination of Emacs LISP and a selection of ways to solve the same problem. In this case it's the behaviour of the &lt;em&gt;etags-select&lt;/em&gt; package. This handy function will present a selection table when it finds multiple definitions of the same tag. This is handy if your global TAGs file contains reference to multiple binaries that might have a common code heritage. It even provides a handy function &lt;em&gt;etags-select-find-tag-at-point&lt;/em&gt; which will check &lt;em&gt;point&lt;/em&gt; to see if that is a tag. However if &lt;em&gt;point&lt;/em&gt; is on a blank line I'd prefer it to just prompt me for a tag name.&lt;/p&gt;
&lt;p&gt;First version:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
(defun my-naive-find-tag ()
  &amp;quot;Find at point or fall back&amp;quot;
  (interactive)
  (unless (etags-select-find-tag-at-point)
    (etags-select-find-tag)))
&lt;/pre&gt;
&lt;p&gt;Unfortunately this fails rather badly. I naively assumed &lt;em&gt;etags-select-find-tag-at-point&lt;/em&gt; would return &lt;em&gt;'nil&lt;/em&gt; on failure. Instead it bombs out with an error because &lt;em&gt;etags-select-find&lt;/em&gt; expects a parameter and when &lt;em&gt;find-tag-default&lt;/em&gt; fails it errors out.&lt;/p&gt;
&lt;p&gt;Second version:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
(defun my-working-find-tag()
  &amp;quot;Find tag and call etags-select-find-tag-at-point if it will work&amp;quot;
  (interactive)
  (if (find-tag-default)
      (etags-select-find-tag-at-point)
    (etags-select-find-tag)))
&lt;/pre&gt;
&lt;p&gt;This works by checking &lt;em&gt;find-tag-default&lt;/em&gt; will work before calling &lt;em&gt;etags-select-find-tag-at-point&lt;/em&gt;. Of course there is some duplication here because &lt;em&gt;find-tag-default&lt;/em&gt; will get called again once I know it will work. Dissatisfied I asked the &lt;a class="reference external" href="%20http://stackoverflow.com/questions/11578723/whats-the-best-way-in-elisp-to-trap-an-error-case"&gt;stackoverflow&lt;/a&gt; community for suggestions. The first solution is to simply trap the error case.&lt;/p&gt;
&lt;p&gt;Third version:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
(defun my-try-except-find-tag()
  &amp;quot;Find at point or fall to etags-select-find-tag on error&amp;quot;
  (interactive)
  (unless (ignore-errors (or (etags-select-find-tag-at-point) 't))
    (etags-select-find-tag)))
&lt;/pre&gt;
&lt;p&gt;This works by utilising deep lisp black magic to stop the error propagating and returning a 'nil if it does. The &lt;em&gt;(or (etags-select-find-tag-at-point) 't)&lt;/em&gt; line is to ensure a successful call returns something so we don't then fall through. Interestingly the comments around &lt;em&gt;subr.el&lt;/em&gt; mentions some of the keywords used may be redefined by common lisp.&lt;/p&gt;
&lt;p&gt;Forth version:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
(defun my-efficent-find-tag()
  &amp;quot;Find tag at point, caching find-tag-default&amp;quot;
  (interactive)
  (let ((ftd (find-tag-default)))
    (flet ((find-tag-default () ftd))
      (if (find-tag-default)
          (etags-select-find-tag-at-point)
        (etags-select-find-tag)))))
&lt;/pre&gt;
&lt;p&gt;While I expected something like &lt;em&gt;ignore-errors&lt;/em&gt; to exist this demonstrates the flexibility of dynamic languages like Emacs Lisp. The key is the use of &lt;em&gt;flet&lt;/em&gt; to redefine &lt;em&gt;find-tag-default&lt;/em&gt; so when it gets executed again inside &lt;em&gt;etags-select-find-tag-at-point&lt;/em&gt; it simply returns the cached value.&lt;/p&gt;
&lt;p&gt;So as usual with these posts I try to invite feedback. Which of these forms do you prefer? Would you solve the problem another way? Have you just learnt something new about Emacs Lisp?&lt;/p&gt;
</content><category term="geek"></category><category term="code"></category><category term="elisp"></category><category term="emacs"></category></entry><entry><title>Living la vida ELPA</title><link href="https://www.bennee.com/~alex/blog/2012/07/10/living-la-vida-elpa/" rel="alternate"></link><published>2012-07-10T12:45:00+01:00</published><updated>2012-07-10T12:45:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2012-07-10:/~alex/blog/2012/07/10/living-la-vida-elpa/</id><summary type="html">&lt;p&gt;I've been running Emacs 24 direct from the version control tree (technically a git mirror, bzr still confuses me) for some time now. As many people have mentioned ELPA is one of the big features that helps de-clutter an Emacs users ~/.emacs.d directory. I thought it might be a …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've been running Emacs 24 direct from the version control tree (technically a git mirror, bzr still confuses me) for some time now. As many people have mentioned ELPA is one of the big features that helps de-clutter an Emacs users ~/.emacs.d directory. I thought it might be a useful exercise to discuss which packages I'm now loading from ELPA and which I still track directly.&lt;/p&gt;
&lt;p&gt;First and formemost is my &lt;a class="reference external" href="https://github.com/stsquad/my-emacs-stuff"&gt;my dotemacs collection&lt;/a&gt;. Weighing in at around 2700 lines of elisp it's small by some standards. I've toyed with moving my config across to things like the &lt;a class="reference external" href="https://github.com/technomancy/emacs-starter-kit/"&gt;Emacs Starter Kit&lt;/a&gt; but I'm not sure if it's worth the transition pain. There is certainly a lot of cruft in my code but there is also quite a lot of muscle memory now invested in it. I have been trying to modularise it a little more but to be honest most of that was driven by a desire to get autoload working nicely which is no longer much of an issue as my session tends to stay up for weeks at an end.&lt;/p&gt;
&lt;p&gt;I'll gloss over edit-server.el surfice it to say I'd hope your not surprised I keep the development version running given it's for &lt;a class="reference external" href="https://github.com/stsquad/emacs_chrome"&gt;my extension&lt;/a&gt; ;-)&lt;/p&gt;
&lt;p&gt;After that we have Johnathan Rockway's &lt;a class="reference external" href="https://github.com/jrockway/eproject"&gt;eproject&lt;/a&gt;. I work with lots of code bases during the day and some sort of sensible project type structure is a must. I've tried a number of different solutions and this one stuck as it was fairly lightweight and easy for my smaller lisp brain to extend. I've even managed to contribute some changes back. As a result I find tracking the bleeding edge of development useful.&lt;/p&gt;
&lt;p&gt;The same reason applies to Stephen Bach's &lt;a class="reference external" href="https://github.com/sjbach/lusty-emacs"&gt;lusty-emacs&lt;/a&gt;. While ido-mode and ibuffer work well for speed nothing matches lusty's lazy file and buffer matching. It can get a little too much once you start dealing with hundreds of buffers at a time (something &lt;em&gt;midnight-mode&lt;/em&gt; is trying to keep on top of). It's still seeing some activitiy on the repository hence the local checkout.&lt;/p&gt;
&lt;p&gt;Finally the biggie but generally unused &lt;a class="reference external" href="http://cedet.sourceforge.net/"&gt;cedet&lt;/a&gt;. There has been some work to make it comparitively easy to run out of a src checkout and as long as it's included early enough it won't conflict with the built in cedet shipping with Emacs 23+. I still haven't really made much use of it although I have managed to get a completion out of it when editing some C. It's basically sitting there until I can commit enough time to figuring out how to use the beast.&lt;/p&gt;
&lt;p&gt;Finally a quick review of the ELPA packages that I've got loaded. Obviously there is the latest &lt;em&gt;org-mode&lt;/em&gt; which I'm spending an increasing amount of time in. I also have my favourite &lt;em&gt;zenburn-theme&lt;/em&gt; for easy on the eyes goodness. The popular GIT interaction mode &lt;em&gt;magit&lt;/em&gt; also sits there which I use every day. &lt;em&gt;js2-mode&lt;/em&gt; and &lt;em&gt;ssh_config_mode&lt;/em&gt; completes the list of modules that I actually use.&lt;/p&gt;
&lt;p&gt;I have a number of additional things in there which I don't actually use at the moment but I plan to try out including &lt;em&gt;nose&lt;/em&gt; (for python unit test), &lt;em&gt;jsshell&lt;/em&gt; (for JavaScript coding) and another one I see a lot of the wizards using &lt;em&gt;yasnippet&lt;/em&gt; but again is awaiting time to play with.&lt;/p&gt;
&lt;p&gt;So what ELPA packages have you discovered and what hidden gems to you track directly in your .emacs.d?&lt;/p&gt;
</content><category term="geek"></category><category term="elpa"></category><category term="emacs"></category><category term="git"></category></entry><entry><title>Trials and Trufulations</title><link href="https://www.bennee.com/~alex/blog/2012/06/08/trials-and-trufulations/" rel="alternate"></link><published>2012-06-08T18:17:00+01:00</published><updated>2012-06-08T18:17:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2012-06-08:/~alex/blog/2012/06/08/trials-and-trufulations/</id><summary type="html">&lt;p&gt;One of the most challenging things about managing small bundles of fun is the fact their neural circuitry is brand new and developing very quickly. A key part of development at this stage is &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Attachment_in_children"&gt;bonding with their parents&lt;/a&gt;. The last few weeks have been quite hard when Ursula has spent …&lt;/p&gt;</summary><content type="html">&lt;p&gt;One of the most challenging things about managing small bundles of fun is the fact their neural circuitry is brand new and developing very quickly. A key part of development at this stage is &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Attachment_in_children"&gt;bonding with their parents&lt;/a&gt;. The last few weeks have been quite hard when Ursula has spent large chunks of time in my sole presence being very un-happy and wanting Mum (who I've been trying to let have some sleep). Understandably at this point she is most familiar with Fliss as well as having a fairly base urge for the milky goodness only she can provide. It hasn't helped that I've been working hard so not always been able to get home in time for the evening bath and bed ritual.&lt;/p&gt;
&lt;p&gt;This combined with lack of sleep has seen me reach a fairly low ebb of late. In fact it's possible I've had a glimpse of the lack of emotional state that someone with depression has to deal with on a more regular basis. I was certainly hard pressed to remember the last feeling of emotion I'd had for some time.&lt;/p&gt;
&lt;p&gt;It was fortunate then the jubilee weekend celebrations saw us visiting &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Leominster"&gt;Leominster&lt;/a&gt; for M&amp;amp;T's wedding anniversary. Being able to spend time with both Ursula and so many of my old friends from Manchester was an excellent tonic for my depressed mood. What was even more useful was being able to chat to fellow parents who had already been down this particular road and were more than reassuring. I didn't realise quite how much I'd been bottling up worries about my parental abilities and it was good talk about it.&lt;/p&gt;
&lt;p&gt;Of course now with those worries put aside for now we are tackling the next emotional roller coaster of trying to instill a regular sleep pattern in our dear daughter. Much as it is satisfying to successfully rock a previously fractious baby to sleep it's not a long term viable solution. Ursula will have to learn to &amp;quot;self-sooth&amp;quot; and get herself to sleep without her parents. The process however is fraught and there is a lot of conflicting theories on the best way to achieve this. Suffice it to say it's not been overly popular with Ursula herself and the resulting wobbly lipped tantrums have been taking their toll on us. We are trying to maintain perspective and keep our eyes on the long term goals. Wish us luck!&lt;/p&gt;
</content><category term="general"></category><category term="moods"></category><category term="parenting"></category><category term="sleep"></category></entry><entry><title>Edit with Emacs v1.11</title><link href="https://www.bennee.com/~alex/blog/2012/05/23/edit-with-emacs-v1-11/" rel="alternate"></link><published>2012-05-23T15:57:00+01:00</published><updated>2012-05-23T15:57:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2012-05-23:/~alex/blog/2012/05/23/edit-with-emacs-v1-11/</id><summary type="html">&lt;p&gt;I haven't really had much time for hacking at home unless programming my daughters &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Wetware_(brain)"&gt;wetware&lt;/a&gt; counts. However a few enterprising users have been sending me in some pull requests that fix a few minor bugs that slipped through the extensive pre-release testing I did for v1.10 so I thought …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I haven't really had much time for hacking at home unless programming my daughters &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Wetware_(brain)"&gt;wetware&lt;/a&gt; counts. However a few enterprising users have been sending me in some pull requests that fix a few minor bugs that slipped through the extensive pre-release testing I did for v1.10 so I thought it was worth pushing out a bug-fix release:&lt;/p&gt;
&lt;p&gt;Extension&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* Fixed some breakage to the &amp;quot;edit focused area&amp;quot; feature&lt;/div&gt;
&lt;div class="line"&gt;* Fixed broken link to embedded edit-server&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;edit-server.el&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* A couple of fixes for Emacs 24 compatibility&lt;/div&gt;
&lt;div class="line"&gt;* Globalize the minor mode so it persists through major-mode changes&lt;/div&gt;
&lt;/div&gt;
</content><category term="geek"></category><category term="edit with emacs"></category><category term="emacs"></category></entry><entry><title>Now a Windows user!</title><link href="https://www.bennee.com/~alex/blog/2012/05/01/now-a-windows-user/" rel="alternate"></link><published>2012-05-01T13:50:00+01:00</published><updated>2012-05-01T13:50:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2012-05-01:/~alex/blog/2012/05/01/now-a-windows-user/</id><summary type="html">&lt;p&gt;I've finally buckled and now have a Windows laptop. It was mainly forced on me by the need to have some sort of access to the intranet during the large number of meetings I'm now involved in at work. I have to say the experience has been enlightening, especially seeing …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've finally buckled and now have a Windows laptop. It was mainly forced on me by the need to have some sort of access to the intranet during the large number of meetings I'm now involved in at work. I have to say the experience has been enlightening, especially seeing all the hacky stuff that has to be done to get things working under Windows. For example by default I couldn't connect to any https (SSL) pages. Luckily I can just hand the laptop back to IT to fix it so I don't have to scratch my head too much.&lt;/p&gt;
&lt;p&gt;I've had only sporadic luck getting Emacs up and running on it though. Having been running the tip-of-tree release on my Linux workstation so long going back to Emacs 23 has been a bit of a retrograde step. It doesn't help there are multiple suggestions for installation. I've been trying to get &lt;a class="reference external" href="http://ourcomments.org/Emacs/EmacsW32.html"&gt;EmacsW32&lt;/a&gt; working but I've run into &lt;a class="reference external" href="http://stackoverflow.com/questions/885793/emacs-error-when-calling-server-start"&gt;problems on start-up&lt;/a&gt;. So far I've been unable to fix the issue as the paths Emacs references don't seem to show up in the system file browser. This seems to be the only avenue by which I can fix the permissions it's complaining about.&lt;/p&gt;
&lt;p&gt;Getting my init file onto the system and in the right place has also proved to be more complex than it should have been (there seems to be two &amp;quot;HOME&amp;quot; directories, one under a Roaming title). The Windows shell has finally gained completion but it's still a shadow of a decent Unix shell. On the positive side I can already run &lt;a class="reference external" href="http://emacswiki.org/emacs/CategoryEshell"&gt;eshell&lt;/a&gt; from within Emacs which provides a nice alternative to the command shell. I've yet to get tramp working though but I suspect that's just a case of getting ssh keys sorted out.&lt;/p&gt;
&lt;p&gt;If there are better solutions to getting a decent Emacs set-up on Windows I'm all ears.&lt;/p&gt;
</content><category term="geek"></category><category term="emacs"></category><category term="windows"></category></entry><entry><title>Everyone likes stats</title><link href="https://www.bennee.com/~alex/blog/2012/03/26/everyone-likes-stats/" rel="alternate"></link><published>2012-03-26T23:54:00+01:00</published><updated>2012-03-26T23:54:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2012-03-26:/~alex/blog/2012/03/26/everyone-likes-stats/</id><summary type="html">&lt;p&gt;So what has my blogging frequency been like, well I'm glad you asked:&lt;/p&gt;
&lt;p&gt;[archive_chart name=&amp;quot;Posting frequency over the last 12 months&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;300&amp;quot; count=&amp;quot;12&amp;quot;]&lt;/p&gt;
&lt;p&gt;It seems the trend is pretty clear and it's not exactly surprising as my hands have been more than full with other …&lt;/p&gt;</summary><content type="html">&lt;p&gt;So what has my blogging frequency been like, well I'm glad you asked:&lt;/p&gt;
&lt;p&gt;[archive_chart name=&amp;quot;Posting frequency over the last 12 months&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;300&amp;quot; count=&amp;quot;12&amp;quot;]&lt;/p&gt;
&lt;p&gt;It seems the trend is pretty clear and it's not exactly surprising as my hands have been more than full with other concerns. Despite coming to a phase where the odd hour or two in the evenings is possible blogging is still fairly low down the priority list. This parenting lark does seem to occupy a fair amount of time. So far it's an exercise in trying to balance a number of competing demands. While being responsive to Ursula's minute by minute desires keeps her generally happy we are beginning to see the benefit of following some sort of routine. It seems the oft repeated parental sayings are founded in a degree of experience ;-)&lt;/p&gt;
&lt;p&gt;Of course just as we started to establish a successful routine we disrupted it all with a trip up to Manchester. Thanks to some friends parents we were able to set up a base of operations in Bolton. We then proceeded to do the local tour and introduce Ursula to our northern friends. She was very well received on her debut although we suspect the schedule may have taken it's toll. By Sunday she was starting to get a little fractious so it was good to end up at P&amp;amp;C's for a very relaxed evening. We took it easy on the journey down on Monday and have been getting back into the swing of the normal routine.&lt;/p&gt;
&lt;p&gt;It was really nice to catch up with everyone we saw while we were visiting. Next time we come up North we will probably try a slightly less hectic schedule with hopefully a less frazzled family. Thankfully next week is all based at home which is a much more familiar environment for all of us!&lt;/p&gt;
</content><category term="general"></category><category term="life"></category><category term="manchester"></category><category term="ursula"></category></entry><entry><title>Rewards</title><link href="https://www.bennee.com/~alex/blog/2012/02/17/rewards/" rel="alternate"></link><published>2012-02-17T07:44:00+00:00</published><updated>2012-02-17T07:44:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2012-02-17:/~alex/blog/2012/02/17/rewards/</id><summary type="html">&lt;p&gt;As predicted the blogging has dropped off quite precipitously. I still seem to be functioning on a reduced amount of sleep (although Fliss is taking the brunt of the sleep interruption by far). However the evenings are both shorter and much more structured. Eating is slowly moving from a task …&lt;/p&gt;</summary><content type="html">&lt;p&gt;As predicted the blogging has dropped off quite precipitously. I still seem to be functioning on a reduced amount of sleep (although Fliss is taking the brunt of the sleep interruption by far). However the evenings are both shorter and much more structured. Eating is slowly moving from a task best accomplished at speed as we alternate baby holding/entertaining duties with each other to one where Ursula is happy to sit in a bouncer/bumbo and watch us shovel food in our faces. We have started getting into the bathing/sleeping routine which currently puts us all to bed at roughly the same time.&lt;/p&gt;
&lt;p&gt;However it's still very rewarding. I didn't think I'd get quite so gooey inside when Ursula started smiling at me. Although she's simulated smiles for a while it's mostly been a prelude to some sort of gas incident. She is now firmly into social smiling territory and every time she does it it's like a gift to salve the troubled soul that your at least doing something right. In the time that this post has been brewing (I started it a couple of weeks ago) we have even moved on to giggles and laughs. It's certainly noticeable from close up how fast they start developing their personalities as they move from needing food/sleep/cleanliness to discovery and play.&lt;/p&gt;
&lt;p&gt;We have managed to leave the house for extended periods and spent a lovely weekend in snowy Yorkshire on the annual walking holiday with friends from Fliss' time at university. It was particularly fun because there was a spike of new parents with their kids (along with a couple of old hands) along with plenty of helpful hands willing to hold babies when parents needed to do something else. I found is particularly helpful chatting to people a few months/years ahead of us in the parenting game and be reassured about what we are doing. My stated parenting style is to exude a air of calm confidence while paddling like mad under the water to figure out what to do next.&lt;/p&gt;
&lt;p&gt;Fliss' mum was very kind to come over and spend the night giving us a chance for a meal at one of our favourite Italian restaurants with just the two of us. It was nice to get a few hours to ourselves to remind us of what life used to be like. However for all the work and disruption that a new family member causes we are happy with our new life and only occasionally think wistfully of our former freedoms. It does also make those periods of freedom when they do happen taste all the sweeter.&lt;/p&gt;
&lt;p&gt;In other news I have also been working quite hard at my day job and have recently been promoted to Principle Software Engineer. I'm now responsible for all the software engineers in the company as well as all the software deliver-ables. I'm not quite a drop-in for the old Head of Software as I'm sharing some of the management type responsibilities with the Head of Engineering as I'm quite keen to keep my hand as a developer. 2012 is certainly shaping up to be a busy and rewarding year.&lt;/p&gt;
</content><category term="general"></category><category term="family"></category><category term="life"></category><category term="ursula"></category></entry><entry><title>Switching buffers and Google+</title><link href="https://www.bennee.com/~alex/blog/2012/01/24/switching-buffers-and-google/" rel="alternate"></link><published>2012-01-24T08:36:00+00:00</published><updated>2012-01-24T08:36:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2012-01-24:/~alex/blog/2012/01/24/switching-buffers-and-google/</id><summary type="html">&lt;p&gt;When you do so much of your work in one text editor the efficiency of switching between buffers becomes more important. For a long time I've had two bindings &amp;quot;C-x b&amp;quot; and &amp;quot;C-x C-b&amp;quot; which in days of yore I had bound to &lt;em&gt;bs-show&lt;/em&gt; and a hacked up &lt;em&gt;list-buffers&lt;/em&gt; that …&lt;/p&gt;</summary><content type="html">&lt;p&gt;When you do so much of your work in one text editor the efficiency of switching between buffers becomes more important. For a long time I've had two bindings &amp;quot;C-x b&amp;quot; and &amp;quot;C-x C-b&amp;quot; which in days of yore I had bound to &lt;em&gt;bs-show&lt;/em&gt; and a hacked up &lt;em&gt;list-buffers&lt;/em&gt; that opened another window. These are broadly the &amp;quot;quick switch between working buffers&amp;quot; and &amp;quot;show me all the buffers&amp;quot;.&lt;/p&gt;
&lt;p&gt;For some time I've relegated &lt;em&gt;bs-show&lt;/em&gt; to the longer binding and now use Stephen Bach's excellent &lt;a class="reference external" href="https://github.com/sjbach/lusty-emacs"&gt;Lusty Explorer&lt;/a&gt; which works really well when you know the name of the buffer and it's fairly unique. However when you've been going a while it can get un-manageable with a large number of open buffers, especially if you've opened second copy of a file from another source tree. This is what I would use the old classic &lt;em&gt;bs-show&lt;/em&gt; for.&lt;/p&gt;
&lt;p&gt;A few days ago I discovered &lt;a class="reference external" href="http://www.emacswiki.org/emacs/IbufferMode"&gt;ibuffer-mode&lt;/a&gt; with it's &lt;em&gt;ibuffer-bs-show&lt;/em&gt; buffer navigator. Looking back through the Planet Emacsen history I can see it has been mentioned before and given it's been in Emacs since version 22 I'm surprised I hadn't cottoned on to it earlier.&lt;/p&gt;
&lt;p&gt;One thing that might have put me off is the initial buffer list can be quite sparse. By default you only see buffers with files associated which misses out IRC, Edit with Emacs and *scratch* buffers. However hit &amp;quot;h&amp;quot; and you'll see there are a plethora of quick keys for chaning the view. A quick &amp;quot;//&amp;quot; and all filters are removed and you can quickly filter by different criteria. To get the most out of the mode you'll probably want to set up some custom filters (&amp;quot;/r&amp;lt;completing filter name&amp;quot;&amp;gt;) to make quickly switching to groups of buffers easy. I currently have &amp;quot;work&amp;quot;, &amp;quot;remote&amp;quot;, &amp;quot;irc&amp;quot; and &amp;quot;logs&amp;quot; as filters. You can filter by name as well as major-mode.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;ibuffer-mode&lt;/em&gt; does have the concept of Filter Groups although I'm not sure what they add on top of having normal filters which as far as I can tell can be arbitrarily complex. It also has some quite handy sorting and selection modes e.g. &amp;quot;sv&amp;quot; - sort by last viewing time. Given the amount of space the wiki devotes &lt;a class="reference external" href="http://www.emacswiki.org/emacs/CategoryBufferSwitching"&gt;to the topic&lt;/a&gt; I wish I'd re-examined my buffer switching habits sooner. The change is already paying dividends for my productivity.&lt;/p&gt;
&lt;p&gt;Before I go I thought I'd put in a quick mention of Google+. There is growing community of fellow Emacs users starting to post on it. One thing that attracts me to Google+ over Facebook (too data-miney) and Twitter (too short) is the concept of &amp;quot;Circles&amp;quot;. It makes sharing geeky Emacs posts with people that might actually care easy while sparing them the flood of baby pictures I share with friends and family. If you'd like to &lt;a class="reference external" href="https://plus.google.com/110732415405459842150/posts"&gt;follow me&lt;/a&gt; or my &lt;a class="reference external" href="https://plus.google.com/b/109717789196934058146/"&gt;alter-ego&lt;/a&gt; please do mention Emacs in your profile or in a message so I can assign you to the correct circles.&lt;/p&gt;
</content><category term="geek"></category><category term="emacs"></category><category term="google"></category><category term="ibuffer"></category></entry><entry><title>Getting organised</title><link href="https://www.bennee.com/~alex/blog/2012/01/13/getting-organised/" rel="alternate"></link><published>2012-01-13T10:38:00+00:00</published><updated>2012-01-13T10:38:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2012-01-13:/~alex/blog/2012/01/13/getting-organised/</id><summary type="html">&lt;p&gt;What with becoming a parent and getting promoted I suddenly find myself needing to become a lot more organised. Although I've been using &lt;a class="reference external" href="http://orgmode.org/"&gt;org-mode&lt;/a&gt; for a bit I need to get a lot more organised with it.&lt;/p&gt;
&lt;p&gt;Previously I had two sets of org notes. My personal set where sitting …&lt;/p&gt;</summary><content type="html">&lt;p&gt;What with becoming a parent and getting promoted I suddenly find myself needing to become a lot more organised. Although I've been using &lt;a class="reference external" href="http://orgmode.org/"&gt;org-mode&lt;/a&gt; for a bit I need to get a lot more organised with it.&lt;/p&gt;
&lt;p&gt;Previously I had two sets of org notes. My personal set where sitting on my server which I could access via the terminal. I generally accessed this at home on the odd occasion when I was doing things like the annual round of insurance quote gathering. The second set was a fairly simple time sheet type affair that I was using at work to keep a vague track of where all my time was spent. The big missing part of this is when I'm on the move.&lt;/p&gt;
&lt;p&gt;I've just recently upgraded my phone to the latest &lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2012/01/06/nexus-of-possibilities/"&gt;Galaxy Nexus&lt;/a&gt; which is a fine Google enabled device. I make no apologies for using Google's calendering and shared document services. They work very well and importantly allow me to share things with my wife who doesn't quite share my desire to run everything from a text editor. However for my personal task lists on the move and remembering what's coming up at work it doesn't quite cut it. Besides I like org-mode and I'd heard about &lt;a class="reference external" href="http://mobileorg.ncogni.to/"&gt;MobileOrg&lt;/a&gt; so I endeavoured to set it up.&lt;/p&gt;
&lt;p&gt;MobileOrg has been around some time for the iPhone but the mechanisms it uses for integrating with org-mode are fairly well documented. As a result there is a couple of Android implementations for it. Matthew Jone's &lt;a class="reference external" href="https://github.com/matburt/mobileorg-android"&gt;mobileorg-android&lt;/a&gt; was the first version I tried.&lt;/p&gt;
&lt;p&gt;The original sync method for MobileOrg was to use a service like Dropbox to sync files. Given the history of Dropbox's security I wasn't about to move my files into the proprietary cloud. The alternative is to enable &lt;a class="reference external" href="http://en.wikipedia.org/wiki/WebDAV"&gt;WebDAV&lt;/a&gt; on my web-server and therefor enable two way communication via HTTP. It was a little concerning to see self-signed SSL wasn't supported as this does open up a potential attack vector on my machine. I've mitigated it a little by using digest authentication instead of basic-auth but I'd still prefer to be conducting these read-write operations over something more secure.&lt;/p&gt;
&lt;p&gt;Initial results were a little underwhelming. After some messing around with the format of org-links I eventually got a basic outline summary up. Unfortunately I can't seem to sync notes created on my phone to the server. This seems to be a Apache problem which I shall have to dig into later.&lt;/p&gt;
&lt;p&gt;After perusing the market some more I noticed there is a new project in town. Konstantin's &lt;a class="reference external" href="https://github.com/kvj/mobileorg-android"&gt;MobileOrgNG&lt;/a&gt; was forked some time ago from Matthew's code and on installing I found it looked an awful lot better. I've still be unable to post any locally added notes (due to previously mentioned Apache config issues). However it's presentation is a lot slicker and it shows a lot of potential for being a good MobileOrg client.&lt;/p&gt;
&lt;p&gt;I'm now stuck with a classic open source fork dilemma. The code bases look to have diverged enough that these two projects are essential going their own way. Looking at the two &lt;a class="reference external" href="https://github.com/matburt/mobileorg-android/graphs/impact"&gt;impact&lt;/a&gt; &lt;a class="reference external" href="https://github.com/kvj/mobileorg-android/graphs/impact"&gt;graphs&lt;/a&gt; it looks like they diverged around August 2011 and since then MobileOrgNG looks pretty much like a solo effort albeit with an impressive commit rate of new features.&lt;/p&gt;
&lt;p&gt;So the questions for my readers. Which code base should I jump on? Has anyone got experience with the two different code bases and the reason they split? Are there any other Android clients for org-mode I should be looking at?&lt;/p&gt;
</content><category term="geek"></category><category term="emacs"></category><category term="life"></category><category term="org-mode"></category></entry><entry><title>Nexus of possibilities</title><link href="https://www.bennee.com/~alex/blog/2012/01/06/nexus-of-possibilities/" rel="alternate"></link><published>2012-01-06T22:47:00+00:00</published><updated>2012-01-06T22:47:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2012-01-06:/~alex/blog/2012/01/06/nexus-of-possibilities/</id><summary type="html">&lt;p&gt;Looking back the last few months I notice every post has been about family and parenthood. Time to redress the balance a little and add some geek friendly contents.&lt;/p&gt;
&lt;p&gt;After Christmas I indulged myself with a new phone. When I got the HTC Hero I'd deliberately skipped the first generation …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Looking back the last few months I notice every post has been about family and parenthood. Time to redress the balance a little and add some geek friendly contents.&lt;/p&gt;
&lt;p&gt;After Christmas I indulged myself with a new phone. When I got the HTC Hero I'd deliberately skipped the first generation of Android phones to give a chance for the hardware to mature. I also made the rash promise it would be my last phone for some time. As it happens I think 2.5 years is a fairly good innings for a piece of technology where the innovation cycle is measured in months. I still have the Hero but now it's not my main phone I can afford to be a bit more experimental with the software I put on it.&lt;/p&gt;
&lt;p&gt;There were a couple of changes to my approach to choosing a new phone this cycle. The first was I brought it outright off-contract. Although I suspect I could get it slightly cheaper overall through a phone contract there are some non-financial downsides to the contract approach. The first is the operator takes the view that the phone belongs to them so they can install (and prevent you removing) what they like. The recent &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Carrier_IQ#Rootkit_discovery_and_media_attention"&gt;Carrier IQ controversy&lt;/a&gt; should certainly act as a salient reminder that the mobile phone companies do not have your interests closest to their hearts. The second is lack of flexibility. Although thanks to Ofcom we have number portability most people are only able to take advantage of it at contract break points. The operators know this and off course do their very best to keep you tied in to their deals. Now I'm off contract I'm currently paying £10/month for unlimited data and all the calls/texts I use. They have to work doubly hard to keep me as a customer as I can jump ship at any point. That flexibility is more than worth the up-front cost of paying for the phone in full.&lt;/p&gt;
&lt;p&gt;As far as choice there was only really one in the frame. Much as I like Android and it's open-source nature it does suffer from a problem due to that openness. Although it's heartening to see manufacturers are starting to relent and cease the practice of locking boot-loaders to prevent 3rd party firmware there are still problems in their support. They tend to stop updating the firmware shortly after they stop manufacturing the phone. Some manufacturers also have a hard time &lt;a class="reference external" href="http://mjg59.dreamwidth.org/9387.html"&gt;meeting their GPL obligations&lt;/a&gt; which makes open source support for the hardware a lot harder. As a result I decided to wait for the next in the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Google_Nexus"&gt;Google Nexus&lt;/a&gt; series which ships with the latest release of Android, &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Ice_Cream_Sandwhich#4.x_Ice_Cream_Sandwich"&gt;Ice Cream Sandwich&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Initial impressions of the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Galaxy_Nexus"&gt;new phone&lt;/a&gt; are good. The phone is a little bigger than the Hero but pretty much 100% screen with more than a few hints of Star Trek data pad ;-). The &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Super_AMOLED"&gt;Super AMOLED&lt;/a&gt; display looks very clear and crisp with both photos and video. The phone is very nippy thanks to the accelerated 3D hardware and duel core processor. The camera is certainly an improvement on the Hero and with the LED flash is close to achieving the quality I was used to on my old Sony K750. The A-GPS also acquires location a lot faster than the Hero. In fact a lot of things I thought were app problems have cleared up when presented with faster hardware. All in all I'm very happy with the Galaxy Nexus and think it easily stacks up against any iPhone you might want to compare it with.&lt;/p&gt;
</content><category term="geek"></category><category term="android"></category><category term="galaxy nexus"></category><category term="google"></category><category term="ice cream sandwich"></category><category term="phone"></category></entry><entry><title>5 years ago</title><link href="https://www.bennee.com/~alex/blog/2012/01/02/5-years-ago/" rel="alternate"></link><published>2012-01-02T23:32:00+00:00</published><updated>2012-01-02T23:32:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2012-01-02:/~alex/blog/2012/01/02/5-years-ago/</id><summary type="html">&lt;p&gt;I was reminded of a new years party &lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2007/01/02/"&gt;5 years ago&lt;/a&gt; when I rather drunkenly blurted out to Fliss my desire not to be separated from her by geography next time we welcomed in a new year. We hadn't been together that long and she was visiting Oz for her …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I was reminded of a new years party &lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2007/01/02/"&gt;5 years ago&lt;/a&gt; when I rather drunkenly blurted out to Fliss my desire not to be separated from her by geography next time we welcomed in a new year. We hadn't been together that long and she was visiting Oz for her brothers wedding. Happily I've celebrated every new year with her in person since.&lt;/p&gt;
&lt;p&gt;This year was not exactly rock and roll as we now have Ursula with us. We ordered a large takeout and set about watching a few films (&lt;a class="reference external" href="http://www.imdb.com/title/tt0945513/"&gt;Source Code&lt;/a&gt;, pretty good actually) before heading up to bed before Big Ben struck. We watched the local fireworks from our bedroom window and pretty quickly went to sleep (a luxury these days to be taken when possible). When I think about the last 5 years I realise what a lucky and fortunate man I am to have such a wonderful wife and now a beautiful baby daughter.&lt;/p&gt;
</content><category term="general"></category><category term="family"></category><category term="fliss"></category><category term="ursula"></category></entry><entry><title>Simple State Machines and Other Things I Have Learnt</title><link href="https://www.bennee.com/~alex/blog/2011/12/27/simple-state-machines-and-other-things-i-have-learnt/" rel="alternate"></link><published>2011-12-27T13:27:00+00:00</published><updated>2011-12-27T13:27:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-12-27:/~alex/blog/2011/12/27/simple-state-machines-and-other-things-i-have-learnt/</id><summary type="html">&lt;p&gt;We've just returned from 3 days at Fliss' Mum's house. Although we are still fairly sleep deprived things were made a lot easier by the presence of aunts and grandmothers who offered to take turns tending to the baby. This included one of those rarest of things, time for the …&lt;/p&gt;</summary><content type="html">&lt;p&gt;We've just returned from 3 days at Fliss' Mum's house. Although we are still fairly sleep deprived things were made a lot easier by the presence of aunts and grandmothers who offered to take turns tending to the baby. This included one of those rarest of things, time for the two of us spend together without any other distractions. My life has now been reduced to a fairly simple state machine. There are predominantly 3 activities, for now ignoring the fourth: &amp;quot;At Work&amp;quot; which won't kick in until the 10th.&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Checking baby is happy&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This involves running though a fairly simple set of checks. Is the baby too hot or cold? Is the baby clean? Is the baby hungry?&lt;/p&gt;
&lt;p&gt;I have to confess I have quickly developed the parental habit of sniffing around the crotch area of the baby. It is so far the fastest and most effective way of telling if a change is required.&lt;/p&gt;
&lt;p&gt;Ursula is starting show interest in things so occasionally the correct action is just to walk around a bit so she can look at new stuff. I have no idea how her brain is assimilating all the knowledge of corners and ceilings (being areas of contrast she can make out) but it could possibly point to a future career as a engineer ;-)&lt;/p&gt;
&lt;ol class="arabic simple" start="2"&gt;
&lt;li&gt;Checking Mummy is happy&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Invariably the baby's internal state eventually resolves to &amp;quot;Hungry&amp;quot; which requires it to be passed to Mum for feeding. Although we have been expressing and trying bottle feeds at the moment she gulps way to fast and invariably throws most of it up after the feed. So far we have found feeding &amp;quot;at source&amp;quot; is generally the most effective. However it does tend to immobilise Mum while she feeds so it falls to me to fetch and carry to ensure as many useful things are within reach when required.&lt;/p&gt;
&lt;ol class="arabic simple" start="3"&gt;
&lt;li&gt;Do everything else&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The general order being cleaning, preparing food, household chores and finally if I'm lucky something else. Last night I did get a few hours to play through some of the latest CoD which Santa delivered over Christmas. I do harbour some hope of doing some recreational coding over the next few days although my start-up latency is so high that the state machine is often reset before I get into anything worthwhile.&lt;/p&gt;
&lt;p&gt;The last few weeks have thrown up a few more interesting discoveries though. One of the more recent ones is that white noise is very restful for babies. We've managed to extend naps in the stroller/bassinet from around 5 minutes to up to 45 minutes by running a white noise app on the phone. My favourite Android app so far is &lt;a class="reference external" href="http://code.google.com/p/chromadoze/"&gt;Chromadoze&lt;/a&gt; which lovely little ope source app with a rather funky main display for setting the frequency balance of the noise. If I get a chance I may have a play at adding some features more aimed at soothing babies.&lt;/p&gt;
</content><category term="general"></category><category term="android"></category><category term="parenting"></category><category term="ursula"></category></entry><entry><title>What big eyes you have</title><link href="https://www.bennee.com/~alex/blog/2011/12/18/what-big-eyes-you-have/" rel="alternate"></link><published>2011-12-18T18:42:00+00:00</published><updated>2011-12-18T18:42:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-12-18:/~alex/blog/2011/12/18/what-big-eyes-you-have/</id><summary type="html">&lt;p&gt;` &amp;lt;&lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2011/12/18/what-big-eyes-you-have/ursula_eyes/"&gt;http://www.bennee.com/~alex/blog/2011/12/18/what-big-eyes-you-have/ursula_eyes/&lt;/a&gt;&amp;gt;`__&lt;/p&gt;
&lt;p&gt;We've had Ursula at home for over a week now and are slowly getting into the swing of this parenting malarkey. So far we've nicknamed her &amp;quot;Trufflehog&amp;quot; after the manner she searches for the breasts when she's hungry …&lt;/p&gt;</summary><content type="html">&lt;p&gt;` &amp;lt;&lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2011/12/18/what-big-eyes-you-have/ursula_eyes/"&gt;http://www.bennee.com/~alex/blog/2011/12/18/what-big-eyes-you-have/ursula_eyes/&lt;/a&gt;&amp;gt;`__&lt;/p&gt;
&lt;p&gt;We've had Ursula at home for over a week now and are slowly getting into the swing of this parenting malarkey. So far we've nicknamed her &amp;quot;Trufflehog&amp;quot; after the manner she searches for the breasts when she's hungry which seems to basically be when she's awake. We are getting a growing amount of the &amp;quot;Quiet Attentive&amp;quot; awake state though. Her fascination is mainly with areas of contrast which to us mainly seems to be corners of the room. I'm not sure how much is down to baby face morphology but one comment that keeps coming up is how big her eyes are. Although I'm bound to be an overly proud Dad I'm fairly sure she's already starting to track objects and points in space. You can play an interesting game carrying her around being guided by the position of her head. A head she seems to be able to keep upright most of the time by herself although she still hasn't mastered the art of pushing up when on the play-mat.&lt;/p&gt;
&lt;p&gt;As she is currently not self-propelling the day to day handling is fairly simple. However preparation is the key to success here:&lt;/p&gt;
&lt;table border="1" class="docutils"&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;` &amp;lt;&lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2011/12/18/what-big-eyes-you-have/img_0725/"&gt;http://www.bennee.com/~alex/blog/2011/12/18/what-big-eyes-you-have/img_0725/&lt;/a&gt;&amp;gt;`__&lt;/td&gt;
&lt;td&gt;` &amp;lt;&lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2011/12/18/what-big-eyes-you-have/img_0726/"&gt;http://www.bennee.com/~alex/blog/2011/12/18/what-big-eyes-you-have/img_0726/&lt;/a&gt;&amp;gt;`__&lt;/td&gt;
&lt;td&gt;` &amp;lt;&lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2011/12/18/what-big-eyes-you-have/img_0727/"&gt;http://www.bennee.com/~alex/blog/2011/12/18/what-big-eyes-you-have/img_0727/&lt;/a&gt;&amp;gt;`__&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;I'm sure all too soon she will become self-propelling and then our lives will become a lot less sedentary. In the meantime we are feeling quite pleased having made it out of the house several times. We've managed a brief trip into town, a tea-morning and a couple of trips to the pub. Ursula certainly seems to be happy to drop off when ever she is put in the car seat and driven anywhere. This tendency also translates to the car seat being &amp;quot;fitted&amp;quot; to the shopping trolley.&lt;/p&gt;
&lt;p&gt;One area we have struggled with is the pram cot which she doesn't like at all - tending to kick and scream while at the same time divesting herself of the layers of warm blankets to shield her from the environment. While wheelies seem to briefly calm her down it's not a long term practical solution. I wonder if she is developing Minbari sleeping habits?&lt;/p&gt;
&lt;p&gt;As it has been almost impossible to get her to sleep in the mosses basket we've already taken our first major parenting decision to keep her in the bed with us. It has improved on the amount of sleep we actually get and it makes feeding her fairly non-distracting. We do worry about the advice against co-sleeping but feel the size of the bed makes it a little more practical and we've developed fairly light sleeping habits quite quickly. The feedback from others has been interesting though, ranging from warnings about making a rod for our own backs later to encouragements to go with what works for us. At some point we'll have to encourage her to sleep on her own but it's a bridge we'll cross later on when she's sleeping longer hours.&lt;/p&gt;
&lt;p&gt;I've been back to work a few days and have the next two to look forward to until I break for Christmas. I'm already looking forward to what month 2 brings. I'm hoping just a little more sleep and a lot more activity from Ursula.&lt;/p&gt;
</content><category term="general"></category><category term="family"></category><category term="parenting"></category><category term="ursula"></category></entry><entry><title>New Family Unit, Some Assembly Required.</title><link href="https://www.bennee.com/~alex/blog/2011/12/07/new-family-unit-some-assembly-required/" rel="alternate"></link><published>2011-12-07T22:08:00+00:00</published><updated>2011-12-07T22:08:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-12-07:/~alex/blog/2011/12/07/new-family-unit-some-assembly-required/</id><summary type="html">&lt;p&gt;I brought Fliss and Ursula home on Monday morning so we now have a complete family unit at home. We didn't do much on Monday apart from appreciate being back in the house with all the attendant creature comforts. Tuesday didn't involve much either but we had both sides of …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I brought Fliss and Ursula home on Monday morning so we now have a complete family unit at home. We didn't do much on Monday apart from appreciate being back in the house with all the attendant creature comforts. Tuesday didn't involve much either but we had both sides of the family visit in the afternoon for a little celebratory drink. So far Wednesday's most taxing task has been a trip to the doctors for a jab for Fliss. We are literally taking baby steps in building up our baby wrangling confidence.&lt;/p&gt;
&lt;p&gt;To be fair to Ursula she's not overly demanding as of yet. If she's awake she is generally hungry (and/or in need of changing) otherwise she sleeps a lot. Today we got the first glimpses of a growing interest in the rest of the world, but mainly it's the eating and sleeping that keeps us occupied. It's a good design feature because they are fairly uncomplicated needs to fulfil when operating on a reduced sleep cycle. Still it felt like a small victory to have had a few hours of sleep each last night.&lt;/p&gt;
&lt;p&gt;Tomorrow we may tackle the immense task of visiting town to obtain some heavily engineered mammary holders. Before that I need to work out exactly what the minimum functional travelling baby bag is.&lt;/p&gt;
</content><category term="general"></category><category term="family"></category><category term="parenthood"></category><category term="ursula"></category></entry><entry><title>Light at the end of the tunnel</title><link href="https://www.bennee.com/~alex/blog/2011/12/02/light-at-the-end-of-the-tunnel/" rel="alternate"></link><published>2011-12-02T11:26:00+00:00</published><updated>2011-12-02T11:26:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-12-02:/~alex/blog/2011/12/02/light-at-the-end-of-the-tunnel/</id><summary type="html">&lt;p&gt;Ursula is quite possibly the healthiest baby that has ever graced the Special Care Baby Unit at our local hospital. The sequence of events that led us there were more than a little concerning. As we were about to be discharged the midwife observed a leg twitch that didn't look …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Ursula is quite possibly the healthiest baby that has ever graced the Special Care Baby Unit at our local hospital. The sequence of events that led us there were more than a little concerning. As we were about to be discharged the midwife observed a leg twitch that didn't look like the standard &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Myoclonus"&gt;myoclonic twitch&lt;/a&gt; you expect with sleeping babies. This led to a summoning of the paediatric registrar followed by the consultant and her crash bag. At the time we wondered if it was just the hospital stalling our discharge as we were getting impatient to go home having been told the final blood test result was one hour away for several hours in a row.&lt;/p&gt;
&lt;p&gt;There are a number of possible causes for these twitches, mostly neurological in nature with various infections including &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Meningitis"&gt;meningitis&lt;/a&gt; potentially acquired during the birth. After an examination the registrar assured us the most likely cause would be &amp;quot;just one of those things your baby does&amp;quot;. However they obviously wanted to rule out any of the other potential causes. Ursula was whisked up to the neo-natal intensive care unit and plugged up to various monitors and a cannula for monitoring and a series of tests. The experience was a little unsettling but the staff were very re-assuring and professional and obviously used to the shock that affects parents as their newborns get whisked into a room full of hospital beeps and alarms.&lt;/p&gt;
&lt;p&gt;So far all the tests Ursula has been subjected to have come back negative. The only remaining possibility is meningitis for which the test involves a delicate lumbar puncture procedure. After 3 failed attempts (wriggly babies are very rarely compliant) they abandoned the notion. As a result the working assumption is it was caused by meningitis and Ursula needs to complete the anti-biotic course she has been on since she moved to the ICU. She has since been moved into the rather more sedate Special Care Baby Unit (less beeping, more space) where she continues to be a hungry, alert and otherwise very healthy baby.&lt;/p&gt;
&lt;p&gt;Fliss was discharged on Wednesday and has been going through a bit of a hormonal roller-coaster as she comes home after spending the day feeding and reading to Ursula. However the end is in site and we hope to be bringing Ursula home on Monday evening (or possibly Tuesday morning) once she has finished her course of antibiotics.&lt;/p&gt;
&lt;p&gt;The experience has been a little unsettling. It seems I've collected the &amp;quot;Parental Worry&amp;quot; trophy a bit earlier than I was planning. However I remain grateful to the professional NHS staff who have been taking care of our precious daughter where her health and not the cost of her care has been their top priority. Meanwhile I've been back to work for a few days so as not to burn all my paternity before the family is fully assembled at home.&lt;/p&gt;
</content><category term="general"></category><category term="family"></category><category term="parenthood"></category><category term="ursula"></category></entry><entry><title>Reaching escape velocity</title><link href="https://www.bennee.com/~alex/blog/2011/11/28/reaching-escape-velocity/" rel="alternate"></link><published>2011-11-28T20:39:00+00:00</published><updated>2011-11-28T20:39:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-11-28:/~alex/blog/2011/11/28/reaching-escape-velocity/</id><summary type="html">&lt;p&gt;The last few days have been frustrating. Every time we get ready to pack up and come home something comes up. First it was a bout of jaundice which needed seeing to. Now the pediatricians are being abundantly cautious about a twitch she has while she's asleep. This has extended …&lt;/p&gt;</summary><content type="html">&lt;p&gt;The last few days have been frustrating. Every time we get ready to pack up and come home something comes up. First it was a bout of jaundice which needed seeing to. Now the pediatricians are being abundantly cautious about a twitch she has while she's asleep. This has extended the sentence by at least another 48 hours which is really aggravating. Having a quite day or two to myself to potter and get the house ready is one thing, but at this rate I'll have burnt all my paternity leave before my child gets home.&lt;/p&gt;
&lt;p&gt;I feel bad for abandoning Fliss who keeps patiently sending me home to get another good nights sleep. I know it will be all right in the end but it's definitely making me aggravated. I would like my family at home please!&lt;/p&gt;
</content><category term="general"></category><category term="parenthood"></category><category term="ursula"></category></entry><entry><title>Do the stars shine brighter tonight?</title><link href="https://www.bennee.com/~alex/blog/2011/11/25/do-the-stars-shine-brighter-tonight/" rel="alternate"></link><published>2011-11-25T23:45:00+00:00</published><updated>2011-11-25T23:45:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-11-25:/~alex/blog/2011/11/25/do-the-stars-shine-brighter-tonight/</id><summary type="html">&lt;p&gt;This was my thought as I unpacked the car tonight. It may have been the cold weather and clear skies though, it's hard to be sure. I'm currently pottering around the house tidying up and preparing to welcome Ursula to the home tomorrow. I suspect my perspective may have altered …&lt;/p&gt;</summary><content type="html">&lt;p&gt;This was my thought as I unpacked the car tonight. It may have been the cold weather and clear skies though, it's hard to be sure. I'm currently pottering around the house tidying up and preparing to welcome Ursula to the home tomorrow. I suspect my perspective may have altered in the last few days.&lt;/p&gt;
&lt;p&gt;Lets start with the birth. As it approached it felt much like a late night after party when everything was getting a bit hazy. You know the sort, you're sure someone said something profound but it's been a very long night.&lt;/p&gt;
&lt;p&gt;For a variety of totally mundane reasons it had taken us 28 hours to reach the dénouement of this particular hospital visit. I'll spare the tedious details although I'll happily give you the story as I remember it over a beer if you ask me in person. 28 hours is a long time to be awake and the sensation of transforming from the theoretical future parent to an actual real one is much akin to being launched off on a roller-coaster of unknown length and duration. I have now joined that biggest of shared clubs - hello my fellow breeders, I can talk about my child now ;-)&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2011/11/25/do-the-stars-shine-brighter-tonight/img_0705/"&gt;Picture of a newborn baby looking hungry&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When I was ordered to bed the first night I excitedly blurted the news across the social media. I was worried I would bore my followers with parental ramblings before being reminded there are a lot of parents out there happy to share their experiences. I'll be paying closer attention to what they say in the future on my journey to responsible adulthood.&lt;/p&gt;
&lt;p&gt;I've ticked off a few things on my journey so far.&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* My baby certainly didn't look like Winston Churchill. I don't know all those other parents cope ;-)&lt;/div&gt;
&lt;div class="line"&gt;* Nappies aren't really an issue, parental pragmatism kicks in pretty quickly.&lt;/div&gt;
&lt;div class="line"&gt;* Nuzzling post-feed babies are indeed cute, even to a manly bloke like myself&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I'm sure I am quickly acquiring the list of stereotypical parental behaviours. I get the sense it's going to be a wild ride catching them all!&lt;/p&gt;
</content><category term="general"></category><category term="family"></category><category term="parenthood"></category><category term="ursula"></category></entry><entry><title>Edit with Emacs v1.10 released</title><link href="https://www.bennee.com/~alex/blog/2011/11/06/edit-with-emacs-v1-10-released/" rel="alternate"></link><published>2011-11-06T20:25:00+00:00</published><updated>2011-11-06T20:25:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-11-06:/~alex/blog/2011/11/06/edit-with-emacs-v1-10-released/</id><summary type="html">&lt;p&gt;I received a bunch of feedback and patches from my last announcement but I think all the outstanding bugs are now squashed. The edit-server.el has seen some love to make it more idiomatically correct for elisp. The main change is new code to handle editable DIV tags beloved of …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I received a bunch of feedback and patches from my last announcement but I think all the outstanding bugs are now squashed. The edit-server.el has seen some love to make it more idiomatically correct for elisp. The main change is new code to handle editable DIV tags beloved of such sites as Google+ (which you are welcome to &lt;a class="reference external" href="https://plus.google.com/u/0/110732415405459842150/posts"&gt;follow me on&lt;/a&gt;, maybe I should have an elisp circle?).&lt;/p&gt;
&lt;p&gt;A big cosmetic change is a brand new settings page which looks less like a web-form from the early 90's and more like part of Chrome. Alas I can take no credit for this but can thank Frank Kohlhepp's &lt;a class="reference external" href="https://github.com/frankkohlhepp/fancy-settings"&gt;fancy-settings&lt;/a&gt; library. In fact a lot of the credit should go to third party libraries like &lt;a class="reference external" href="http://jquery.com/"&gt;jQuery&lt;/a&gt; and of course the growing list of contributors who have submitted code for merging.&lt;/p&gt;
&lt;p&gt;So the final changelog for 1.10 is:&lt;/p&gt;
&lt;p&gt;Extension&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* Ignore textareas marked as read only&lt;/div&gt;
&lt;div class="line"&gt;* Don't tag areas that are not visible&lt;/div&gt;
&lt;div class="line"&gt;* General clean-up to use jQuery to find elements&lt;/div&gt;
&lt;div class="line"&gt;* Explicit CSS for edit button to override page settings&lt;/div&gt;
&lt;div class="line"&gt;* Handle editable DIV blocks (e.g. Google+)&lt;/div&gt;
&lt;div class="line"&gt;* Optimise the finding of text areas for highly dynamic pages&lt;/div&gt;
&lt;div class="line"&gt;* Revamp the settings page with &amp;quot;Fancy Settings&amp;quot;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;edit-server.el&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* Allow customisation of edit-server-default-major-mode&lt;/div&gt;
&lt;div class="line"&gt;* Allow edit mode to be set by matched URL&lt;/div&gt;
&lt;div class="line"&gt;* Tweak detection of MacOS X Emacsen&lt;/div&gt;
&lt;div class="line"&gt;* Change behaviour of C-x C-s to save to kill-ring&lt;/div&gt;
&lt;div class="line"&gt;* Persist the buffer-local variables beyond mode changes&lt;/div&gt;
&lt;div class="line"&gt;* Setup keymap within defvar&lt;/div&gt;
&lt;div class="line"&gt;* Clean-ups to code to be more idiomatic.&lt;/div&gt;
&lt;/div&gt;
</content><category term="geek"></category><category term="chrome"></category><category term="chromium"></category><category term="edit with emacs"></category><category term="emacs"></category><category term="javascript"></category><category term="jquery"></category></entry><entry><title>Call for testing for Edit with Emacs</title><link href="https://www.bennee.com/~alex/blog/2011/10/30/call-for-testing-for-edit-with-emacs/" rel="alternate"></link><published>2011-10-30T22:55:00+00:00</published><updated>2011-10-30T22:55:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-10-30:/~alex/blog/2011/10/30/call-for-testing-for-edit-with-emacs/</id><summary type="html">&lt;p&gt;I've been doing a bunch of house-keeping on Edit with Emacs recently in preparation for a new release. I can only apologise to those people who have submitted patches and merge requests for my tardiness. I'm afraid Real Life &lt;sup&gt;tm&lt;/sup&gt; has been taking precedence.&lt;/p&gt;
&lt;p&gt;As regular readers of the non-emacs …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've been doing a bunch of house-keeping on Edit with Emacs recently in preparation for a new release. I can only apologise to those people who have submitted patches and merge requests for my tardiness. I'm afraid Real Life &lt;sup&gt;tm&lt;/sup&gt; has been taking precedence.&lt;/p&gt;
&lt;p&gt;As regular readers of the non-emacs sections of my blog will be aware my recreational coding time is about to be severely curtailed. As it's been a while since the last release and a number of new features have been added it would be nice to get some wider testing. I therefor am hoping to elicit the help of the Emacs community to &lt;a class="reference external" href="https://github.com/stsquad/emacs_chrome"&gt;check out the code&lt;/a&gt; and give the tires a bit of a kick before I push out the final release to &amp;quot;the cloud&amp;quot;. I'd rather not regress behaviour for the 1917 users who get Edit with Emacs from the Chrome store just before I disappear into a haze of nappies and parental responsibilities. The current changes over the last release are:&lt;/p&gt;
&lt;p&gt;Extension&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* Ignore textareas marked as read only&lt;/div&gt;
&lt;div class="line"&gt;* Don't tag areas that are not visible&lt;/div&gt;
&lt;div class="line"&gt;* General clean-up to use jQuery to find elements&lt;/div&gt;
&lt;div class="line"&gt;* Explicit CSS for edit button to override page settings&lt;/div&gt;
&lt;div class="line"&gt;* Handle editable DIV blocks (e.g. Google+)&lt;/div&gt;
&lt;div class="line"&gt;* Optimise the finding of text areas for highly dynamic pages&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;edit-server.el&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* Allow customisation of edit-server-default-major-mode&lt;/div&gt;
&lt;div class="line"&gt;* Allow edit mode to be set by matched URL&lt;/div&gt;
&lt;div class="line"&gt;* Tweak detection of MacOS X Emacsen&lt;/div&gt;
&lt;div class="line"&gt;* Change behaviour of C-x C-s to save to kill-ring&lt;/div&gt;
&lt;/div&gt;
</content><category term="geek"></category><category term="edit with emacs"></category><category term="emacs"></category></entry><entry><title>Project Veg Patch</title><link href="https://www.bennee.com/~alex/blog/2011/10/17/project-veg-patch/" rel="alternate"></link><published>2011-10-17T14:46:00+01:00</published><updated>2011-10-17T14:46:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-10-17:/~alex/blog/2011/10/17/project-veg-patch/</id><summary type="html">&lt;p&gt;I noticed I haven't posted anything this month about what's going on in my life. Well as you can imagine the impending arrival of our first child has kind of glossed over everything else. I have not yet achieved a state of panic but it's very firmly in the radar …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I noticed I haven't posted anything this month about what's going on in my life. Well as you can imagine the impending arrival of our first child has kind of glossed over everything else. I have not yet achieved a state of panic but it's very firmly in the radar now. Although I've been taking it easy on the drinking (so as to help Fliss avoid the temptation) I'm now going fully dry as I'm on potential hospital driving duties.&lt;/p&gt;
&lt;p&gt;It was nice to catch up with a bunch of people at Adam and Lou's wedding last weekend. It more or less qualified as our last venture away from home for the foreseeable future. This weekend I spent a good deal of the time laying the excess turf from Project: Veg Patch over what used to pass for our front lawn. This of course means the main landscaping of the new &amp;quot;Vegetable&amp;quot; patch at the back of our property is now complete:&lt;/p&gt;
&lt;p&gt;` &amp;lt;&lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2011/10/17/project-veg-patch/alex-and-fliss-landscape-garden-1000/"&gt;http://www.bennee.com/~alex/blog/2011/10/17/project-veg-patch/alex-and-fliss-landscape-garden-1000/&lt;/a&gt;&amp;gt;`__&lt;/p&gt;
&lt;p&gt;I have to admit most of the work at the back was contracted out including a my brother and his partner who did most of the work levelling, laying and building what will hopefully be a productive growing area. Still we are both very pleased with the outcome and hopefully the grass will take and we can concentrate on planting what will provide us with fresh food for the future family!&lt;/p&gt;
</content><category term="general"></category><category term="house"></category><category term="life"></category><category term="veg patch"></category></entry><entry><title>*ritchie=NULL;</title><link href="https://www.bennee.com/~alex/blog/2011/10/13/ritchienull/" rel="alternate"></link><published>2011-10-13T16:09:00+01:00</published><updated>2011-10-13T16:09:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-10-13:/~alex/blog/2011/10/13/ritchienull/</id><summary type="html">&lt;p&gt;Now the smoke has settled on the passing of Jobs I'd like to talk
about a real computing hero of mine. Someone who literally has changed
the world (at least for everyone reading this). I learnt last night
that &lt;a class="reference external" href="http://boingboing.net/2011/10/12/dennis-ritchie-1941-2011-computer-scientist-unix-co-creator-c-co-inventor.html"&gt;Dennis Ritchie&lt;/a&gt;
had passed away. Without pioneers like Ritchie we wouldn't …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Now the smoke has settled on the passing of Jobs I'd like to talk
about a real computing hero of mine. Someone who literally has changed
the world (at least for everyone reading this). I learnt last night
that &lt;a class="reference external" href="http://boingboing.net/2011/10/12/dennis-ritchie-1941-2011-computer-scientist-unix-co-creator-c-co-inventor.html"&gt;Dennis Ritchie&lt;/a&gt;
had passed away. Without pioneers like Ritchie we wouldn't have most
of the computing infrastructure we have today.&lt;/p&gt;
&lt;p&gt;When I was growing up in our computer filled house I learnt like many
people playing with BASIC interpreters embedded into many of the early
micro-computers. From there I started to learn about assembler and
writing code that runs directly on the processor. However it wasn't
until I picked up my first copy of &lt;a class="reference external" href="http://en.wikipedia.org/wiki/The_C_Programming_Language"&gt;The C Programming Language&lt;/a&gt; (often
just called K&amp;amp;R) I truly started my journey towards becoming a real
programmer. Pretty much every procedural language since has borrowed
from or been developed from the foundations of C. I still own a copy
of the first edition which holds a honoured place on my computing
bookshelf. It's hard for me to imagine a better book to learn from for
my first &amp;quot;proper&amp;quot; programming language.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;C&lt;/em&gt; has been subjected to much criticism over it's long history for
being a source of many classic programmer errors. Non programmers may
have even seen their computers complaining about a &amp;quot;NULL pointer
de-reference&amp;quot; when a program &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Segmentation_fault"&gt;goes bang&lt;/a&gt;. This is because
the history of C was wrapped up in the need for a powerful low level
language (&amp;quot;close to bare metal&amp;quot;) that allowed the development of
powerful yet portable systems including the original &lt;a class="reference external" href="http://en.wikipedia.org/wiki/UNIX"&gt;UNIX&lt;/a&gt; which Richie was also involved
in the development of. Without C/Unix there would have been no
&lt;a class="reference external" href="http://en.wikipedia.org/wiki/Objective-C"&gt;Objective-C&lt;/a&gt;, no &lt;a class="reference external" href="http://en.wikipedia.org/wiki/NeXT"&gt;NeXT&lt;/a&gt; and ultimately no &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Mac_OS_X"&gt;Mac OS X&lt;/a&gt; which is important for much
of the renaissance of Apple now enjoys.&lt;/p&gt;
&lt;p&gt;If your looking for true pioneers of modern computing &lt;a class="reference external" href="http://www.youtube.com/watch?v=7FjX7r5icV8"&gt;Dennis Ritchie&lt;/a&gt; is certainly among
them. The world of computing has lost of it's true innovators and one
of my personal computing heroes.&lt;/p&gt;
</content><category term="geek"></category><category term="C"></category><category term="dmr"></category><category term="history"></category><category term="programming languages"></category><category term="unix"></category></entry><entry><title>RiP</title><link href="https://www.bennee.com/~alex/blog/2011/10/06/rip/" rel="alternate"></link><published>2011-10-06T12:13:00+01:00</published><updated>2011-10-06T12:13:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-10-06:/~alex/blog/2011/10/06/rip/</id><summary type="html">&lt;p&gt;Today the tech-world has lost one of those rarest of things, a &lt;a class="reference external" href="http://www.bbc.co.uk/news/world-us-canada-15193922"&gt;tech geek with name recognition&lt;/a&gt;. Steve Jobs and the company he founded with the lesser know &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Steve_Wozniak"&gt;Steve Wozniak&lt;/a&gt; is now a technology giant with operating profits and margins that most oil companies only dream of. It is all …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Today the tech-world has lost one of those rarest of things, a &lt;a class="reference external" href="http://www.bbc.co.uk/news/world-us-canada-15193922"&gt;tech geek with name recognition&lt;/a&gt;. Steve Jobs and the company he founded with the lesser know &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Steve_Wozniak"&gt;Steve Wozniak&lt;/a&gt; is now a technology giant with operating profits and margins that most oil companies only dream of. It is all the more remarkable given &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Apple_Inc."&gt;Apple's&lt;/a&gt; turbulent history from early home computer pioneer to near death experience in the 80s (when Jobs was ousted) followed by one of the most successful corporate turnarounds in history. Jobs' return to Apple coincided with the release of the iconic iMac, soon to be followed by the iPod and of course now the ubiquitous iPhone.&lt;/p&gt;
&lt;p&gt;In the early days Apple was pioneering as the nascent home computer market was finding it's way into the homes of the world. Arguably their most successful product, the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/IPod"&gt;iPod&lt;/a&gt;, was not a new innovation. Where Apple made up for this was in their execution. A lot of this is a tribute to Jobs' laser sharp focus on usability. The new Apple did not ship something half working and then worry about fixing it later in software. Nothing was shipped from Cupertino until Jobs was happy they had created a product that worked beautifully and would instantly promote the desire to own one when you played with it. The success of the Apple store is down to the fact that once you've touched and fondled their products parting with your cash seems like such a sensible idea.&lt;/p&gt;
&lt;p&gt;I have many criticisms of Apple and the way they conduct business in their walled garden. For this reason I'm not a big user of their products or technology. However I happily concede that Apple under Jobs' leadership have done more for advancing the vision how technology can improve peoples personal world than most companies in the tech sector. A world without Jobs' vision and focus is certainly a poorer one and he deserves his place in the history books for what he achieved.&lt;/p&gt;
</content><category term="geek"></category><category term="apple"></category><category term="jobs"></category></entry><entry><title>Saturday evening in New Zealand</title><link href="https://www.bennee.com/~alex/blog/2011/09/25/saturday-evening-in-new-zealand/" rel="alternate"></link><published>2011-09-25T09:45:00+01:00</published><updated>2011-09-25T09:45:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-09-25:/~alex/blog/2011/09/25/saturday-evening-in-new-zealand/</id><summary type="html">&lt;p&gt;A lot of people have made out that having the rugby on in the morning is a bit of a pain for fans. I've been quite enjoying the matches so far. The last two weekends Fliss and I have rotated cooking a Canadian style breakfast to go with our morning …&lt;/p&gt;</summary><content type="html">&lt;p&gt;A lot of people have made out that having the rugby on in the morning is a bit of a pain for fans. I've been quite enjoying the matches so far. The last two weekends Fliss and I have rotated cooking a Canadian style breakfast to go with our morning rugby. This week was my turn:&lt;/p&gt;
&lt;p&gt;[caption id=&amp;quot;attachment_2438&amp;quot; align=&amp;quot;alignright&amp;quot; width=&amp;quot;150&amp;quot; caption=&amp;quot;Enjoying adding the syrup.&amp;quot;]&lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2011/09/25/saturday-evening-in-new-zealand/img_0659/"&gt;Picture of bacon, pancakes, eggs and maple syrup.&lt;/a&gt;[/caption]&lt;/p&gt;
&lt;p&gt;Although England have been really lucky with their group it was hearting to see much better game than the last outing. There were a few times when Romania threatened to put a ball over the line but it brought out the best in the England team. In the end though the match was one sided and England were able to start romping the tries in.&lt;/p&gt;
&lt;p&gt;The France vs New Zealand promised to be a very well contested game for the first 10 minutes. However the All-Blacks soon asserted themselves over France and pummelled them into submission. This bodes well for England as it puts of the inevitable All-Black confrontation until the end of the tournament (assuming we make it that far).&lt;/p&gt;
&lt;p&gt;We're currently watching the Argentina vs Scotland which looks as though it will be the tightest of the lot so far.&lt;/p&gt;
</content><category term="general"></category><category term="rugby"></category><category term="rwc2011"></category></entry><entry><title>Social Wars</title><link href="https://www.bennee.com/~alex/blog/2011/09/23/social-wars/" rel="alternate"></link><published>2011-09-23T12:48:00+01:00</published><updated>2011-09-23T12:48:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-09-23:/~alex/blog/2011/09/23/social-wars/</id><summary type="html">&lt;p&gt;Well it seems the next major technology war has kicked off on the web. Google has opened up &lt;a class="reference external" href="http://www.bbc.co.uk/news/technology-14985494"&gt;its beta social service&lt;/a&gt; to all and sundry. At the same time Facebook have had another major face lift and announced their intentions to become a &lt;a class="reference external" href="http://www.bbc.co.uk/news/technology-15028920"&gt;content hub&lt;/a&gt; for the Internet.&lt;/p&gt;
&lt;p&gt;For …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Well it seems the next major technology war has kicked off on the web. Google has opened up &lt;a class="reference external" href="http://www.bbc.co.uk/news/technology-14985494"&gt;its beta social service&lt;/a&gt; to all and sundry. At the same time Facebook have had another major face lift and announced their intentions to become a &lt;a class="reference external" href="http://www.bbc.co.uk/news/technology-15028920"&gt;content hub&lt;/a&gt; for the Internet.&lt;/p&gt;
&lt;p&gt;For me Facebook's latest move is eerily familiar of the early days of the web when everyone was vying to be the default &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Web_portal"&gt;web portal&lt;/a&gt; in the browser. It didn't work back then and companies like Yahoo have never really recovered from failing in the land grab. Back then everyone underestimated the demand for search that just worked and when Google offered something that broadly gave you relevant results the curated model of the web died.&lt;/p&gt;
&lt;p&gt;However Facebook have a massive advantage now having captured 750m users who visit their site on a regular basis. They didn't come to Facebook to find cool places on the internet but to interact with their friends. Facebook didn't invent social networking but they certainly demonstrated that executed properly it was something that lots of people wanted. So far people have been very relaxed about Facebook's access to all that valuable social information and its use in advertising. Frankly any company that launches any sort of consumer product these days has to have some sort of strategy about how they will interact with Facebook.&lt;/p&gt;
&lt;p&gt;Google have know that &amp;quot;social&amp;quot; is going to be a big thing for some time now. They have had several attempts to capture a segment of the market and &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Google%2B"&gt;Google+&lt;/a&gt; is their most serious contender to the space so far. Their reasons for running the service are much like Facebook's although their principle advantage is not having to worry about how to monetise the service yet. Google's history has very much been developing ideas and seeing if they become popular before working out how to monetise it. Meanwhile it's a dangerous time for Facebook as they move towards an &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Initial_public_offering"&gt;IPO&lt;/a&gt; where their long-term investors will be looking to cash-out on their investment. If Facebook start hemorrhaging users to alternatives its market value will literally disappear before the investors eyes. In the web-based world where a competitor is literally a click away the last thing they want to do is repeat the experience of &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Myspace"&gt;MySpace&lt;/a&gt;. This would be especially ironic as Facebook was one of the major reasons MySpace went the way it did.&lt;/p&gt;
&lt;p&gt;Who will ultimately &amp;quot;win&amp;quot; is an exercise in futurology that is a futile as predicting anything related to the fast changing world of the internet. I personally can't wait to move away from Facebook and to a service that gives me more control over my data. For now that is &lt;a class="reference external" href="https://plus.google.com/110732415405459842150/about"&gt;Google+&lt;/a&gt; but it's by no means certain that's where it will stay. However one thing I'm sure of is the process of &lt;a class="reference external" href="http://www.dataliberation.org/"&gt;taking my data from Google&lt;/a&gt; and moving somewhere else will be a lot easier than the exercise has been from Facebook. Coincidentally it's probably the main reason why I'll be staying with Google for the time-being.&lt;/p&gt;
&lt;p&gt;What do you think of these latest moves? Do you care who &amp;quot;wins&amp;quot; or what the services turn into? Or is the age of social networking the latest in a long line of internet fads that has already peaked?&lt;/p&gt;
</content><category term="geek"></category><category term="facebook"></category><category term="google"></category><category term="plus"></category><category term="social networking"></category></entry><entry><title>org-mode and clocking in</title><link href="https://www.bennee.com/~alex/blog/2011/09/20/org-mode-and-clocking-in/" rel="alternate"></link><published>2011-09-20T17:06:00+01:00</published><updated>2011-09-20T17:06:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-09-20:/~alex/blog/2011/09/20/org-mode-and-clocking-in/</id><summary type="html">&lt;p&gt;I've recently started using &lt;a class="reference external" href="http://orgmode.org/"&gt;org-mode&lt;/a&gt;'s time tracking to keep track of what I spend my time doing at work. This was in response to being asked by one of my managers what I spend my time doing and basically being forced to guess.&lt;/p&gt;
&lt;p&gt;Setting up a clock page is …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've recently started using &lt;a class="reference external" href="http://orgmode.org/"&gt;org-mode&lt;/a&gt;'s time tracking to keep track of what I spend my time doing at work. This was in response to being asked by one of my managers what I spend my time doing and basically being forced to guess.&lt;/p&gt;
&lt;p&gt;Setting up a clock page is fairly simple. It's then just a case of C-c C-x C-i and C-c C-x C-o on the appropriate sub tasks. Dynamic blocks can then be added to your org-document to generate &lt;a class="reference external" href="http://orgmode.org/manual/The-clock-table.html#The-clock-table"&gt;weekly, monthly or annual reports&lt;/a&gt; based on the clock lines in the document.&lt;/p&gt;
&lt;p&gt;So far the results have been illuminating and certainly shows how optimistic I can be in predicting how much time I spend doing my core job hacking on the code. However one thing that is captured but hard to summarise is interruption cost. I've taken to switching task every-time I'm interrupted in person or by phone call (I'm not counting IM/IRC as it's less disruptive). I can eyeball the raw data and see that some weeks are exceptionally bad for task switching. However what would useful is a break-down of mean and median clock lengths against each task to give some sort of indication of how much straight line hacking I've gotten done. I have a feeling the :formula and :formatter options could be used for this but I've been struggling to find any example. Does anyone do a similar analysis with their org-mode clock data?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATED&lt;/strong&gt;: fixed keystrokes.&lt;/p&gt;
</content><category term="geek"></category><category term="clocks"></category><category term="emacs"></category><category term="org-mode"></category><category term="time"></category></entry><entry><title>Weekend Rugby</title><link href="https://www.bennee.com/~alex/blog/2011/09/19/weekend-rugby/" rel="alternate"></link><published>2011-09-19T13:14:00+01:00</published><updated>2011-09-19T13:14:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-09-19:/~alex/blog/2011/09/19/weekend-rugby/</id><summary type="html">&lt;p&gt;While last weekend involved a hilarious last minute rush to get a proxied ITV player working while in Paris this weekends England game just involved getting up at 6.50 on a Sunday morning. As some have pointed out I am not yet a Dad so this early awakening on …&lt;/p&gt;</summary><content type="html">&lt;p&gt;While last weekend involved a hilarious last minute rush to get a proxied ITV player working while in Paris this weekends England game just involved getting up at 6.50 on a Sunday morning. As some have pointed out I am not yet a Dad so this early awakening on Sunday is an alien concept to me (although oddly I tend to wake up naturally early on the weekends compared to weekdays).&lt;/p&gt;
&lt;p&gt;The game was very exciting from the start and Georgia's ability to maintain such a fast and aggressive pace for the whole game was pretty impressive. Although England got an early try and awful lot of the first half had me very worried about their discipline, especially with a sin-binning right on the cusp of half-time. The second half was a lot better and I was glad to see that once they got their discipline under control there was some very good flowing rugby and yielded a lot of tries for England. However Georgia kept challenging to the end so there was little let-up in the pressure.&lt;/p&gt;
&lt;p&gt;It's been said that the English rugby team are slow starters who's game improves over the tournament. I have to hope this is the case as once we are out of the groups the games are going to get a lot tougher.&lt;/p&gt;
</content><category term="general"></category><category term="rugby"></category><category term="rwc2011"></category></entry><entry><title>Ministry of Nanny</title><link href="https://www.bennee.com/~alex/blog/2011/09/13/ministry-of-nanny/" rel="alternate"></link><published>2011-09-13T23:36:00+01:00</published><updated>2011-09-13T23:36:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-09-13:/~alex/blog/2011/09/13/ministry-of-nanny/</id><summary type="html">&lt;p&gt;We had our third and final Parent Craft lesson tonight which covered everything from 3rd stage labour to breast feeding and bathing. Most of it was useful stuff and it was nice to be able to ask some questions of the trained midwives. However the section on breast-feeding could do …&lt;/p&gt;</summary><content type="html">&lt;p&gt;We had our third and final Parent Craft lesson tonight which covered everything from 3rd stage labour to breast feeding and bathing. Most of it was useful stuff and it was nice to be able to ask some questions of the trained midwives. However the section on breast-feeding could do with some work. After asking the class how many people intended to breast-feed (answer: everyone raised hands) they still felt the need to go through the regulation list of all the plus points.&lt;/p&gt;
&lt;p&gt;I quite happily accept all the medical evidence that's out there about the benefits of breast-milk over formula. It was also useful to be fore-warned about potential &lt;em&gt;nipple-confusion&lt;/em&gt; if introducing expressed bottles too early. No doubt &lt;a class="reference external" href="http://en.wikipedia.org/wiki/National_Institute_of_Clinical_Excellence"&gt;NICE&lt;/a&gt; has excellent cost-benefit analyses showing how much money can be saved in the long run if 1% more mothers breast-feed their babies.&lt;/p&gt;
&lt;p&gt;However I can understand why some people might feel bullied into breast feeding when presented with such a forceful party line. I can only imagine it also raises the stress levels on mothers if feeding isn't going so well or they stop for some reason. Given that the whole room was already planning on breast-feeding I did think it would have been more useful to launch straight into the practicalities of feeding than continuing to brow-beat the room with the &amp;quot;breast is best&amp;quot; dictate.&lt;/p&gt;
</content><category term="general"></category><category term="babies"></category><category term="breasts"></category><category term="feeding"></category><category term="parentcraft"></category></entry><entry><title>We'll always have Paris</title><link href="https://www.bennee.com/~alex/blog/2011/09/13/well-always-have-paris/" rel="alternate"></link><published>2011-09-13T13:06:00+01:00</published><updated>2011-09-13T13:06:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-09-13:/~alex/blog/2011/09/13/well-always-have-paris/</id><summary type="html">&lt;p&gt;We spent a rather spiffy weekend in Paris on the occasion of Fliss' Mum's birthday. We were a little out of the centre but in a rather plush penthouse flat kitted out with a full projector based home cinema system as well as a hot tub and roof garden wet-room …&lt;/p&gt;</summary><content type="html">&lt;p&gt;We spent a rather spiffy weekend in Paris on the occasion of Fliss' Mum's birthday. We were a little out of the centre but in a rather plush penthouse flat kitted out with a full projector based home cinema system as well as a hot tub and roof garden wet-room. I posted a video of the set-up on &lt;a class="reference external" href="https://plus.google.com/110732415405459842150/posts/G8piZbtfnGB"&gt;my Google Plus&lt;/a&gt; account for the curious.&lt;/p&gt;
&lt;p&gt;We didn't really spend that much time straying from the local base but spent a fair amount of time with the family. It was a lovely long weekend and we are both pretty relaxed on our return. I'm hoping it takes a while to wear off.&lt;/p&gt;
&lt;p&gt;In the meantime preparation for B-Day continues. We are now enrolled in the state supplied [STRIKEOUT:indoctrination]education program known as Parent Craft. So far most of the information has been about what to expect on delivery day so I'm still waiting on the section on keeping them alive and raising responsible well-adjusted kids. I suspect I might be expecting a little too much from them.&lt;/p&gt;
</content><category term="general"></category><category term="babies"></category><category term="parenting"></category><category term="paris"></category></entry><entry><title>Poking unexplained holes in reality, for science!</title><link href="https://www.bennee.com/~alex/blog/2011/09/05/poking-unexplained-holes-in-reality-for-science/" rel="alternate"></link><published>2011-09-05T10:01:00+01:00</published><updated>2011-09-05T10:01:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-09-05:/~alex/blog/2011/09/05/poking-unexplained-holes-in-reality-for-science/</id><summary type="html">&lt;p&gt;[caption id=&amp;quot;attachment_2385&amp;quot; align=&amp;quot;alignright&amp;quot; width=&amp;quot;112&amp;quot; caption=&amp;quot;What does this do?&amp;quot;]&lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2011/09/05/poking-unexplained-holes-in-reality-for-science/302871_10150780146805315_735315314_20612601_8122858_n/"&gt;Picture of Lord Townsend investigating something for Science&lt;/a&gt;[/caption]&lt;/p&gt;
&lt;p&gt;We had a slightly extended weekend as we headed up North to visit friends in Manchester before heading over to the Yorkshire Hippie enclave of Hebden Bridge for &lt;a class="reference external" href="http://www.victorianalrp.co.uk/"&gt;Victoriana …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;[caption id=&amp;quot;attachment_2385&amp;quot; align=&amp;quot;alignright&amp;quot; width=&amp;quot;112&amp;quot; caption=&amp;quot;What does this do?&amp;quot;]&lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2011/09/05/poking-unexplained-holes-in-reality-for-science/302871_10150780146805315_735315314_20612601_8122858_n/"&gt;Picture of Lord Townsend investigating something for Science&lt;/a&gt;[/caption]&lt;/p&gt;
&lt;p&gt;We had a slightly extended weekend as we headed up North to visit friends in Manchester before heading over to the Yorkshire Hippie enclave of Hebden Bridge for &lt;a class="reference external" href="http://www.victorianalrp.co.uk/"&gt;Victoriana&lt;/a&gt;. This was going to be our last game before our first child arrives.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Victoriana&lt;/strong&gt; is a steam-punk style alternate history &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Live_action_role-playing_game"&gt;LARP&lt;/a&gt; game based loosely around Victorian era Britain. The brainchild of Mikey and his team of writers it's an idea that's kicking around for some time and we are happy it's been finally realised. The system is fairly lightweight with a combat system which is mainly based around cosmetically modified &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Nerf"&gt;NERF&lt;/a&gt; guns and the occasional traditional LARP sword. However the combat is a fairly small part of the overall experience and certainly not a required skill to enjoy the game. Fliss for example was almost entirely involved in the trials of high society including scandal and match-making of eligible ladies with the appropriate bachelors. My game was almost all concerned with poking things in the cause of science. The science system is fairly free-form where the results are driven by the almost omnipresent &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Jeeves"&gt;Jeeves&lt;/a&gt; referees who otherwise blend in with the In Character ambiance of the event. It took a little while to get the hang of it but I tried a few experiments of Friday and together with the rest of the scientists we continued to poke at the strange anomaly with reckless abandon as we formulated our theories. By Sunday we were constructing steam-punk style contraptions with handy copper coloured tape and had a better feeling for the interaction between scientists and engineers. There were other areas of the game I didn't really see including occultists and of course the working classes who I only occasionally bumped into .&lt;/p&gt;
&lt;p&gt;As it was our anniversary weekend we were off site for most of Saturday evening but nevertheless we enjoyed the game immensely. For a game that was 24 hour time in there didn't seem to be any slack areas where we were just twiddling our thumbs waiting for things to happen. The standard of kit and costume was fantastic including a marvellous automaton by the name of &amp;quot;Number 47&amp;quot; who was being played magnificently by a first time LARPer. Everyone I spoke to after time out seemed very happy with the way the event had turned out. Mikey has said he's learnt a lot from the experience and I'm sure there will be some tweaks to the system and organisation for the next event. However a jolly good time was had by all, including the two of us.&lt;/p&gt;
</content><category term="geek"></category><category term="larp"></category><category term="victoriana"></category></entry><entry><title>7 Arena Fights, 1 Quest and a fairly late night...</title><link href="https://www.bennee.com/~alex/blog/2011/08/15/7-arena-fights-1-quest-and-a-fairly-late-night/" rel="alternate"></link><published>2011-08-15T14:32:00+01:00</published><updated>2011-08-15T14:32:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-08-15:/~alex/blog/2011/08/15/7-arena-fights-1-quest-and-a-fairly-late-night/</id><summary type="html">&lt;p&gt;..have left my a little weary this morning. I spent this weekend at my first full length &lt;a class="reference external" href="http://www.profounddecisions.co.uk/odyssey?2"&gt;Odyssey&lt;/a&gt; event which gave me a fuller impression of the world than &lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2010/08/16/odyssey-in-60-seconds/"&gt;last years quick visit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The arena is still my favourite part of the experience. Certainly as I don't get much LARP …&lt;/p&gt;</summary><content type="html">&lt;p&gt;..have left my a little weary this morning. I spent this weekend at my first full length &lt;a class="reference external" href="http://www.profounddecisions.co.uk/odyssey?2"&gt;Odyssey&lt;/a&gt; event which gave me a fuller impression of the world than &lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2010/08/16/odyssey-in-60-seconds/"&gt;last years quick visit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The arena is still my favourite part of the experience. Certainly as I don't get much LARP combat these days it's nice to get several guaranteed mass-battles as day. I was still playing my Roman archer and had a very good day on Saturday notching up some rather nice shots which I was complemented on later in the day. I'm hoping those battles were videoed by somebody because it would be nice to see what they looked like from the bystanders point of view.&lt;/p&gt;
&lt;p&gt;Although I went to bed before midnight on the Friday I made an extra effort to wonder about on Saturday night and caught up with the NE brigade and their Greek faction. It was lovely to see them as well as lots of interesting in-play discussion. Having someone mention the presence of the &amp;quot;Roman spy&amp;quot; every few minutes didn't seem to stop the Greeks talking to me.&lt;/p&gt;
&lt;p&gt;I got peripherally involved with the &amp;quot;Philosopher&amp;quot; game on the Sunday while indulging in a little &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Cryptanalysis"&gt;cryptanalysis&lt;/a&gt; to verify the approach to the solution of one of the puzzles. If I tire of the fighting I might try out philosophising for my next character.&lt;/p&gt;
&lt;p&gt;All in all a fantastically fun weekend. I look forward to returning to it when I'm able to LARP again.&lt;/p&gt;
</content><category term="geek, general"></category><category term="larp"></category><category term="odyssey"></category><category term="weekend"></category></entry><entry><title>Flash Looting</title><link href="https://www.bennee.com/~alex/blog/2011/08/10/flash-looting/" rel="alternate"></link><published>2011-08-10T06:34:00+01:00</published><updated>2011-08-10T06:34:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-08-10:/~alex/blog/2011/08/10/flash-looting/</id><summary type="html">&lt;p&gt;As the sun rises on a new day and businesses across the country count the cost of the nights violence we awake to a new phenomena. The technology and social networking that brought us the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Flash_mob"&gt;Flash Mob&lt;/a&gt; have now brought us the Flash Loot.&lt;/p&gt;
&lt;p&gt;When you start hearing some of …&lt;/p&gt;</summary><content type="html">&lt;p&gt;As the sun rises on a new day and businesses across the country count the cost of the nights violence we awake to a new phenomena. The technology and social networking that brought us the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Flash_mob"&gt;Flash Mob&lt;/a&gt; have now brought us the Flash Loot.&lt;/p&gt;
&lt;p&gt;When you start hearing some of those involved talk about their perceived entitlement to the mobile phones and flat screen TVs it makes you wonder if 18 months of government austerity is really the trigger for these &amp;quot;riots&amp;quot;. Wikipedia defines a &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Riot"&gt;riot&lt;/a&gt; as a &lt;em&gt;&amp;quot;form of civil disorder characterized often by disorganized groups lashing out in a sudden and intense rash of violence against authority, property or people&amp;quot;&lt;/em&gt;. That doesn't quite gel with the image of looters &lt;a class="reference external" href="http://catchalooter.tumblr.com/page/2"&gt;renting vans&lt;/a&gt; so they can be more efficient in loading up their swag. They seem to have learnt from the anti-&lt;a class="reference external" href="http://en.wikipedia.org/wiki/Kettling"&gt;kettling&lt;/a&gt; tactics of legitimate protesters - co-ordinate when and where to meet, sweep in en-masses and leave before the Police can respond in force. Only instead of making a political point or staging a demo at some perceived enemy of the people it's an excuse to loot shops of whatever they hold.&lt;/p&gt;
&lt;p&gt;I find it tricky to keep my inner right-wing instincts under check. It's disturbing when you find yourself starting to agree with the likes of the Mail and bemoaning the sorry state of the UK today. While social divisions and inequality I'm sure have played their parts in forming a generation of youths with the attitudes that can justify these actions to themselves I find myself wondering if it's a problem that can be solved with a few pounds on benefits here and there. These people aren't rioting because they are hungry. They obviously feel so disconnected from society as a whole they don't see or care about the damage they are doing the communities that they love in.&lt;/p&gt;
&lt;p&gt;You have to keep a sense of perspective about these things. It is a minority of people involved. Most of our fellow citizens would be more inclined to &lt;a class="reference external" href="http://www.flickr.com/photos/pixel-eight/6024429000/"&gt;make a cup of tea for the overworked police officers&lt;/a&gt; or &lt;a class="reference external" href="http://www.riotcleanup.co.uk/Riot_Clean_Up.php"&gt;coordinate the clean-up with the real community&lt;/a&gt;. Social media is a tool which can be &lt;a class="reference external" href="http://twitter.com/#!/search/riotcleanup"&gt;used for good&lt;/a&gt; as well as the more headline grabbing bad. This country isn't really going to hell in a hand-basket despite the actions of a small number of disaffected youth. I hope the country remembers that over the next few days and weeks.&lt;/p&gt;
</content><category term="general"></category><category term="looting"></category><category term="politics"></category><category term="riots"></category></entry><entry><title>Fliss' 32 Inch TV</title><link href="https://www.bennee.com/~alex/blog/2011/08/08/fliss-32-inch-tv/" rel="alternate"></link><published>2011-08-08T14:56:00+01:00</published><updated>2011-08-08T14:56:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-08-08:/~alex/blog/2011/08/08/fliss-32-inch-tv/</id><summary type="html">&lt;p&gt;The weekend was both incredibly efficient and lazy in equal measures. We headed into town bright and early at 9:00 in a bid to miss the rather nasty traffic Cambridge inflicts on it's driving population. I would have cycled were it not I was picking up our &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Smart_TV"&gt;new Smart …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;The weekend was both incredibly efficient and lazy in equal measures. We headed into town bright and early at 9:00 in a bid to miss the rather nasty traffic Cambridge inflicts on it's driving population. I would have cycled were it not I was picking up our &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Smart_TV"&gt;new Smart TV&lt;/a&gt; for the library. It's an LG LV550T which replaces the ageing CRT with something a lot slimmer and fits nicely on the new shelves in the library. After some faffing with connectors and convincing it that it really was connected to the internet first impressions are pretty good. It's full 1080p with a built in HD tuner so we can finally receive BBC HD. Comparing the two BBC One channels you can certainly see the difference the high definition brings. It's still not enough to warrant upgrading my main TV though which I expect to keep until it finally dies.&lt;/p&gt;
&lt;p&gt;The Smart TV stuff is pretty impressive. Aside from having built-in iPlayer (and ITV/4oD) it also offers a slew of &amp;quot;apps&amp;quot; including the ubiquitous YouTube. As a bonus it's &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance"&gt;DNLA&lt;/a&gt; enabled so it can stream stuff directly from our media server. Sadly it doesn't seem to be able to cope with all the audio codecs the PS3 can. About the only wrinkle was convincing it it was on the 'net. Despite having been given an IP address it was convinced it could access the &amp;quot;Gateway&amp;quot;. It was still able to access the media server and download a firmware update through the ether so I suspected it was just some needless self-test the wizard went through. Once I plugged it in via a spare broadband router I had lying round it worked fine. I suspect it was trying to do something &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Universal_Plug_and_Play"&gt;UPnP&lt;/a&gt;ish to prove it was on a home network.&lt;/p&gt;
</content><category term="geek"></category><category term="internet"></category><category term="iplayer"></category><category term="tv"></category></entry><entry><title>Bright Lights, Big City</title><link href="https://www.bennee.com/~alex/blog/2011/08/05/bright-lights-big-city-2/" rel="alternate"></link><published>2011-08-05T18:29:00+01:00</published><updated>2011-08-05T18:29:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-08-05:/~alex/blog/2011/08/05/bright-lights-big-city-2/</id><summary type="html">&lt;p&gt;I took advantage of my proximity to the big city 45 minutes away on the train yesterday. I joined Rich and Al and the growing number of Northern refugees at the &lt;a class="reference external" href="http://gbbf.camra.org.uk/home"&gt;Great British Beer Festival&lt;/a&gt; at Earls Court. While I'm afforded free entry to most beer festivals courtesy of my …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I took advantage of my proximity to the big city 45 minutes away on the train yesterday. I joined Rich and Al and the growing number of Northern refugees at the &lt;a class="reference external" href="http://gbbf.camra.org.uk/home"&gt;Great British Beer Festival&lt;/a&gt; at Earls Court. While I'm afforded free entry to most beer festivals courtesy of my CAMRA membership I only got a discount at this one. Having said that the £8 entry does grant you access to a massive beer hall with pretty much the largest range of beers I've seen for some time. It seems the money had gone somewhere as it was the first festival I've been to that has gone to the trouble of running lines and fitting proper hand-pulls to the normal festival beers.&lt;/p&gt;
&lt;p&gt;Despite the best efforts of Lee to derail my sensible drinking strategy with the last pint of the evening I came through the whole experience is reasonably good nick. It was great to catch up with a whole bunch of people I hadn't seen for some time. I still hate travelling around London but I guess it's not so bad from time to time.&lt;/p&gt;
</content><category term="general"></category><category term="beer"></category><category term="london"></category></entry><entry><title>Perils of bleeding edge</title><link href="https://www.bennee.com/~alex/blog/2011/07/27/perils-of-bleeding-edge/" rel="alternate"></link><published>2011-07-27T16:55:00+01:00</published><updated>2011-07-27T16:55:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-07-27:/~alex/blog/2011/07/27/perils-of-bleeding-edge/</id><summary type="html">&lt;p&gt;I've taken to running the latest &lt;em&gt;emacs&lt;/em&gt; from a source tree install. It works well enough and additional modes I use have been liberally ${VC} fetched into my &lt;em&gt;.emacs.d&lt;/em&gt;. However there are still a number of packages I'd like to use from Debian's emacs version agnostic site-lisp directories. I …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've taken to running the latest &lt;em&gt;emacs&lt;/em&gt; from a source tree install. It works well enough and additional modes I use have been liberally ${VC} fetched into my &lt;em&gt;.emacs.d&lt;/em&gt;. However there are still a number of packages I'd like to use from Debian's emacs version agnostic site-lisp directories. I came up with this:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
 ;; Add site-lisp to search path
;
; This is a work-around function for when I'm running bleeding
; emacs from the source tree but still want Debian's developer
; tools. I'd caution about having too many extra packages about that
; have been merged into the source tree (cedet etc) lest it get
; confused.
(defun load-debian-site-lisp()
&amp;quot;Attempt to load Debian's site-lisp if it's there&amp;quot;
  (interactive)
  (when (and (not (member &amp;quot;/usr/share/emacs/site-lisp&amp;quot; load-path))
             (fboundp 'normal-top-level-add-subdirs-to-load-path))
          (let* ((default-directory &amp;quot;/usr/share/emacs/site-lisp&amp;quot;))
      (normal-top-level-add-subdirs-to-load-path))))

(load-debian-site-lisp)
&lt;/pre&gt;
&lt;p&gt;Which seems to work well enough to give me my &lt;em&gt;debian-changelog-mode&lt;/em&gt; back. However it's still not seamless as I have to manually &lt;em&gt;(require 'debian-changelog-mode)&lt;/em&gt; before loading a changelog which forces the issue with local variables. I suspect I'll have to replicate the boilerplate that &lt;em&gt;/usr/share/emacs/site-lisp/debian-startup.el&lt;/em&gt; does but I can't use because it doesn't degrade gracefully if no &lt;em&gt;debian-emacs-flavour&lt;/em&gt; is defined. Suggestions for making this behaviour neater would be useful....&lt;/p&gt;
</content><category term="geek"></category><category term="elisp"></category><category term="emacs"></category></entry><entry><title>Ponies and other requests</title><link href="https://www.bennee.com/~alex/blog/2011/07/21/ponies-and-other-requests/" rel="alternate"></link><published>2011-07-21T13:30:00+01:00</published><updated>2011-07-21T13:30:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-07-21:/~alex/blog/2011/07/21/ponies-and-other-requests/</id><summary type="html">&lt;p&gt;So Google Plus is not even in beta, it's still a limited trail but they are soliciting feedback. Following on from &lt;a class="reference external" href="http://richd.me/2011/07/my-beef-with-google/"&gt;Rich's&lt;/a&gt; suggestions here are some things I would like to see Google+ do.&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Allow nesting of Circles&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Circles are great. They are a pretty intuitive way of arranging your …&lt;/p&gt;</summary><content type="html">&lt;p&gt;So Google Plus is not even in beta, it's still a limited trail but they are soliciting feedback. Following on from &lt;a class="reference external" href="http://richd.me/2011/07/my-beef-with-google/"&gt;Rich's&lt;/a&gt; suggestions here are some things I would like to see Google+ do.&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Allow nesting of Circles&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Circles are great. They are a pretty intuitive way of arranging your friends into groups. It's certainly way easier than Facebook's rather clunky friend lists interface. However I have a lot of people in multiple circles but it's a little inconsistent and it's hard to check people are in the right place. To illustrate here is a subset of circles I've defined:&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* Fellow Geeks&lt;/div&gt;
&lt;div class="line"&gt;* Cambridge Geeks&lt;/div&gt;
&lt;div class="line"&gt;* Googlers&lt;/div&gt;
&lt;div class="line"&gt;* Transitive Alumni&lt;/div&gt;
&lt;div class="line"&gt;* #blue&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Really the last four circles are all sub-sets of fellow geeks but sometimes it makes sense only to post to a sub-set. For example the Cambridge Geeks are those that are more likely to make a Geek Beer shout out. The Transitive crew are a special set of geeks that would appreciate some really obscure posting that might be irrelevant to the wider Geek community.&lt;/p&gt;
&lt;p&gt;What I really want to do is declare Fellow Geeks as a super-set of a the other circles. It's not going to be a one to many relationship either. Cambridge Geeks also should belong to the Local People group because I don't spend all my time socialising with people just like me ;-)&lt;/p&gt;
&lt;ol class="arabic simple" start="2"&gt;
&lt;li&gt;Support Huddle in the browser&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I like the concept of Huddle which is a group based messaging system in the mobile version of Google+. However currently it seems the only place to access is on a mobile device and that is currently Android only. To make it useful you should be able to access the Huddle from the browser as well.&lt;/p&gt;
&lt;ol class="arabic simple" start="3"&gt;
&lt;li&gt;Allow rolling up of comments&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is especially a problem with some of the higher visibility users that I follow. They can often have hundreds of comments attached to a post and there doesn't seem to be any way of hiding the comments. All you can do it &amp;quot;Mute&amp;quot; the whole post. Sometime G+ does hide &amp;quot;older comments&amp;quot; but the only thing you can do with them is expand them.&lt;/p&gt;
&lt;p&gt;So like a good trail user I'm also raising these issues via the feedback option. I'm still enjoying the Google Plus experience and once I can post from Gwibber I'll be a lot happier. So what niggles have you found so far? Have you reported them?&lt;/p&gt;
</content><category term="geek"></category><category term="feedback"></category><category term="google"></category><category term="plus"></category><category term="social"></category></entry><entry><title>Plus One</title><link href="https://www.bennee.com/~alex/blog/2011/07/17/plus-one/" rel="alternate"></link><published>2011-07-17T10:20:00+01:00</published><updated>2011-07-17T10:20:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-07-17:/~alex/blog/2011/07/17/plus-one/</id><summary type="html">&lt;p&gt;Well I've been playing with &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Google_Plus"&gt;Google+&lt;/a&gt; for a week and a bit now so I thought I would add some punditry to the swirling ether of the 'net. For a product that hasn't even earned the famed Google Beta tag it's already been rolled out to around 10 million people …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Well I've been playing with &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Google_Plus"&gt;Google+&lt;/a&gt; for a week and a bit now so I thought I would add some punditry to the swirling ether of the 'net. For a product that hasn't even earned the famed Google Beta tag it's already been rolled out to around 10 million people. A good percentage of my social graph have managed to find their way onto the network. Invites now seem to be permanently open so do let me know if you want one.&lt;/p&gt;
&lt;p&gt;So the first thing that struck me about G+ was the circle implementation. It's not surprising that it's such a fundamental part of the experience. I recall seeing a presentation by a Googler some time ago where they discussed the types of relationships people have, the sort of things people share and with whom. While Facebook does allow you to set up friends lists and restrict posts to certain groups the G+ setup is a lot more intuitive and built into every aspect of the service. For example I'm fairly careful about posting my location on-line. Even though I use services like Latitude most people are restricted to City level information unless it's likely to be useful for them to know where I am (for example on a stag weekend). While not many people use Latitude being able to &amp;quot;check-in&amp;quot; to a location that may be relevant to a subset of people is quite a nice ability.&lt;/p&gt;
&lt;p&gt;There are a couple of gripes about the circle implementation. The first is duplicates. I have a number of people duplicated because they were originally dragged from my Gmail contacts but have then subsequently joined. It would be nice to have an easy way to group them together and have Google Do The Right Thing (tm).&lt;/p&gt;
&lt;p&gt;The second is the default circle screen needs a little work for small screen setups like my netbook. Having created quite a number of circles the screen real estate gets quite tight when trying to add more people to them.&lt;/p&gt;
&lt;p&gt;Other nice features include the group video chat known as &amp;quot;Hangouts&amp;quot;. It works out of the box on Linux although it does require a proprietary plugin to work. I haven't had more than a cursory play with it so far but it certainly seems slick enough from what I've seen. It's also nice to have an alternative to Skype who's Linux support could disappear any day now Microsoft have taken it over.&lt;/p&gt;
&lt;p&gt;The mobile app offers the &amp;quot;Huddle&amp;quot; which is a simple group chat facility. I can see this probably being of most use when catching up with a group of people on some sort of shared activity like a pub crawl.&lt;/p&gt;
&lt;p&gt;The photo facility is fairly slick although I don't think it's quite got the edge on Facebook's auto-tagging feature. It remains to be seen how else they will pimp it up. Certainly it's nice to be able to upload everything from Shotwell as it basically re-uses the Picassa infrastructure. It sure beats fighting with the basic upload facility Facebook offers.&lt;/p&gt;
&lt;p&gt;The one major omission and probably biggest reason I use Facebook is for event management. For all the problems associated with inviting people only in the walled garden Facebook's event creation/invite system is pretty slick. I suspect Google are planning some sort of event/calender integration. I hope when they do they make it easy to add emails so people don't have to be in G+ to receive invites.&lt;/p&gt;
&lt;p&gt;So is it time to close down my Facebook account? Well for the time being probably not. Facebook does have the incumbents advantage given almost everyone who wants a social networking account will have one. However I'll certainly be using G+ in preference for sharing photos and private status updates. Google's &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Google_Data_Liberation_Front"&gt;Data Liberation Front&lt;/a&gt; give me more confidence that &lt;em&gt;my&lt;/em&gt; data won't be kept away from me. It will also be interesting to see what APIs Google release for the platform. Perhaps the biggest problem with Facebook apps is the privacy implications of sharing your data with a third party. It will be interesting seeing how they balance the privacy-centric nature of the G+ ethos with the ability to do cool stuff in the social sphere.&lt;/p&gt;
</content><category term="geek"></category><category term="facebook"></category><category term="google"></category><category term="privacy"></category><category term="social"></category></entry><entry><title>Move along, nothing to see here.</title><link href="https://www.bennee.com/~alex/blog/2011/07/12/move-along-nothing-to-see-here/" rel="alternate"></link><published>2011-07-12T11:38:00+01:00</published><updated>2011-07-12T11:38:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-07-12:/~alex/blog/2011/07/12/move-along-nothing-to-see-here/</id><summary type="html">&lt;p&gt;It's been a while since I've last posted. I make a conscious effort not to post general household news in favour of things that stimulate debate and comments. I hope that my writings end up being interesting to someone even if it is only me reviewing these posts in the …&lt;/p&gt;</summary><content type="html">&lt;p&gt;It's been a while since I've last posted. I make a conscious effort not to post general household news in favour of things that stimulate debate and comments. I hope that my writings end up being interesting to someone even if it is only me reviewing these posts in the future. However the gap between posts can become intimidating so I'm minded to tap the microphone and whisper &amp;quot;is this thing on?&amp;quot;.&lt;/p&gt;
&lt;p&gt;Like a large chunk of the country I have been watching the unfolding drama of the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/News_of_the_World_phone_hacking_affair"&gt;News of the Screws dirty demise&lt;/a&gt;. However things have been moving so fast anything I posted would probably be out of date by the time I hit publish. It's a feeling the newspapers have been having for years.&lt;/p&gt;
&lt;p&gt;It's hard not to notice the glee that &lt;a class="reference external" href="http://en.wikipedia.org/wiki/News_of_the_World_phone_hacking_affair"&gt;News Corps&lt;/a&gt; many and varied opponents attack this story. I'm not totally unhappy about it, indeed when I want a smile I just have to recall the how much money they burnt with &lt;a class="reference external" href="http://en.wikipedia.org/wiki/MySpace"&gt;MySpace&lt;/a&gt;. However predictions of the death of NI as a leading power behind the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Fourth_Estate"&gt;Fourth Estate&lt;/a&gt; are probably misplaced. The axing of NoW and &lt;a class="reference external" href="http://www.bbc.co.uk/news/business-14112465"&gt;withdrawal of undertakings with respect to Sky News&lt;/a&gt; may have been dramatic events but I suspect the story still has some to go. In fact Murdoch may well divest himself of more of his print empire if it serves his longer term aims. After all the papers are dieing slowly anyway, this could be just the excuse he needs to divest himself of the liabilities.&lt;/p&gt;
&lt;p&gt;Still it gives the journalists something to talk about over the summer.&lt;/p&gt;
</content><category term="general"></category><category term="murdoch"></category><category term="news"></category><category term="politics"></category><category term="press"></category></entry><entry><title>Pensions</title><link href="https://www.bennee.com/~alex/blog/2011/06/30/pensions/" rel="alternate"></link><published>2011-06-30T11:24:00+01:00</published><updated>2011-06-30T11:24:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-06-30:/~alex/blog/2011/06/30/pensions/</id><summary type="html">&lt;p&gt;A number of public sector unions are &lt;a class="reference external" href="http://www.bbc.co.uk/news/uk-13967580"&gt;striking today over changes to their pension arrangements&lt;/a&gt;. As a result Fliss has gone into London today rather than working from home, hopefully balanced out by a slightly less insane commute. Before she left for her train we listened to &lt;a class="reference external" href="http://news.bbc.co.uk/today/hi/today/newsid_9526000/9526631.stm"&gt;Mark Serwotka debating …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;A number of public sector unions are &lt;a class="reference external" href="http://www.bbc.co.uk/news/uk-13967580"&gt;striking today over changes to their pension arrangements&lt;/a&gt;. As a result Fliss has gone into London today rather than working from home, hopefully balanced out by a slightly less insane commute. Before she left for her train we listened to &lt;a class="reference external" href="http://news.bbc.co.uk/today/hi/today/newsid_9526000/9526631.stm"&gt;Mark Serwotka debating with Francis Maude&lt;/a&gt; on the Today programme. It was interesting listening although most of the debate seemed to be centred around the total cost as a % of GDP (see page 23 of the &lt;a class="reference external" href="http://www.hm-treasury.gov.uk/indreview_johnhutton_pensions.htm"&gt;final Hutton report&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;What didn't get rolled out to Serwotka's credit was the line that public sector workers are having their pensions slashed to pay for the bank bail outs although I've seen this argument being rolled out in many other places.&lt;/p&gt;
&lt;p&gt;Pension reform is as inevitable as death and taxes simply because demographics change as our society moves on. People keep living longer and more are spending a greater proportion of their lifetime economically inactive. I'll still claim the 2/60ths of my final salary pension from Marconi when I eventually retire but since then all my pension arrangements have been contribution based. This means my final pension will be dependant on how much money is in the pot and how long the annuity company thinks I'll live once I finally retire. Although on the face of its not as generous as a final salary scheme it is a easier to calculate the bounds and therefor more sustainable in the long run. The alternative is for some other party to take on the liabilities for people living longer than the pension contributions made by/for them cover. In the case of private sector final salary schemes it was the companies and/or newer members of the schemes. In the public sector the liability eventually rests with the taxpayer. As a result the private sector has pretty much universally moved on from final salary pension schemes. Dealing with the long term sustainability of public sector pensions has been continually deferred until this government decided to finally grasp the political nettle.&lt;/p&gt;
&lt;p&gt;Fundamentally each person has to be responsible for providing for their retirement. This is achieved by paying more money into the pot or getting your employer to do so. If your remuneration (salary+benefits) isn't up to the task then you can always look for an employer who is more willing to pay a premium for your skills.&lt;/p&gt;
&lt;p&gt;I'm not saying that the Union's shouldn't be doing their best to look after their members interests. This can even include striking, although currently it seems a little premature as negotiations are still ongoing. However I suspect public sympathy for the strikers will be somewhat diminished as even after all the disruption and forced holidays workers in the public sector will still have more generous pension arrangements than their private sector compatriots could ever dream of.&lt;/p&gt;
</content><category term="general"></category><category term="pensions"></category><category term="politics"></category><category term="strikes"></category></entry><entry><title>Board Now</title><link href="https://www.bennee.com/~alex/blog/2011/06/28/board-now/" rel="alternate"></link><published>2011-06-28T08:27:00+01:00</published><updated>2011-06-28T08:27:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-06-28:/~alex/blog/2011/06/28/board-now/</id><summary type="html">&lt;p&gt;The weekend surprised me a bit. I was expecting a so-so weekend with thunderstorms. In the end we ended up with a pretty good Saturday and a fantastic Sunday.&lt;/p&gt;
&lt;p&gt;Fliss celebrated her penultimate bit with board games and general merriment. We have acquired a new game, &lt;a class="reference external" href="%20%20%20%20http://www.smirkanddagger.com/hexhex.htm"&gt;Hex Hex&lt;/a&gt; which I …&lt;/p&gt;</summary><content type="html">&lt;p&gt;The weekend surprised me a bit. I was expecting a so-so weekend with thunderstorms. In the end we ended up with a pretty good Saturday and a fantastic Sunday.&lt;/p&gt;
&lt;p&gt;Fliss celebrated her penultimate bit with board games and general merriment. We have acquired a new game, &lt;a class="reference external" href="%20%20%20%20http://www.smirkanddagger.com/hexhex.htm"&gt;Hex Hex&lt;/a&gt; which I have vague memories of having played before. It's a fun game although I suspect the additional rules clause becomes a nightmare if any sort of drinking is involved. There were also some Alice in Wonderland cupcakes decorated by L to accompany our first real BBQ of the year.&lt;/p&gt;
&lt;p&gt;There was one moment when we ran out of ales and a couple of the wives offered to drive to the supermarket and fetch more. The relevant husbands were most surprised as it's not an offer that is regularly (if ever) made at home!&lt;/p&gt;
&lt;p&gt;We finished up the evening watching the hilarious &lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2010/03/17/review-noises-off/"&gt;Noises Off&lt;/a&gt; which I can heartily recommend, especially to anyone who's done any sort of theatre work.&lt;/p&gt;
&lt;p&gt;Fliss' dad left us on Sunday to finish his UK tour before heading back to Oz. It was sad to see him go but at least is Skype in the meantime. We hope to get over to Oz once we have a handle on this &amp;quot;parenting&amp;quot; thing and the ability to travel with small children.&lt;/p&gt;
</content><category term="general"></category><category term="board games"></category><category term="movies"></category><category term="parties"></category></entry><entry><title>Looking back</title><link href="https://www.bennee.com/~alex/blog/2011/06/16/looking-back/" rel="alternate"></link><published>2011-06-16T09:48:00+01:00</published><updated>2011-06-16T09:48:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-06-16:/~alex/blog/2011/06/16/looking-back/</id><summary type="html">&lt;p&gt;Looking back &lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2010/06/14/a-weekend-of-fresh-air-and-beer/"&gt;at last years visit by Jeff and Phil&lt;/a&gt; I can see the June weather was also a little changeable - I'm hoping it will improve for the weekend. Fliss' dad is currently visiting from the land down under so yesterday afternoon we wondered down to the local riverside drinking …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Looking back &lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2010/06/14/a-weekend-of-fresh-air-and-beer/"&gt;at last years visit by Jeff and Phil&lt;/a&gt; I can see the June weather was also a little changeable - I'm hoping it will improve for the weekend. Fliss' dad is currently visiting from the land down under so yesterday afternoon we wondered down to the local riverside drinking establishment to watch the first day of the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Bumps_race"&gt;May bumps&lt;/a&gt;. It may not be the best place to see the action, but it's the best location that serves beer :-)&lt;/p&gt;
&lt;p&gt;I've got the next couple of days off. In theory we were going to be doing a bike pub tour today. However weather and other events seem to be conspiring to derail those plans. Still a few extra days of relaxation do feel particularly warranted even if we don't have to earn those beers with exercise.&lt;/p&gt;
</content><category term="general"></category><category term="beer"></category><category term="bikes"></category><category term="bumps"></category></entry><entry><title>It's all about the package</title><link href="https://www.bennee.com/~alex/blog/2011/06/14/its-all-about-the-package/" rel="alternate"></link><published>2011-06-14T16:57:00+01:00</published><updated>2011-06-14T16:57:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-06-14:/~alex/blog/2011/06/14/its-all-about-the-package/</id><summary type="html">&lt;p&gt;Apologies in advance for this tech heavy post. I was moved to write it as some friends are doing a crash course in learning Linux. Consider this remote teaching for those that are interested.&lt;/p&gt;
&lt;p&gt;Back in the early history of computing software was often built in-situ. Generally programs were distributed …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Apologies in advance for this tech heavy post. I was moved to write it as some friends are doing a crash course in learning Linux. Consider this remote teaching for those that are interested.&lt;/p&gt;
&lt;p&gt;Back in the early history of computing software was often built in-situ. Generally programs were distributed as &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Source_code"&gt;source code&lt;/a&gt; and compiled on the machine that needed it. This neatly solves a lot of problems as generally if it doesn't compile it will because other pre-requisites don't exist on the system. However compiling does have a few disadvantages - including having a development system on your machine as well as having to send everyone a copy of your source code. For the growing market in computer software where the customers never saw the code a new method was needed. Thus was born the idea of binary software distribution.&lt;/p&gt;
&lt;p&gt;Distributing &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Binary_file"&gt;binaries&lt;/a&gt; raises a whole new set of interesting problems. It's very rare an executable exists in a vacuum. Programs generally require the services of libraries and system daemons to which they hand off work. While they all may exist on the machine that the software was built on they may not available on the machine you install to. As a result all sorts of hair pulling problems can arise. Early Unix software was often delivered as a &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Tar_(file_format)"&gt;tarball&lt;/a&gt; and would be wrapped in a bunch of &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Shell_script"&gt;shell scripts&lt;/a&gt;. You would extract the tarball into a sub-directory (usually under /opt - see &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard"&gt;FHS&lt;/a&gt;) and then run a shell script which would spend a considerable amount of effort checking the system and attempting to shim the state of the live system into one that is as close as possible to the system it was compiled on so it could finally run the software. A lot of software is still installed this way and it's not that dissimilar to the approach both Macs and Windows PCs take to installing software.&lt;/p&gt;
&lt;p&gt;However the raison d'être of a modern Linux distribution is distributing software written by other people. The solution to these problems (and many more) is through the use of a &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Package_management_system"&gt;package manager&lt;/a&gt;. As an aspiring sysadmin of a Linux machine it is well worth familiarising yourself with the package manger of your chosen distribution. The package manager is certainly should be the first port of call for finding out what packages files belong to and what other files are associated with a package. While there are many competing systems out there to two main ones are RPM and DEB.&lt;/p&gt;
&lt;p&gt;The &lt;a class="reference external" href="http://en.wikipedia.org/wiki/RPM_Package_Manager"&gt;RPM Package Manager&lt;/a&gt; is was originally developed by Red Hat and is unsurprisingly used by them and the many distributions that used Red Hat as a base. This includes RHEL, SuSE, CentOS, Fedora, and Mandriva. It's sufficiently well known it was even added to the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Linux_Standard_Base"&gt;Linux Standards Base&lt;/a&gt; as the preferred installation method for installing 3rd party software.&lt;/p&gt;
&lt;p&gt;The DEB file format is used by &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Dpkg"&gt;Debian's dpkg&lt;/a&gt; tools. Although Debian is probably more known to old Linux hackers it has a excellent reputation as a truly stable server operating system. While RPM systems where still dealing with &amp;quot;RPM Hell&amp;quot; and having to manually resolve dependencies Debian had the &amp;quot;Advanced Packaging Tool&amp;quot; &lt;em&gt;apt&lt;/em&gt; which makes installing any piece of software a simple one line affair at the command line. While Debian may only have a niche audience it's popular derivative &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Ubuntu_(operating_system)"&gt;Ubuntu&lt;/a&gt; is probably the most popular distribution seen my newcomers to the Linux experience. Thanks to Debian's long history there is probably more software packaged in the DEB file format than any other packaging system.&lt;/p&gt;
&lt;p&gt;In my next package related post I'll go through some of the questions you might ask your package manager and give some real life command line examples.&lt;/p&gt;
</content><category term="geek"></category><category term="deb"></category><category term="packages"></category><category term="rpm"></category><category term="sysadmin"></category><category term="tips"></category></entry><entry><title>Travelling while moving</title><link href="https://www.bennee.com/~alex/blog/2011/06/01/travelling-while-moving/" rel="alternate"></link><published>2011-06-01T12:56:00+01:00</published><updated>2011-06-01T12:56:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-06-01:/~alex/blog/2011/06/01/travelling-while-moving/</id><summary type="html">&lt;p&gt;Last week I went to Fulda in Germany to attend the OpenNMS European User Conference. OpenNMS is an open source network management system which we make fairly heavy use of at work. The conference was an opportunity to catch up on developments in the project and get a sense of …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Last week I went to Fulda in Germany to attend the OpenNMS European User Conference. OpenNMS is an open source network management system which we make fairly heavy use of at work. The conference was an opportunity to catch up on developments in the project and get a sense of how it was being used. It was also an chance to make personal contact with a number of the developers. While open source development is typically conducted via faceless email and IRC it does help to put a face to the name every now and again.&lt;/p&gt;
&lt;p&gt;Mindful of my experiences last year when my &lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2010/05/18/rainbow-nation/"&gt;work trip to South Africa&lt;/a&gt; was affected by a certain Icelandic volcano I opted for an entirely overland trip this time. I left my house at around 10.30 in the morning and arrived in Frankfurt by 21.30. The journey was lengthened somewhat by a 2 hour wait at Brussels for the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Deutsche_Bahn"&gt;Deutsche Bhan&lt;/a&gt; train to Frankfurt. However I was able to find a suitably WiFi enabled place to sit down and continue work.&lt;/p&gt;
&lt;p&gt;So while being a long journey it was considerably less hassle than going via plane. The amount of interruption to stuff I needed to do was limited to walking between platforms. As soon as I boarded the train I was able to open up my laptop and get on with some work. In fact I probably had one of the most productive days of hacking for some time as I was mercifully free of the distractions a typical day on the office throws at me.&lt;/p&gt;
&lt;p&gt;There is a difference between the EuroStar and the DB trains though. The EuroStar trains are getting on a bit and the upholstery is a little tatty although the ride is still very smooth. In contrast the German trains are very well cared for, clean and with a silky smooth ride. I'm certainly looking forward to when DB over &lt;a class="reference external" href="http://www.bbc.co.uk/news/business-11567753"&gt;direct services to Holland and Germany&lt;/a&gt; from St Pancras. When those services start running I'll be able to the same journey door to door in around 6 and half hours which will be much more competitive time wise with those ash-prone planes.&lt;/p&gt;
</content><category term="general"></category><category term="opennms"></category><category term="ouce2011"></category><category term="trains"></category><category term="travel"></category></entry><entry><title>Primary Data</title><link href="https://www.bennee.com/~alex/blog/2011/05/17/primary-data/" rel="alternate"></link><published>2011-05-17T12:56:00+01:00</published><updated>2011-05-17T12:56:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-05-17:/~alex/blog/2011/05/17/primary-data/</id><summary type="html">&lt;p&gt;` &amp;lt;&lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2011/05/17/primary-data/baby-3/"&gt;http://www.bennee.com/~alex/blog/2011/05/17/primary-data/baby-3/&lt;/a&gt;&amp;gt;`__&lt;/p&gt;
&lt;p&gt;It's hard to explain the impact of seeing a few grainy pixels waving at you on a medical monitor stand. While it's a sign of our modern magical times that I can provide people with a picture of …&lt;/p&gt;</summary><content type="html">&lt;p&gt;` &amp;lt;&lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2011/05/17/primary-data/baby-3/"&gt;http://www.bennee.com/~alex/blog/2011/05/17/primary-data/baby-3/&lt;/a&gt;&amp;gt;`__&lt;/p&gt;
&lt;p&gt;It's hard to explain the impact of seeing a few grainy pixels waving at you on a medical monitor stand. While it's a sign of our modern magical times that I can provide people with a picture of my yet-to-be borne child it loses some impact due to it's static nature. While we watched this recognisable form bouncing around in natures playpen my thoughts underwent a moment of crystallisation from the abstract to the actuality. Obviously I've known we* were pregnant for some time however this was the first irrefutable primary data that it is really all happening.&lt;/p&gt;
&lt;p&gt;Obviously I'm not the first person to feel these sort of things. Evolution has been doing it's thing for some time providing the unbroken thread of life to something that is now our responsibility. I'm left thinking that questions about my suitability as a parent are rather academic now. I'm slightly mollified by the fact that a number of my friends have already walked this road. Friends that joined me in youthful excesses and moderately irresponsible behaviour back in the day seem to have taken on the mantle of parenthood with relative ease. It gives me hope that the mantle will fit me as well.&lt;/p&gt;
&lt;p&gt;* I hesitated to use the pronoun as Fliss is very much taking the brunt of the pregnancy downsides. However it is a shared experience even if my input at the moment is restricted to platitudes and earnest requests if there is anything she would like that I can fetch her.&lt;/p&gt;
</content><category term="general"></category><category term="children"></category><category term="life"></category></entry><entry><title>Uncaged Monkeys</title><link href="https://www.bennee.com/~alex/blog/2011/05/13/uncaged-monkeys/" rel="alternate"></link><published>2011-05-13T13:09:00+01:00</published><updated>2011-05-13T13:09:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-05-13:/~alex/blog/2011/05/13/uncaged-monkeys/</id><summary type="html">&lt;p&gt;I find it heartening that a thing like &lt;a class="reference external" href="http://www.robinince.com/"&gt;Uncaged Monkeys&lt;/a&gt; exists. While I doubt science based entertainment will ever reach the stadium busting state that stand-up comedy did a few years ago I hope the trend continues.&lt;/p&gt;
&lt;p&gt;The format worked well and was a lively cross between lecture and stand-up …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I find it heartening that a thing like &lt;a class="reference external" href="http://www.robinince.com/"&gt;Uncaged Monkeys&lt;/a&gt; exists. While I doubt science based entertainment will ever reach the stadium busting state that stand-up comedy did a few years ago I hope the trend continues.&lt;/p&gt;
&lt;p&gt;The format worked well and was a lively cross between lecture and stand-up routine. Most of the comedy was handled my Mr Ince but the others more than held their own keeping the audience engaged. The topics covered included &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Simon_Singh"&gt;Simon Singh&lt;/a&gt; with a quick overview of cryptography which included a live demonstration with a real &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Enigma_machine"&gt;Engima Machine&lt;/a&gt;. Foxy &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Brian_Cox_(physicist)"&gt;Coxy&lt;/a&gt; waxed on about the LHC's search for the Higgs Boson and the evolution of the Cosmos. Being so enthusiastic about the subject he also overran making the first half of the show quite long.&lt;/p&gt;
&lt;p&gt;There was a musical interlude by the rather charming geek songstress &lt;a class="reference external" href="http://helenarney.com/"&gt;Helen Arney&lt;/a&gt; who played a few songs on her ukulele.&lt;/p&gt;
&lt;p&gt;Due to the over-run of the first half the second half started with a very brief question and answer session with Cox and Singh. It's a shame they didn't get to do more but I did find the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/White_dwarf"&gt;answer to the question&lt;/a&gt; &amp;quot;What's the biggest small thing in the universe?&amp;quot; fascinating. After the Q&amp;amp;A there was a little section on mapping the genetic history of humans were I learnt some interesting facts about &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Earwax"&gt;earwax&lt;/a&gt;. The presenter &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Steve_Jones_(biologist)"&gt;Professor Steve Jones&lt;/a&gt; painted himself as a Dawkins lite but was funny and engaging nevertheless. Finally the energetic &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Ben_Goldacre"&gt;Ben Goldacre&lt;/a&gt; ran through the placebo effect and how to design drug trials. The data he presented about trail bias was was slightly concerning. Although he had no qualms about rubbishing the quack pill pushers it seems even the proper scientific approach of the big pharmacology companies is not averse to being gamed to show one treatment is better than another. Finally Cox brought the evening to a close introducing an audio clip of Carl Sagan musing on the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Pale_Blue_Dot#Reflections_by_Sagan"&gt;Pale Blue Dot&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Although I was familiar with some of the material from Ince's previous show &lt;a class="reference external" href="http://newhumanist.org.uk/1917/nine-lessons-and-carols-for-godless-people"&gt;Nine Lessons and Carols for Godless People&lt;/a&gt; I still learnt new things at this one. I hope the trend for taking science out to the people continues and I look forward to going to more like it.&lt;/p&gt;
</content><category term="geek"></category><category term="review"></category><category term="science"></category></entry><entry><title>No news is some news</title><link href="https://www.bennee.com/~alex/blog/2011/05/10/no-news-is-some-news/" rel="alternate"></link><published>2011-05-10T07:55:00+01:00</published><updated>2011-05-10T07:55:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-05-10:/~alex/blog/2011/05/10/no-news-is-some-news/</id><summary type="html">&lt;p&gt;There is currently a lot of consternation around &lt;a class="reference external" href="http://www.bbc.co.uk/news/uk-13330409"&gt;Twitter users&lt;/a&gt; attempting to circumnavigate the latest batch of so called super-injunctions. The approach &lt;a class="reference external" href="http://www.google.co.uk/search?sourceid=chrome&amp;amp;client=ubuntu&amp;amp;channel=cs&amp;amp;ie=UTF-8&amp;amp;q=%23superinjunction#q=%23superinjunction&amp;amp;hl=en&amp;amp;client=ubuntu&amp;amp;hs=sBR&amp;amp;channel=cs&amp;amp;prmd=ivnsu&amp;amp;source=lnms&amp;amp;tbm=mbl&amp;amp;ei=zejHTcThJYeZhQf8haGEBA&amp;amp;sa=X&amp;amp;oi=mode_link&amp;amp;ct=mode&amp;amp;cd=6&amp;amp;ved=0CBgQ_AUoBQ&amp;amp;fp=89ab0539bee4a326&amp;amp;biw=1220&amp;amp;bih=601"&gt;being taken by twitter users&lt;/a&gt; seems to involve throwing up a number of informed guesses as to the subjects of these injunctions and seeing what gets taken down …&lt;/p&gt;</summary><content type="html">&lt;p&gt;There is currently a lot of consternation around &lt;a class="reference external" href="http://www.bbc.co.uk/news/uk-13330409"&gt;Twitter users&lt;/a&gt; attempting to circumnavigate the latest batch of so called super-injunctions. The approach &lt;a class="reference external" href="http://www.google.co.uk/search?sourceid=chrome&amp;amp;client=ubuntu&amp;amp;channel=cs&amp;amp;ie=UTF-8&amp;amp;q=%23superinjunction#q=%23superinjunction&amp;amp;hl=en&amp;amp;client=ubuntu&amp;amp;hs=sBR&amp;amp;channel=cs&amp;amp;prmd=ivnsu&amp;amp;source=lnms&amp;amp;tbm=mbl&amp;amp;ei=zejHTcThJYeZhQf8haGEBA&amp;amp;sa=X&amp;amp;oi=mode_link&amp;amp;ct=mode&amp;amp;cd=6&amp;amp;ved=0CBgQ_AUoBQ&amp;amp;fp=89ab0539bee4a326&amp;amp;biw=1220&amp;amp;bih=601"&gt;being taken by twitter users&lt;/a&gt; seems to involve throwing up a number of informed guesses as to the subjects of these injunctions and seeing what gets taken down. An interesting side-effect of the current injunctions being that someone might end up being found in contempt of court without actually knowing the facts that have been protected. It would be interesting if ignorance was actually held up to be a valid defence in this case.&lt;/p&gt;
&lt;p&gt;The newspapers of course are free to egg things along by reporting on the reporting that they are unable to report on directly themselves.&lt;/p&gt;
&lt;p&gt;However legal issues aside there is another problem with attempting to eradicate the collective memory of the internet. While things are extensively archived and uniquely indexed it become comparatively simple to look for the holes in the record. For example look at the &lt;a class="reference external" href="http://en.wikipedia.org/w/index.php?title=Ryan_Giggs&amp;amp;action=history"&gt;Wikipedia Revision history for a random premier league footballer&lt;/a&gt; and you'll notice a number of edits that have been &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Wikipedia:Revision_deletion#Criteria_for_redaction"&gt;revision deleted&lt;/a&gt; rather than the usual straight reversion of wiki vandalism. This in of itself doesn't prove anything but it would certainly be an interesting exercise correlating the revision deletion patterns with reference to other entries including those that couldn't afford &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Imogen_Thomas"&gt;to be protected by injunctions&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I should point out I don't really care about stories of celebrities shagging around. Unless their behaviour is at odds with their public pronouncements on how the rest of us should lead our lives it's between themselves and their families. However there have been other cases of super-injunctions being used to prevent &lt;a class="reference external" href="http://en.wikipedia.org/wiki/2006_C%C3%B4te_d%27Ivoire_toxic_waste_dump"&gt;reporting on more serious matters&lt;/a&gt; where there was definitely a public interest in making more widely known.&lt;/p&gt;
</content><category term="geek"></category><category term="censorship"></category><category term="information theory"></category></entry><entry><title>Dodging Rainclouds</title><link href="https://www.bennee.com/~alex/blog/2011/05/09/dodging-rainclouds/" rel="alternate"></link><published>2011-05-09T13:54:00+01:00</published><updated>2011-05-09T13:54:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-05-09:/~alex/blog/2011/05/09/dodging-rainclouds/</id><summary type="html">&lt;p&gt;We had a nice trip up to Manchester (or more correctly Knutsford) over the weekend. We knew we were approaching Manchester after the sunny afternoon drive was obscured by the large cloud burst darkening the sky. The pattern of rain continued until Sunday but luckily lifted itself for the duration …&lt;/p&gt;</summary><content type="html">&lt;p&gt;We had a nice trip up to Manchester (or more correctly Knutsford) over the weekend. We knew we were approaching Manchester after the sunny afternoon drive was obscured by the large cloud burst darkening the sky. The pattern of rain continued until Sunday but luckily lifted itself for the duration of the &lt;a class="reference external" href="http://www.knutsford-royal-mayday.co.uk/"&gt;May Day Parade&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It was lovely catching up with people and news - our own is probably spreading via non-public means as I post. We hope to come up later this year and perhaps catch-up with a few more people.&lt;/p&gt;
</content><category term="general"></category><category term="administrava"></category><category term="visits"></category></entry><entry><title>Self-indulgence</title><link href="https://www.bennee.com/~alex/blog/2011/05/04/self-indulgence/" rel="alternate"></link><published>2011-05-04T11:35:00+01:00</published><updated>2011-05-04T11:35:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-05-04:/~alex/blog/2011/05/04/self-indulgence/</id><summary type="html">&lt;p&gt;I was thinking of twining about how hard my life was especially as I haven't been able to get my CoD on for the last two weeks due to the extended PSN outage. However I was reminded this morning that it's voting day tomorrow and given the &lt;a class="reference external" href="http://ukpollingreport.co.uk/av-referendum"&gt;current polling&lt;/a&gt; is …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I was thinking of twining about how hard my life was especially as I haven't been able to get my CoD on for the last two weeks due to the extended PSN outage. However I was reminded this morning that it's voting day tomorrow and given the &lt;a class="reference external" href="http://ukpollingreport.co.uk/av-referendum"&gt;current polling&lt;/a&gt; is rather disheartening for the Yes to AV camp I thought I'd tilt at a few more windmills. However my loyal readers are most likely bored stiff of me droning on about voting reform I thought I'd offer a video of some cute cats instead.&lt;/p&gt;
&lt;p&gt;A lot of hysteria about has been spread about AV. Both sides have made rather exaggerated claims for what it can and can't do. It makes sense to keep things in perspective. AV is certainly not a proportional system. If it were I might be taking a different position as although proportional representation is desirable I have issues with the systems that ensure it. In fact the results it generates won't be too far different from what FPTP system generate now, although without polling on 2nd preferences it's hard to model. The only real change is that candidates who win their constituency races will have to gather a broader range of support, even if they are not first choice of every voter that eventually lends them their vote. It's a small change I think it makes for a better system. So I urge you if your eligible to vote in tomorrows referendum to vote &lt;a class="reference external" href="http://i.imgur.com/Zb9tJ.png"&gt;Yes to AV&lt;/a&gt;.&lt;/p&gt;
</content><category term="general"></category><category term="av"></category><category term="politics"></category><category term="referendum"></category><category term="voting"></category></entry><entry><title>Wingnut Special</title><link href="https://www.bennee.com/~alex/blog/2011/05/03/wingnut-special/" rel="alternate"></link><published>2011-05-03T15:15:00+01:00</published><updated>2011-05-03T15:15:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-05-03:/~alex/blog/2011/05/03/wingnut-special/</id><summary type="html">&lt;p&gt;I suspect yesterday morning will be one of those &amp;quot;remember where you were when...&amp;quot; moments. Our Monday morning alarm was set (having not disabled it for the bank holiday) so we woke to the headlines announcing the killing of &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Osama_bin_Laden"&gt;US enemy number one&lt;/a&gt; in a daring raid into Pakistan.&lt;/p&gt;
&lt;p&gt;I …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I suspect yesterday morning will be one of those &amp;quot;remember where you were when...&amp;quot; moments. Our Monday morning alarm was set (having not disabled it for the bank holiday) so we woke to the headlines announcing the killing of &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Osama_bin_Laden"&gt;US enemy number one&lt;/a&gt; in a daring raid into Pakistan.&lt;/p&gt;
&lt;p&gt;I notice it hasn't taken long for the conspiracy nuts to come out of the woodwork. I've seen claims that Osama had been dead for some time and this was announced to boost Obama's flagging approval ratings. A lot also seems to being made of the fact that the body was buried at sea. They all suffer from the classic conspiracy fallacy of substituting something even more unlikely because the official story seems unlikely to them. It's purely an information problem - it's much harder to keep things secret forever than for a limited time.&lt;/p&gt;
&lt;p&gt;Take for example the &lt;a class="reference external" href="http://www.flickr.com/photos/whitehouse/sets/72157626507626189/"&gt;Whitehouse flickr photo-stream&lt;/a&gt;. The conspiracy theorists would argue &amp;quot;It's all staged! It means nothing&amp;quot;. However the pictures identify 12-20 people in the most secure room in the world who would have to be in on the deception. That's 12-20 people who could potentially give the conspiracy away at any moment. And that doesn't include the rest of the people involved in an risky operation into a foreign country that left bits of a &lt;a class="reference external" href="http://en.wikipedia.org/wiki/MH-60_helicopter"&gt;Black Hawk helicopter&lt;/a&gt; behind and &lt;a class="reference external" href="http://twitter.com/#!/ReallyVirtual/status/64780730286358528"&gt;witnessed in real time&lt;/a&gt;. Is it really plausible you would choose to violate Pakistani sovereign airspace risking and international incident to pretend you had killed Osama? Wouldn't it make more sense to stage the operation somewhere you had more control, for example in the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Tora_Bora"&gt;Tora Bora&lt;/a&gt; mountains in Afghanistan.&lt;/p&gt;
&lt;p&gt;There is of course the possibility that they thought they were going after Osama but didn't actually find him when they got there. However the official record has stated they used DNA evidence to be sure they got him, bringing more people into the slowly growing number that have to keep to the conspiracies version of the facts. Pretty soon you'll be in the same position as the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Moon_landing_conspiracy_theories"&gt;Moon Landing Deniers&lt;/a&gt; that assume half of NASA where in on the lie.&lt;/p&gt;
&lt;p&gt;Conspiracies &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Watergate_scandal"&gt;do happen&lt;/a&gt; but they all tend involve a small number of people all equally tied the consequences of the conspiracy being revealed. Even then the group very rarely take the secrets to their graves. By all means question authority and keep an open mind to the possibilities, just don't leave your common sense behind when evaluating an even more far fetched explanation.&lt;/p&gt;
</content><category term="general"></category><category term="conspiracy"></category><category term="skeptics"></category><category term="terrorism"></category></entry><entry><title>Bread and Circuses</title><link href="https://www.bennee.com/~alex/blog/2011/04/29/bread-and-circuses/" rel="alternate"></link><published>2011-04-29T14:16:00+01:00</published><updated>2011-04-29T14:16:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-04-29:/~alex/blog/2011/04/29/bread-and-circuses/</id><summary type="html">&lt;p&gt;I'm not exactly a staunch royalist but in the great scheme of things having a constitutional monarchy ain't so bad. While it's unlikely I'll be glued to the TV watching the high pomp and circumstance of our eventual King and Queen getting married I don't begrudge anyone who wants to …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I'm not exactly a staunch royalist but in the great scheme of things having a constitutional monarchy ain't so bad. While it's unlikely I'll be glued to the TV watching the high pomp and circumstance of our eventual King and Queen getting married I don't begrudge anyone who wants to. It's certainly been nice to have the 3 short weeks in a row.&lt;/p&gt;
&lt;p&gt;We've been spending the wedding day chilling and trying to defeat the Stryder Assault in Episode 2 of Half Life 2. We may head down to the [STRIKEOUT:street party]village picnic later but only to partake in the community bonding experience.&lt;/p&gt;
</content><category term="general"></category><category term="monarchy"></category><category term="weddings"></category></entry><entry><title>Knights who say frak, a lot</title><link href="https://www.bennee.com/~alex/blog/2011/04/19/knights-who-say-frak-a-lot/" rel="alternate"></link><published>2011-04-19T11:32:00+01:00</published><updated>2011-04-19T11:32:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-04-19:/~alex/blog/2011/04/19/knights-who-say-frak-a-lot/</id><summary type="html">&lt;p&gt;We watched the first episode of HBO's adaptation of &lt;a class="reference external" href="http://grrm.livejournal.com/"&gt;George R. R. Martins&lt;/a&gt; &lt;a class="reference external" href="http://en.wikipedia.org/wiki/A_Song_of_Ice_and_Fire"&gt;Song of Ice and Fire&lt;/a&gt; fantasy series. Or as Fliss likes to describe it Knights who Say F**k, a lot.&lt;/p&gt;
&lt;p&gt;First impressions are good, HBO don't skimp when it comes to production quality which explains why …&lt;/p&gt;</summary><content type="html">&lt;p&gt;We watched the first episode of HBO's adaptation of &lt;a class="reference external" href="http://grrm.livejournal.com/"&gt;George R. R. Martins&lt;/a&gt; &lt;a class="reference external" href="http://en.wikipedia.org/wiki/A_Song_of_Ice_and_Fire"&gt;Song of Ice and Fire&lt;/a&gt; fantasy series. Or as Fliss likes to describe it Knights who Say F**k, a lot.&lt;/p&gt;
&lt;p&gt;First impressions are good, HBO don't skimp when it comes to production quality which explains why we have so many of their Box Sets on our shelves. They have done a good job at portraying the varied landscape of Westeros and have some impressive sets I hope they are going to make good use of. The cast seem to be well chosen and the performances so far have been good.&lt;/p&gt;
&lt;p&gt;The show has Martin signed up as a non-honorific executive producer. This explain why the show seems to be sticking fairly closely to story of the book. It will be interesting to see if that changes over time as the books do tend to wander through a lot of characters. Also having read all the books so far we both know whats coming up. I don't know if this will get annoying or if we will just sit back and enjoy the ride. We are certainly looking forward to the next episode with anticipation.&lt;/p&gt;
&lt;p&gt;My only worry is the same fate will befall this that befell &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Rome_(TV_series)"&gt;Rome&lt;/a&gt; which is high production costs making the show uneconomical. It's doubly annoying as I would love for HBO to start a streaming on-demand service where I could pay as I go to watch those HBO shows when they are on. I'm afraid I can't justify paying Murdoch £20 a month just to watch one show.&lt;/p&gt;
</content><category term="general"></category><category term="game of thrones"></category><category term="hbo"></category><category term="tv"></category></entry><entry><title>Playing Blu-Ray under Linux</title><link href="https://www.bennee.com/~alex/blog/2011/04/18/playing-blu-ray-under-linux/" rel="alternate"></link><published>2011-04-18T13:43:00+01:00</published><updated>2011-04-18T13:43:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-04-18:/~alex/blog/2011/04/18/playing-blu-ray-under-linux/</id><summary type="html">&lt;p&gt;One of the many deficiencies of &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Digital_rights_management"&gt;Digital Restrictions Management&lt;/a&gt; is the fact it makes doing legal authorised things hard for paying customers. For example my brother still can't play Blu-Ray disks on his laptop despite it having the requisite a) drive, b) power and c) display resolution. Because the OS …&lt;/p&gt;</summary><content type="html">&lt;p&gt;One of the many deficiencies of &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Digital_rights_management"&gt;Digital Restrictions Management&lt;/a&gt; is the fact it makes doing legal authorised things hard for paying customers. For example my brother still can't play Blu-Ray disks on his laptop despite it having the requisite a) drive, b) power and c) display resolution. Because the OS on his machine (Vista?) can't see a verifiable encrypted path to his big screen display it refuses to play his legally purchased disks.&lt;/p&gt;
&lt;p&gt;This is one reason why I haven't brought any Blu-Ray disks since the couple I got with my PS3 (to test the Hi-Def goodness). I refuse to buy them while I have no devices under my control* that can play them. Still the conversation with my brother and the fact I had a Blu-Ray drive in my desktop prompted me to see if it was indeed now possible.&lt;/p&gt;
&lt;p&gt;My desktop system runs &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Gentoo_Linux"&gt;Gentoo&lt;/a&gt; which makes running bleeding edge code very easy. I duly enabled the &amp;quot;bluray&amp;quot; and &amp;quot;aacs&amp;quot; &lt;a class="reference external" href="http://www.gentoo.org/dyn/use-index.xml"&gt;use flags&lt;/a&gt; and recompiled mplayer. This brought in libbluray and the command line utility aacskeys. Unfortunately mplayer was still unable to play the disk, complaining the disk was still encrypted.&lt;/p&gt;
&lt;p&gt;After a bunch of searching the interwebs and drawing blanks on finding any explicit &amp;quot;HOWTO&amp;quot; instructions I resorted to running mplayer through a debugger (one advantage of an Open Source system is there are no &amp;quot;black boxes&amp;quot; to reverse engineer) to see how libbluray was being invoked. It turned out it attempts to &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Dynamic_loading"&gt;dlopen&lt;/a&gt; another library &lt;a class="reference external" href="http://www.videolan.org/developers/libaacs.html"&gt;libaacs&lt;/a&gt; which wasn't on my system. Once I added its &lt;a class="reference external" href="http://bugs.gentoo.org/show_bug.cgi?id=352031"&gt;ebuild&lt;/a&gt; to my overlay I was one step closer.&lt;/p&gt;
&lt;p&gt;Unlike the libdecss (which works around the rather anaemic crypto on plain old DVDs) the libaacs library doesn't crack the considerably stronger keys used on BluRay. It relies on a database of Volume keys which can be placed in &lt;em&gt;~/.config/aacs/KEYDB.CFG&lt;/em&gt; which are used to calculate the final decryption keys for the content. Confusingly the format is different from the key databases &lt;a class="reference external" href="http://www.google.co.uk/search?q=KEYDB.CFG"&gt;you may find searching&lt;/a&gt; the internet. However the &lt;a class="reference external" href="https://code.videolan.org/videolan/libaacs/-/blob/master/KEYDB.cfg?ref_type=heads"&gt;libaacs file format documentation&lt;/a&gt; provides instruction on convert the old format into a new format file.&lt;/p&gt;
&lt;p&gt;With all of this in-place I was finally able to play my legally owned copy of Black Hawk Down. Yay!&lt;/p&gt;
&lt;p&gt;Of course this does require having the appropriate keys for the disc you want to play in your key database. This is where aacskeys comes in. This program allows you to extract the appropriate volume ID key from the disc you want to play. However there are some potential caveats. For starters the program is a little unfriendly to use as it requires certain files to be in the directory your running from. Also some BluRay drive firmwares will refuse to supply the needed keys if the disks are a newer generation than the drive (due to the AACS key revocation model). I'm not sure if a drive will self revoke under Linux if presented with a newer disk but this is the reason there are patched drive firmwares out there.&lt;/p&gt;
&lt;p&gt;In the event I was able to verify that aacskeys generates the same volume ID for my copy of Blackhawk Down as was in the KEYDB.CFG database so I know it works for now.&lt;/p&gt;
&lt;p&gt;In summary this does show it is possible to play a Blu-Ray disk on a Linux system however there was a fair bit of hoop jumping involved. If I can find a source repository for aacskeys I might start by cleaning it up and making the process of updating the key database a little less painful. I doubt I'll be buying any more Blu-Ray disks until the process of playback is a lot simpler.&lt;/p&gt;
&lt;p&gt;* My PS3 is very much Sony's device, a Faustian bargain I accept because I like playing games every now and again. Witness the removal of &lt;a class="reference external" href="http://en.wikipedia.org/wiki/OtherOS"&gt;OtherOS&lt;/a&gt; from working systems in the wild by a mandatory firmware update.&lt;/p&gt;
</content><category term="geek"></category><category term="blu-ray"></category><category term="defective-by-design"></category><category term="drm"></category><category term="gentoo"></category><category term="linux"></category></entry><entry><title>completion-ignored-extensions</title><link href="https://www.bennee.com/~alex/blog/2011/04/13/completion-ignored-extensions/" rel="alternate"></link><published>2011-04-13T16:27:00+01:00</published><updated>2011-04-13T16:27:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-04-13:/~alex/blog/2011/04/13/completion-ignored-extensions/</id><summary type="html">&lt;p&gt;I've been using the rather spiffy &lt;a class="reference external" href="http://www.emacswiki.org/emacs/LustyExplorer"&gt;Lusty Explorer&lt;/a&gt; for some time for my buffer and file finding. However it (I thought) had a rather annoying bug where I could never tab directly into some of the repositories I was hacking on. Eventually I figured out that the problem was down …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've been using the rather spiffy &lt;a class="reference external" href="http://www.emacswiki.org/emacs/LustyExplorer"&gt;Lusty Explorer&lt;/a&gt; for some time for my buffer and file finding. However it (I thought) had a rather annoying bug where I could never tab directly into some of the repositories I was hacking on. Eventually I figured out that the problem was down to the way I name them.&lt;/p&gt;
&lt;p&gt;My naming scheme for any repository is generally to add the version control extension to the directory. This is more for my benefit than emacs as it's quite capable of working this out for itself in any given repo. However it turns out that Lusty was being a good emacs citizen and using the variable &lt;em&gt;completion-ignored-extensions&lt;/em&gt; which included the pattern &amp;quot;.git/&amp;quot; and duly hiding my repo directories from completion. In fact there are a number of patterns in there which should probably be more specific. I wrote this to fix the problem:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
(setq completion-ignored-extensions
      (mapcar '(lambda (ext)
                 (if (string-equal &amp;quot;/&amp;quot; (substring ext -1 nil))
                     (concat &amp;quot;^&amp;quot; ext)
                   ext)) completion-ignored-extensions))
&lt;/pre&gt;
&lt;p&gt;It still seems a little ugly to me so given the &lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2010/08/10/looping-in-lisp/"&gt;last time I berated elisp's style&lt;/a&gt; gained so many useful suggestions I'd welcome improvements.&lt;/p&gt;
</content><category term="geek"></category><category term="code"></category><category term="elisp"></category><category term="emacs"></category><category term="examples"></category></entry><entry><title>That would be a psephological matter</title><link href="https://www.bennee.com/~alex/blog/2011/04/13/that-would-be-a-psephological-matter/" rel="alternate"></link><published>2011-04-13T15:33:00+01:00</published><updated>2011-04-13T15:33:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-04-13:/~alex/blog/2011/04/13/that-would-be-a-psephological-matter/</id><summary type="html">&lt;p&gt;One of the most annoying aspects of our current electoral system is the issue of &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Tactical_voting"&gt;tactical voting&lt;/a&gt;. This is where voters feel compelled to vote for someone over their preferred candidate as otherwise someone they really don't want might sneak in thanks to the split vote. It's something that's sadly …&lt;/p&gt;</summary><content type="html">&lt;p&gt;One of the most annoying aspects of our current electoral system is the issue of &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Tactical_voting"&gt;tactical voting&lt;/a&gt;. This is where voters feel compelled to vote for someone over their preferred candidate as otherwise someone they really don't want might sneak in thanks to the split vote. It's something that's sadly very common with the current First Past the Post system. You'll often hear politicians on election night discussing swings towards various candidates around various issues and it's all based on hearsay from the campaign trail. No one really knows why the voters voted for a particular person and there is much tea-leaf reading done by the psephologists in interpreting the results for a ward.&lt;/p&gt;
&lt;p&gt;This for me is the principle reason I favour the &lt;a class="reference external" href="http://www.yestofairervotes.org/"&gt;proposed Alternative Vote&lt;/a&gt; which will be the subject of a referendum on the &lt;a class="reference external" href="http://www.electoralcommission.org.uk/news-and-media/public-awareness-campaigns/public-information-on-5-May-2011-elections-and-referendum"&gt;5th of May&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Political parties are not one size fits all stereotypes - all of the main parties have a fairly broad coalition of views. Knowing the preference voting order of the voters will give a much greater insight into the nature of the electorate which can only be a good thing. We will no longer assume that all Tory voters are Eurosceptic social conservatives or supporting the LibDems implies you are a Labour refugee or the Labour party draws all it support from militant union membership. And by raising the bar an MP has to reach they will have to broaden their base and not just rely on there being slightly more of one set of voters than the other platforms.&lt;/p&gt;
&lt;p&gt;I have to say so far neither of the campaigning groups has particularly impressed me although the No to AV campaign do seem to be edging ahead in the negative campaigning. However the electoral commission does do a good neutral &lt;a class="reference external" href="http://www.aboutmyvote.co.uk/referendum_2011/referendum_booklet_all_formats.aspx"&gt;booklet&lt;/a&gt; that explains how AV works without any spin either way. It's worth a read.&lt;/p&gt;
&lt;p&gt;While I hope I've done my bit to convince you of the benefits of voting yes (feel free to comment if you want debate!) I do urge everyone who has the right to actually turn up and make their views known. These decisions are only made by those who turn up and if turnout is low it will be a long time before your views on the electoral system are canvassed again.&lt;/p&gt;
</content><category term="general"></category><category term="av"></category><category term="may5th"></category><category term="politics"></category><category term="voting"></category></entry><entry><title>NoSTalgia</title><link href="https://www.bennee.com/~alex/blog/2011/04/05/nostalgia-2/" rel="alternate"></link><published>2011-04-05T10:16:00+01:00</published><updated>2011-04-05T10:16:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-04-05:/~alex/blog/2011/04/05/nostalgia-2/</id><summary type="html">&lt;p&gt;In the middle of ripping box-sets to our media server I had a little
bout of nostalgia for the 'ole days. After a little messing about I
got the latest version of &lt;a class="reference external" href="http://hatari.berlios.de/"&gt;Hatari&lt;/a&gt;
running which still seems to be making releases. It does a very
creditable job in handling Atari …&lt;/p&gt;</summary><content type="html">&lt;p&gt;In the middle of ripping box-sets to our media server I had a little
bout of nostalgia for the 'ole days. After a little messing about I
got the latest version of &lt;a class="reference external" href="http://hatari.berlios.de/"&gt;Hatari&lt;/a&gt;
running which still seems to be making releases. It does a very
creditable job in handling Atari ST emulation including some of the
demo effects which abused the shifter hardware. After a couple of
false starts I finally got this up on YouTube:&lt;/p&gt;
&lt;iframe width="560" height="315"
        src="https://www.youtube.com/embed/S5RRroytTPc"
        frameborder="0"
        allow="accelerometer; autoplay;encrypted-media; gyroscope; picture-in-picture"
        allowfullscreen&gt;
&lt;/iframe&gt;&lt;p&gt;It may not seem like much but you have to remember how much less
powerful hardware was back then. It took an appreciable amount of a
frame (at 50FPS that's 20ms) to just clear the screen. One thing I do
remember is it made use of the 68k's &lt;em&gt;movep&lt;/em&gt; instruction to do the 8
pixel wide morphing of the main logo. This made it fairly efficient
despite the ST's &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Planar_(computer_graphics)"&gt;16 pixel wide, 4 bit-planes&lt;/a&gt;.&lt;/p&gt;
</content><category term="geek"></category><category term="atari st"></category><category term="demo"></category><category term="demo scene"></category><category term="stsquad"></category><category term="youtube"></category></entry><entry><title>Getting warmer</title><link href="https://www.bennee.com/~alex/blog/2011/04/04/getting-warmer/" rel="alternate"></link><published>2011-04-04T14:06:00+01:00</published><updated>2011-04-04T14:06:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-04-04:/~alex/blog/2011/04/04/getting-warmer/</id><summary type="html">&lt;p&gt;We've been bumbling along with the central heating for the last few weeks. Every time the weather seemed to be taking a turn for the better it would invariably dive back into cold misty mornings. However it's starting to look like spring is finally arrived and starting to make it's …&lt;/p&gt;</summary><content type="html">&lt;p&gt;We've been bumbling along with the central heating for the last few weeks. Every time the weather seemed to be taking a turn for the better it would invariably dive back into cold misty mornings. However it's starting to look like spring is finally arrived and starting to make it's presence felt. It certainly felt like it when I wandered around the garden on Saturday morning sipping my first cup of tea of the day. It was enough to convince me to hang the washing outside which gives you an insight to how radical my Saturdays have become.&lt;/p&gt;
&lt;p&gt;It wasn't a very busy weekend which is just as well as the week at work was fairly harrowing. I did spend some time pottering in the garden doing my assigned tasks and finalising plans for the back garden. About the only other achievement of public note was preparing a full Lamb Sunday Roast for our neighbours.&lt;/p&gt;
&lt;p&gt;Apologies for the rather banal quality of this post. I do have a number of things I want to write about including the up-coming AV referendum, some back of the envelope calculations with respect to student financing, and the irony of Microsoft referring &lt;a class="reference external" href="http://www.bbc.co.uk/news/technology-12918059"&gt;Google to the EU competition authorities&lt;/a&gt;. However despite having a number of things I want to talk about/spark discussion I'm finding it hard to actually get around to writing about them so for now you'll have to contend with these snapshots of my domestic life :-)&lt;/p&gt;
</content><category term="general"></category><category term="garden"></category><category term="house"></category><category term="life"></category></entry><entry><title>Availability is hard it seems</title><link href="https://www.bennee.com/~alex/blog/2011/03/30/availability-is-hard-it-seems/" rel="alternate"></link><published>2011-03-30T10:27:00+01:00</published><updated>2011-03-30T10:27:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-03-30:/~alex/blog/2011/03/30/availability-is-hard-it-seems/</id><summary type="html">&lt;p&gt;It's a mark of how reliable some websites are that the first thing you do when you can't &lt;a class="reference external" href="http://www.bbc.co.uk/news/technology-12904586"&gt;access it&lt;/a&gt; you assume it's something up at your end. As it turns out the BBC has suffered a major DNS outage knocking all &lt;a class="reference external" href="http://whois.domaintools.com/bbc.co.uk"&gt;four of their DNS&lt;/a&gt; servers off the 'net …&lt;/p&gt;</summary><content type="html">&lt;p&gt;It's a mark of how reliable some websites are that the first thing you do when you can't &lt;a class="reference external" href="http://www.bbc.co.uk/news/technology-12904586"&gt;access it&lt;/a&gt; you assume it's something up at your end. As it turns out the BBC has suffered a major DNS outage knocking all &lt;a class="reference external" href="http://whois.domaintools.com/bbc.co.uk"&gt;four of their DNS&lt;/a&gt; servers off the 'net. At a stroke anything with a bbc.co.uk domain name became inaccessible. It seems this was due to &lt;a class="reference external" href="http://www.bbc.co.uk/blogs/bbcinternet/2011/03/bbc_online_outage_on_tuesday_2.html"&gt;routes to the DNS&lt;/a&gt; disappearing (similar to how &lt;a class="reference external" href="http://bgpmon.net/blog/?p=450"&gt;Egypt disconnected itself last month&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;When major sites like the BBC go down it's real time services like Twitter that come to the fore. We spent a good half an hour chortling at a number of humorous tweets that exploded a minute or so after the outage. You can see the &lt;a class="reference external" href="http://www.google.co.uk/search?tbs=mbl%3A1&amp;amp;hl=en&amp;amp;source=hp&amp;amp;biw=&amp;amp;bih=&amp;amp;q=bbc&amp;amp;btnG=Search"&gt;peak of activity on Google's real-time search&lt;/a&gt;. Of course the value of this real-time information quickly falls off as spammers and conspiracy theorists jump on the meta-tags to promote their own products and theories. This included rumours that &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Anonymous_(group)"&gt;Anonymous&lt;/a&gt; was responsible for bringing down the BBC.&lt;/p&gt;
&lt;p&gt;It's a salient reminder for all the &amp;quot;invulnerability&amp;quot; of the Internet high availability is a hard problem to solve.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; It's ironic that my post hasn't made it's way to my LiveJournal mirror yet due a separate outage that seems to have lasted most of the day.&lt;/p&gt;
</content><category term="geek"></category><category term="bbc"></category><category term="dns"></category><category term="twitter"></category></entry><entry><title>In other news</title><link href="https://www.bennee.com/~alex/blog/2011/03/28/in-other-news/" rel="alternate"></link><published>2011-03-28T10:04:00+01:00</published><updated>2011-03-28T10:04:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-03-28:/~alex/blog/2011/03/28/in-other-news/</id><summary type="html">&lt;p&gt;Rat diversions aside the weekend was a fairly sedate one. We visited a &lt;a class="reference external" href="http://www.teri-aki.co.uk/"&gt;rather nice Japanese restaurant in town&lt;/a&gt; on Saturday with a bunch of the Cambridge LARP group. We left feeling well stuffed.&lt;/p&gt;
&lt;p&gt;I spent a chunk of Sunday attending to tasks as directed by the head gardener while …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Rat diversions aside the weekend was a fairly sedate one. We visited a &lt;a class="reference external" href="http://www.teri-aki.co.uk/"&gt;rather nice Japanese restaurant in town&lt;/a&gt; on Saturday with a bunch of the Cambridge LARP group. We left feeling well stuffed.&lt;/p&gt;
&lt;p&gt;I spent a chunk of Sunday attending to tasks as directed by the head gardener while she continued attempting the Saturday Times crossword. We seem to have become Saturday Times readers purely on the basis of the quality of their puzzles. Marcus assures me that the Gruniad provides a more brain twisting &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Cryptic_crossword"&gt;Cryptic Crossword&lt;/a&gt; which Fliss aspires to graduate to one day. Personally I'm happy to manage one clue per crossword but I think I'm getting better at them over time.&lt;/p&gt;
&lt;p&gt;We spent a large chunk of the weekend watching through C4's &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Misfits_(TV_series)"&gt;alternative take on teen super heroes Misfits&lt;/a&gt;. It's been a fun show to watch and I suspect we'll get to the end of the season 2 box set in short order. We'll have to be careful because there seems to be a lull in any decent TV until Easter when we'll be spoilt for choice. Recommendations for other box sets welcome ;-)&lt;/p&gt;
</content><category term="general"></category><category term="crosswords"></category><category term="garden"></category><category term="house"></category><category term="life"></category><category term="misfits"></category><category term="tv"></category></entry><entry><title>Victory for the ape decendents</title><link href="https://www.bennee.com/~alex/blog/2011/03/28/victory-for-the-ape-decendents/" rel="alternate"></link><published>2011-03-28T09:49:00+01:00</published><updated>2011-03-28T09:49:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-03-28:/~alex/blog/2011/03/28/victory-for-the-ape-decendents/</id><summary type="html">&lt;p&gt;A number of weeks ago our feline owner bought a live rodent into the house. As we attempted to stop the cat playing with it's food it managed to make it's escape into the bowels of our kitchen seemingly disappearing into the skirting behind our sink. After a fruitless hour …&lt;/p&gt;</summary><content type="html">&lt;p&gt;A number of weeks ago our feline owner bought a live rodent into the house. As we attempted to stop the cat playing with it's food it managed to make it's escape into the bowels of our kitchen seemingly disappearing into the skirting behind our sink. After a fruitless hour of poking with sticks while wearing a head torch we gave up assuming the cat would finish the job next time it ventured out. Unfortunately the rodent proved to be smarter than the average pussy cat and made a life for itself pinching fruit and other scraps it was able to find at night. The carefully baited mouse trap also failed to attract it's attention. In the end we resorted chemical warfare and went for the utilitarian &amp;quot;Rat Kill Station&amp;quot; which presents a one stop bait and poison delivery mechanism in a handy enclosed plastic box. Visions of the rat retiring after a large hearty meal never to wake again were shattered on Sunday afternoon when the noise of it's death throes in the base of our oven summoned our attentions. The thing had grown significantly and we were left with the dilemma of leaving it to finish it's death or handling a rather pissed off but terminal rat out of the house. Next time I think I'll just leave the cat to finish the job and appreciate the relative cleanliness of the circle of life.&lt;/p&gt;
</content><category term="general"></category><category term="cats"></category><category term="rats"></category></entry><entry><title>Star Stuff</title><link href="https://www.bennee.com/~alex/blog/2011/03/17/star-stuff/" rel="alternate"></link><published>2011-03-17T12:21:00+00:00</published><updated>2011-03-17T12:21:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-03-17:/~alex/blog/2011/03/17/star-stuff/</id><summary type="html">&lt;p&gt;Fliss is fairly convinced I have a man crush on &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Brian_Cox_(physicist)"&gt;Brian Cox&lt;/a&gt;. If I have it's because it is nice to have a telegenic scientist on our TV screens who is obviously so excited by the science he wants to share it with his audience. Last week's Wonders &lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2011/03/07/holy-exponential-parking-charges-batman/"&gt;left me …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;Fliss is fairly convinced I have a man crush on &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Brian_Cox_(physicist)"&gt;Brian Cox&lt;/a&gt;. If I have it's because it is nice to have a telegenic scientist on our TV screens who is obviously so excited by the science he wants to share it with his audience. Last week's Wonders &lt;a class="reference external" href="http://www.bennee.com/~alex/blog/2011/03/07/holy-exponential-parking-charges-batman/"&gt;left me a little cold&lt;/a&gt; as it plodded through entropy theory and it's implications for the end of the universe. This weeks episode was much better paced as Cox went through the from the Big Bang and &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Stellar_nucleosynthesis"&gt;Stellar Nucleosynthesis&lt;/a&gt; and Super Nova processes which are responsible for all the diversity of elements found in our solar system. He even touched upon the stellar chemistry which has been detected which is hinting that much of the organic starter materials for life may already have existed in the dust clouds before the planet was formed.&lt;/p&gt;
&lt;p&gt;For me there wasn't much new but I readily accept I'm not really the target audience for the program. However it was still fun to watch and a definite improvement on last weeks episode.&lt;/p&gt;
&lt;p&gt;Cox has been quoted as saying he's heavily influenced by the late great Carl Sagan and his seminal &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Cosmos:_A_Personal_Voyage"&gt;Cosmos: A Personal Voyage&lt;/a&gt; which we have recently acquired on DVD. Having watched a few episodes of Cosmos so far it's hard not to draw comparisons. However the Cosmos series has the advantage of being 13 episodes long and therefor being much broader in scope in what it tries to cover. While the Wonders series attempts to describe the physics of the universe as it is in 4 episodes Cosmos is able to spend more time on the history of scientific endeavour. It takes time to detail some of the early experiments that started to peel back the mysteries of the universe. On balance I think that makes Cosmos a more interesting series to watch. However if Wonders is sufficiently engaging to make kids think that physics is cool and science is worthy of study then I'm more than happy for it to succeed.&lt;/p&gt;
</content><category term="geek"></category><category term="astronomy"></category><category term="cox"></category><category term="physics"></category><category term="science"></category></entry><entry><title>The long shadow of Iraq</title><link href="https://www.bennee.com/~alex/blog/2011/03/16/the-long-shadow-of-iraq/" rel="alternate"></link><published>2011-03-16T13:10:00+00:00</published><updated>2011-03-16T13:10:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-03-16:/~alex/blog/2011/03/16/the-long-shadow-of-iraq/</id><summary type="html">&lt;p&gt;&lt;a class="reference external" href="http://en.wikipedia.org/wiki/Muammar_Gaddafi"&gt;Colonel Gaddafi&lt;/a&gt; must think he's the luckiest dictator in the world. While operating under the imperfect spotlight of the worlds media last week he's now busy &lt;a class="reference external" href="http://www.bbc.co.uk/news/world-africa-12756874"&gt;crushing the rebellion&lt;/a&gt; in Libya while the worlds attention is divided by events the other side of the world. Meanwhile the legacy of the …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a class="reference external" href="http://en.wikipedia.org/wiki/Muammar_Gaddafi"&gt;Colonel Gaddafi&lt;/a&gt; must think he's the luckiest dictator in the world. While operating under the imperfect spotlight of the worlds media last week he's now busy &lt;a class="reference external" href="http://www.bbc.co.uk/news/world-africa-12756874"&gt;crushing the rebellion&lt;/a&gt; in Libya while the worlds attention is divided by events the other side of the world. Meanwhile the legacy of the Iraq war has made most of the Western world hesitant about bold action. So while it's right to try and gather international support at the UN I fear the fighting will be over and the leaders strung up on lamp posts before any action is taken. Obama is certainly an improvement on the last incumbent in the White House but he's not exactly &lt;a class="reference external" href="http://www.bbc.co.uk/blogs/thereporters/markmardell/2011/03/obamas_deliberation_on_libya_l.html"&gt;offering leadership&lt;/a&gt; in this situation.&lt;/p&gt;
&lt;p&gt;Of course it's open for debate if a No Fly zone would help the rebels, but I'm struggling to think what else the west can do? What would those opposed to the Iraq war suggest is the correct response to this situation? Is the lesson the Arab people are to take from this that we are sorry we intervened militarily before, all we can do is offer vocal support while well armed states put down dissent?&lt;/p&gt;
&lt;p&gt;The shadow of Iraq is long indeed.&lt;/p&gt;
</content><category term="general"></category><category term="geopolitics"></category><category term="iraq"></category><category term="libya"></category></entry><entry><title>Doom posts</title><link href="https://www.bennee.com/~alex/blog/2011/03/14/doom-posts/" rel="alternate"></link><published>2011-03-14T20:26:00+00:00</published><updated>2011-03-14T20:26:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-03-14:/~alex/blog/2011/03/14/doom-posts/</id><summary type="html">&lt;p&gt;Let me start by saying that I in no way want to minimise the horror the Japanese have been going through. By any standard the recent &lt;a class="reference external" href="http://www.google.com/crisisresponse/japanquake2011.html"&gt;earthquake&lt;/a&gt; has a big one. Despite their advanced technology and modern 21st century infrastructure there isn't a lot more they could have done to …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Let me start by saying that I in no way want to minimise the horror the Japanese have been going through. By any standard the recent &lt;a class="reference external" href="http://www.google.com/crisisresponse/japanquake2011.html"&gt;earthquake&lt;/a&gt; has a big one. Despite their advanced technology and modern 21st century infrastructure there isn't a lot more they could have done to mitigate the effects of nature at it's peak. Having said that the fact Japan is a modern advanced democratic state will no doubt aid it in picking itself up and rebuilding.&lt;/p&gt;
&lt;p&gt;However now the news media have shown the awesome power of nature and replayed the footage they have latched onto a &lt;a class="reference external" href="http://www.google.co.uk/search?sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=wiki+fukasma#q=japan+nuclear+emergency&amp;amp;hl=en&amp;amp;safe=off&amp;amp;tbs=nws:1,qdr:w&amp;amp;prmd=ivnsu&amp;amp;source=lnt&amp;amp;sa=X&amp;amp;ei=oXR-TZeuLJG1hAfl28zuBg&amp;amp;ved=0CBAQpwUoAw&amp;amp;fp=3eadc0fb8015b5fa"&gt;new story&lt;/a&gt;. I've seen reports comparing the situation to &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Chernobyl_disaster"&gt;Chernobyl&lt;/a&gt; and &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Three_Mile_Island_accident"&gt;3 Mile Island&lt;/a&gt;. The fact the buildings housing the reactors have blown up in a photogenic way has no doubt added to the drama. I found it useful to read up &lt;a class="reference external" href="http://words3pictures.tumblr.com/"&gt;on the details in plain English&lt;/a&gt; as written by a good friend of mine. As someone who actually knows about nuclear safety she's well worth the read.&lt;/p&gt;
&lt;p&gt;There may well be questions about this incident after they have resolved the situation. Nothing can ever be made 100% safe, not everything can be anticipated. What will happen is a long careful analysis of what didn't work (and what did) which will inform the engineering that will go into the next generation of reactors (these having been built in 1971). The anti-nuclear campaigns should think on these facts before declaring that &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Fukushima_I_Nuclear_Power_Plant"&gt;Fukushima&lt;/a&gt; demonstrates &lt;a class="reference external" href="http://www.guardian.co.uk/world/2011/mar/14/germany-likely-suspend-nuclear-plant-plans"&gt;we should give up on&lt;/a&gt; building our own next generation power stations.&lt;/p&gt;
</content><category term="geek"></category><category term="earthquake"></category><category term="japan"></category><category term="nuclear"></category><category term="science"></category></entry><entry><title>Goodbye Nana</title><link href="https://www.bennee.com/~alex/blog/2011/03/14/goodbye-nana/" rel="alternate"></link><published>2011-03-14T07:44:00+00:00</published><updated>2011-03-14T07:44:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-03-14:/~alex/blog/2011/03/14/goodbye-nana/</id><summary type="html">&lt;p&gt;The weekend was overshadowed by saying goodbye to my Nana on Friday. She was the last of my grandparents to go after reaching the grand old age of 95. Right up to end she maintained her sharp wit and sense of fun. The service was a nice humanist celebration of …&lt;/p&gt;</summary><content type="html">&lt;p&gt;The weekend was overshadowed by saying goodbye to my Nana on Friday. She was the last of my grandparents to go after reaching the grand old age of 95. Right up to end she maintained her sharp wit and sense of fun. The service was a nice humanist celebration of her life and was a reminder of how much harder life was back then, especially raising kids while your husband went of to war. It was slightly surreal to see the whole clan gathered in full. I don't see my extended family as often as I should and funerals are such bittersweet affairs. The sisters had done a wonderful job organising everything including putting out a large selection of pictures from over the years which brought back lots of memories of childhood. She loved her grandchildren and there we were all grown up and saying goodbye.&lt;/p&gt;
</content><category term="general"></category><category term="life"></category><category term="personal"></category></entry><entry><title>Edit with Emacs v1.9</title><link href="https://www.bennee.com/~alex/blog/2011/03/09/edit-with-emacs-v1-9/" rel="alternate"></link><published>2011-03-09T22:22:00+00:00</published><updated>2011-03-09T22:22:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-03-09:/~alex/blog/2011/03/09/edit-with-emacs-v1-9/</id><summary type="html">&lt;p&gt;It's been a while so I thought I'd push out a new version of &lt;a class="reference external" href="https://chrome.google.com/extensions/detail/ljobjlafonikaiipfkggjbhkghgicgoh/publish-accepted"&gt;Edit with Emacs&lt;/a&gt;to the interwebs. Unfortunately I wasn't able to &lt;a class="reference external" href="https://github.com/stsquad/emacs_chrome/commits/interactive_rebase/"&gt;wrangle the edit-server.el&lt;/a&gt; to reliably handle keeping the current frame open for iterative editing. For now this feature is only available via the python …&lt;/p&gt;</summary><content type="html">&lt;p&gt;It's been a while so I thought I'd push out a new version of &lt;a class="reference external" href="https://chrome.google.com/extensions/detail/ljobjlafonikaiipfkggjbhkghgicgoh/publish-accepted"&gt;Edit with Emacs&lt;/a&gt;to the interwebs. Unfortunately I wasn't able to &lt;a class="reference external" href="https://github.com/stsquad/emacs_chrome/commits/interactive_rebase/"&gt;wrangle the edit-server.el&lt;/a&gt; to reliably handle keeping the current frame open for iterative editing. For now this feature is only available via the python server. Patches are of course welcome!&lt;/p&gt;
&lt;p&gt;v1.9&lt;/p&gt;
&lt;p&gt;Extension&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* Support for iterative editing (python server only currently)&lt;/div&gt;
&lt;div class="line"&gt;* Add context menu while in text area box&lt;/div&gt;
&lt;div class="line"&gt;* Fix reference to Alt-E, it's actually Alt-Enter&lt;/div&gt;
&lt;div class="line"&gt;* Trigger a DOM change() event when we update the text area&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;edit-server.el&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* Actively encode responses as UTF-8&lt;/div&gt;
&lt;div class="line"&gt;* Make edit-server-edit-mode a minor mode instead of a derived mode&lt;/div&gt;
&lt;/div&gt;
</content><category term="geek"></category><category term="emacs"></category></entry><entry><title>Holy exponential parking charges Batman!</title><link href="https://www.bennee.com/~alex/blog/2011/03/07/holy-exponential-parking-charges-batman/" rel="alternate"></link><published>2011-03-07T12:53:00+00:00</published><updated>2011-03-07T12:53:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-03-07:/~alex/blog/2011/03/07/holy-exponential-parking-charges-batman/</id><summary type="html">&lt;p&gt;There wasn't much to be achieved at the weekend although I did pick my parents up from their last minute skiing holiday. It did lead to some colourful language when I got tagged by the airports parking scam.&lt;/p&gt;
&lt;p&gt;I carefully timed the drive down to arrive as my parented landed …&lt;/p&gt;</summary><content type="html">&lt;p&gt;There wasn't much to be achieved at the weekend although I did pick my parents up from their last minute skiing holiday. It did lead to some colourful language when I got tagged by the airports parking scam.&lt;/p&gt;
&lt;p&gt;I carefully timed the drive down to arrive as my parented landed. In fact they were slightly early so I move from holding point at the local garage to the &lt;a class="reference external" href="http://www.stanstedairport.com/portal/page/Stansted%5EGeneral%5ETo+and+from+Stansted%5EStansted+parking+options%5EStansted+Short+Stay+Parking/c25992b57c77d110VgnVCM10000036821c0a____/448c6a4c7f1b0010VgnVCM200000357e120a____/"&gt;short stay pick-up parking&lt;/a&gt;. However the airport managed to temporally misplace one of their bags delaying their exit just long enough to push the parked time over to 46 minutes and an eye watering £30 parking charge. A cynic might conclude the two things are related. It would be an interesting exercise to work out how much of the car parks profits are due to slow baggage processing.&lt;/p&gt;
&lt;p&gt;The rest of the weekend was fairly relaxed although I did win brownie points for cleaning the kitchen floor while Fliss was out LARPing. Technically of course it was a left over job from the big pre-spring clean two weeks ago.&lt;/p&gt;
&lt;p&gt;I watched the first episode of [STRIKEOUT:Holiday with Brian Cox]&lt;a class="reference external" href="http://www.bbc.co.uk/programmes/b00zdhtg"&gt;Wonders of the Universe&lt;/a&gt;. I have to say this episode left me a little underwhelmed but possibly because of the glacial introduction of &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Entropy"&gt;entropy&lt;/a&gt; and the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Heat_death_of_the_universe"&gt;heat death of the universe&lt;/a&gt;. I'm hoping the next episode is better because I did enjoy the Wonders of the Solar System. We might have to watch the &lt;a class="reference external" href="http://www.bbc.co.uk/programmes/b006mk7h"&gt;Sky at Night&lt;/a&gt; for a little less dumbed down science.&lt;/p&gt;
</content><category term="general"></category><category term="science"></category><category term="stansted"></category><category term="wonders"></category></entry><entry><title>Book Review: Free as in Freedom</title><link href="https://www.bennee.com/~alex/blog/2011/02/23/book-review-free-as-in-freedom/" rel="alternate"></link><published>2011-02-23T16:13:00+00:00</published><updated>2011-02-23T16:13:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-02-23:/~alex/blog/2011/02/23/book-review-free-as-in-freedom/</id><summary type="html">&lt;p&gt;I've just finished reading &lt;a class="reference external" href="http://www.amazon.co.uk/Free-Freedom-Richard-Stallmans-Software/dp/1441437886/ref=sr_1_1?ie=UTF8&amp;amp;qid=1298472191&amp;amp;sr=8-1"&gt;Free as in Freedom&lt;/a&gt; a biography of &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Richard_Stallman"&gt;Richard Stallman&lt;/a&gt; the founder of the free software movement. The title takes it's name from the oft repeated statement used to highlight that software freedom is not about the price rather what you can do with it.&lt;/p&gt;
&lt;p&gt;The book …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've just finished reading &lt;a class="reference external" href="http://www.amazon.co.uk/Free-Freedom-Richard-Stallmans-Software/dp/1441437886/ref=sr_1_1?ie=UTF8&amp;amp;qid=1298472191&amp;amp;sr=8-1"&gt;Free as in Freedom&lt;/a&gt; a biography of &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Richard_Stallman"&gt;Richard Stallman&lt;/a&gt; the founder of the free software movement. The title takes it's name from the oft repeated statement used to highlight that software freedom is not about the price rather what you can do with it.&lt;/p&gt;
&lt;p&gt;The book itself is relatively short and is easy to read. It combines historical sections describing Stallman's intellectual journey with alternating chapters describing experiences Sam Williams had while interviewing this famously prickly character. As a long time follower of the FLOSS movement I was fairly familiar with the well documented early stories of the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/MIT_Computer_Science_and_Artificial_Intelligence_Laboratory"&gt;MIT AI Lab&lt;/a&gt; and it's demise following the rush to commercialise &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Lisp_machine"&gt;LISP machines&lt;/a&gt;. However Williams adds a lot more emotional colour to the story that left me feeling I had a greater understanding of Stallman's personality. I found it hard not to sympathise with the situation Stallman found himself in and the logic of his actions that ultimately led to the &lt;a class="reference external" href="http://www.gnu.org/gnu/manifesto.html"&gt;GNU Manifesto&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Stallman is often portrayed as a character who divides the disparate FLOSS community. People criticise him for his stubborn intransigence while missing the fact he holds his positions as a result of the logical extrapolation on sincerely held principles. It would be hard to argue that Linux would have taken off as a poster-child for Open Source had the ground work not been laid by Stallman's GNU project. In this light the call to refer to it as GNU/Linux and the importance of understanding the philosophical underpinnings of the movement seems fairly reasonable. After reading Free as in Freedom I do feel as though I have a better understanding of why things turned out like they did. It left me feeling how lucky we are that Stallman was born into this time and wondering how different things would have been otherwise.&lt;/p&gt;
</content><category term="geek"></category><category term="book"></category><category term="review"></category><category term="rms"></category></entry><entry><title>Is it spring yet?</title><link href="https://www.bennee.com/~alex/blog/2011/02/21/is-it-spring-yet/" rel="alternate"></link><published>2011-02-21T16:29:00+00:00</published><updated>2011-02-21T16:29:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-02-21:/~alex/blog/2011/02/21/is-it-spring-yet/</id><summary type="html">&lt;p&gt;Nothing much happened this weekend apart from a complete tidy-up spring clean of the house. This may seem a little premature but when the weather finally does get better we won't have to worry about too much clutter up the house. Fliss' mum came around on Sunday and helped us …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Nothing much happened this weekend apart from a complete tidy-up spring clean of the house. This may seem a little premature but when the weather finally does get better we won't have to worry about too much clutter up the house. Fliss' mum came around on Sunday and helped us Fliss tackle some of the long overdue pruning ahead of the new spring growth that would have left us drowning in overgrowth.&lt;/p&gt;
&lt;p&gt;Oh and Fliss &lt;a class="reference external" href="http://callofduty.wikia.com/wiki/Prestige_Mode"&gt;Prestiged&lt;/a&gt;, for someone who's apparently not a fan of the FPS genre she certainly seems into it!&lt;/p&gt;
</content><category term="general"></category><category term="cod"></category><category term="garden"></category><category term="home"></category></entry><entry><title>Mountains, valleys and the meaning of romance</title><link href="https://www.bennee.com/~alex/blog/2011/02/15/mountains-valleys-and-the-meaning-of-romance/" rel="alternate"></link><published>2011-02-15T13:25:00+00:00</published><updated>2011-02-15T13:25:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-02-15:/~alex/blog/2011/02/15/mountains-valleys-and-the-meaning-of-romance/</id><summary type="html">&lt;p&gt;We spent the weekend in Wales on what has become an annual tradition of post-winter walking loosely organised around a couple of friends birthdays. The location changes every year but this year we were based in &lt;a class="reference external" href="http://lledrhouse.co.uk/"&gt;a hostel&lt;/a&gt; in the Snowdonia National Park.&lt;/p&gt;
&lt;p&gt;By convention there are usually two walks …&lt;/p&gt;</summary><content type="html">&lt;p&gt;We spent the weekend in Wales on what has become an annual tradition of post-winter walking loosely organised around a couple of friends birthdays. The location changes every year but this year we were based in &lt;a class="reference external" href="http://lledrhouse.co.uk/"&gt;a hostel&lt;/a&gt; in the Snowdonia National Park.&lt;/p&gt;
&lt;p&gt;By convention there are usually two walks, higher and lower. I opted for the lower walk to ensure I was back in time to catch &lt;a class="reference external" href="http://news.bbc.co.uk/sport1/hi/rugby_union/9396246.stm"&gt;England's crushing defeat of Italy&lt;/a&gt; in the Six Nations. Fliss decided to skip the higher walk in favour of climbing &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Snowdon"&gt;Snowdon&lt;/a&gt; with Lee. They made it with no major incidents although I suspect it will take a few days for muscles to reach full flexibility again, especially as there was no bath available for post-walk soaking at the hostel.&lt;/p&gt;
&lt;p&gt;I walked to the local pub in &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Dolwyddelan"&gt;Dolwyddenlan&lt;/a&gt; with a couple of the Scottish contingent to watch Wales dominate in their match. The banter with the locals was all in good humour and I was able to claim English neutrality for the whole game :-)&lt;/p&gt;
&lt;p&gt;We sensibly had taken a couple of days of to make this a long weekend and spent Valentines day taking it in turns to level up Fliss' [STRIKEOUT:killing machine]profile in CoD. Fliss assures me it was a most romantic gesture on my part! Our one nod to the local economy on this hallmark holiday was to visit the local for a swift pint before they filled up with romantics enjoying a pub meal. We saw no reason to pay the inflated prices these &amp;quot;special&amp;quot; meals usually incur so I cooked a romantic meal myself. Romance on a budget, no reason to be contradictory concepts.&lt;/p&gt;
</content><category term="general"></category><category term="rugby"></category><category term="walking"></category></entry><entry><title>Still paddling under the water</title><link href="https://www.bennee.com/~alex/blog/2011/02/10/still-paddling-under-the-water/" rel="alternate"></link><published>2011-02-10T12:15:00+00:00</published><updated>2011-02-10T12:15:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-02-10:/~alex/blog/2011/02/10/still-paddling-under-the-water/</id><summary type="html">&lt;p&gt;Don't take the lack of activity on this blog as an indication that life has been quiet, far from it. Work continues to be an exercise of multiple plate juggling. Although most nights I've been either clocking up kills on CoD multi-player or vegging watching DVDs other stuff has happened …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Don't take the lack of activity on this blog as an indication that life has been quiet, far from it. Work continues to be an exercise of multiple plate juggling. Although most nights I've been either clocking up kills on CoD multi-player or vegging watching DVDs other stuff has happened. In brief:&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;* I bought a new PC, pimped out with 16GB of RAM and an SSD it makes a fine development box.&lt;/div&gt;
&lt;div class="line"&gt;* I switched my phone from &lt;a class="reference external" href="http://www.villainrom.co.uk/forum/"&gt;VillianRom&lt;/a&gt; to compiled from source &lt;a class="reference external" href="http://www.cyanogenmod.com/"&gt;CyanogenMod&lt;/a&gt;.&lt;/div&gt;
&lt;div class="line"&gt;* I now own real actual shares (as opposed to maybe-someday-options)&lt;/div&gt;
&lt;div class="line"&gt;* Married life continues to be wonderful&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Fliss has also been very busy doing some long hours in London so a lot of our post-work slobbing has been mutual. However we are both looking forward to a long weekend walking in Wales to blow away the post-Christmas cobwebs.&lt;/p&gt;
</content><category term="general"></category><category term="life"></category><category term="work"></category></entry><entry><title>Memories of 1989</title><link href="https://www.bennee.com/~alex/blog/2011/01/28/memories-of-1989/" rel="alternate"></link><published>2011-01-28T23:05:00+00:00</published><updated>2011-01-28T23:05:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-01-28:/~alex/blog/2011/01/28/memories-of-1989/</id><summary type="html">&lt;p&gt;I remember the fall of the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Fall_of_the_Iron_Curtain"&gt;Iron Curtain in 1989&lt;/a&gt;. It seemed rather surreal as dictatorship after dictatorship fell in relatively quick succession. Some passed with little bloodshed, some went through more violent phases but in the end it changed the face of Eastern Europe. It was certainly exciting for …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I remember the fall of the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Fall_of_the_Iron_Curtain"&gt;Iron Curtain in 1989&lt;/a&gt;. It seemed rather surreal as dictatorship after dictatorship fell in relatively quick succession. Some passed with little bloodshed, some went through more violent phases but in the end it changed the face of Eastern Europe. It was certainly exciting for a 16 year old boy to watch unfold especially as I'd been raised with the spectre of nuclear war and faceless totalitarian states. All of this happened with nothing more than word of mouth and a few &lt;a class="reference external" href="http://en.wikipedia.org/wiki/World_service"&gt;foreign radio stations&lt;/a&gt; reporting what they could.&lt;/p&gt;
&lt;p&gt;Watching &lt;a class="reference external" href="http://www.bbc.co.uk/news/world-middle-east-12307698"&gt;events unfold in Egypt&lt;/a&gt; and the wider Arab world you would think the ability to organise and co-ordinate offered by modern communications mean the days of Middle Eastern dictatorships are numbered. However I'm not so sure. While it's true that more people than ever have the ability to access the Internet and mobile communications they are networks that are &lt;a class="reference external" href="http://bgpmon.net/blog/?p=450"&gt;controllable&lt;/a&gt; for the most part. There are always ways around these blocks but by denying it to the majority it severely hampers peoples ability to co-ordinate. They certainly don't have anything near the facilities available to them that our Students did during the recent student fees protests. I hope I'm wrong and the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Darknet_(file_sharing)"&gt;darknets&lt;/a&gt; are in place and cobbled together networks are playing their part in helping people organise.&lt;/p&gt;
&lt;p&gt;What is clear that the only people that can do anything about it are those inside the affected countries. Western governments can only offer warm words with the appropriate diplomatic hedging just in case the dictators manage to hang onto power for the time being. The rest of us just get to watch.&lt;/p&gt;
</content><category term="general"></category><category term="internet"></category><category term="middle-east"></category><category term="politics"></category><category term="world"></category></entry><entry><title>Sound of Drums</title><link href="https://www.bennee.com/~alex/blog/2011/01/27/sound-of-drums/" rel="alternate"></link><published>2011-01-27T11:02:00+00:00</published><updated>2011-01-27T11:02:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-01-27:/~alex/blog/2011/01/27/sound-of-drums/</id><summary type="html">&lt;p&gt;Yesterday I spent most of the day at the companies annual conference. It's quite a good day as we bring the whole company together in Cambridge so we catch up with the guys working overseas. The first half of the day is the usual discussion about the state of the …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Yesterday I spent most of the day at the companies annual conference. It's quite a good day as we bring the whole company together in Cambridge so we catch up with the guys working overseas. The first half of the day is the usual discussion about the state of the company and discussing our objectives for the next year. Luckily the business of &lt;a class="reference external" href="http://www.cbnl.com/product/"&gt;shifting bits&lt;/a&gt; seems to be something that is still in demand, whatever direction the economy is heading in. Of course after hitting our targets last year we have even higher targets to achieve this year, there is always another mountain to climb it seems.&lt;/p&gt;
&lt;p&gt;The afternoon session was fun. We came back into theatre to find &lt;a class="reference external" href="http://www.drumcafe.co.uk/"&gt;some guys&lt;/a&gt; banging away and drums and &amp;quot;tuned rhythm pipes&amp;quot; on every seat. Without prompting we soon had the whole company making a lot of surprisingly rhythmic noise and joining in. It was a great two hours although my fingers are feeling it slightly this morning. After the finale we all decamped to one of the local bars where free food and booze and funk had been laid on. It's one of the thing I enjoy about smaller companies where you can reasonably know most of the company and get a genuine sense of camaraderie.&lt;/p&gt;
</content><category term="general"></category><category term="cbnl"></category><category term="drums"></category><category term="work"></category></entry><entry><title>Busy busy bee</title><link href="https://www.bennee.com/~alex/blog/2011/01/25/busy-busy-bee/" rel="alternate"></link><published>2011-01-25T11:14:00+00:00</published><updated>2011-01-25T11:14:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-01-25:/~alex/blog/2011/01/25/busy-busy-bee/</id><summary type="html">&lt;p&gt;One reason my posting rate has dropped off so massively is I've been really busy at work. So busy that my capacity for intellectual thought in the evening is reduced to slobbing on the sofa watching DVDs or occasionally firing up CoD in split-screen and killing people with my wife …&lt;/p&gt;</summary><content type="html">&lt;p&gt;One reason my posting rate has dropped off so massively is I've been really busy at work. So busy that my capacity for intellectual thought in the evening is reduced to slobbing on the sofa watching DVDs or occasionally firing up CoD in split-screen and killing people with my wife.&lt;/p&gt;
&lt;p&gt;While I delivered my main project more or less on time at the beginning of January it's having more teething problems than most releases. This is in part due to it being a rather major upgrade, including the base OS being upgraded. However I have also just been given extra responsibilities for a part of the embedded product which has rather aggressive deadlines of it's own. We were hoping to go skiing at the end of February/Early March with the rest of the family but until I get a handle on things it's hard to predict if we can.&lt;/p&gt;
&lt;p&gt;I suppose with everything else that's going on it's good that we are so busy because we can't &lt;a class="reference external" href="http://www.cbnl.com/jobs/"&gt;hire engineers fast enough&lt;/a&gt; as the company is growing quite strongly. There are worse problems to have I'm sure.&lt;/p&gt;
</content><category term="general"></category><category term="jobs"></category><category term="life"></category><category term="work"></category></entry><entry><title>Booze</title><link href="https://www.bennee.com/~alex/blog/2011/01/18/booze/" rel="alternate"></link><published>2011-01-18T10:46:00+00:00</published><updated>2011-01-18T10:46:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-01-18:/~alex/blog/2011/01/18/booze/</id><summary type="html">&lt;p&gt;Finally a non-technical post, although less about my life and more of a comment on the world.&lt;/p&gt;
&lt;p&gt;I feel as though I'm on fairly safe ground saying most of my readers have been hungover. It would still be a fairly safe bet to say most people have been hungover many …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Finally a non-technical post, although less about my life and more of a comment on the world.&lt;/p&gt;
&lt;p&gt;I feel as though I'm on fairly safe ground saying most of my readers have been hungover. It would still be a fairly safe bet to say most people have been hungover many times. Learning to drink responsibly takes a lot of practise it seems.&lt;/p&gt;
&lt;p&gt;Thinking back to my salad days I can think of a number of occasions when I've failed to carry myself in a manner that I would consider civil. However I have to fight the temptation to harshly criticise the current bane of society, the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Binge_drinking"&gt;binge drinker&lt;/a&gt;. is the problem really as bad as the media points out? Are the majority* of the current crop of wasted people found on our streets on Friday and Saturday night just doing what I did, slowly navigating their way to a more balanced use of alcohol? Has it always been thus? Is my transformation to old curmudgeon complete?&lt;/p&gt;
&lt;p&gt;The government &lt;a class="reference external" href="http://www.bbc.co.uk/news/uk-politics-12212240"&gt;announced their minimal minimum pricing for alcohol&lt;/a&gt; today. The reaction so far has been muted, most campaigners saying that it isn't going far enough. I'm personally happy because this attempts to remove the sale of alcohol at bellow cost levels in supermarkets (which affects struggling pubs) without attempting to be yet another sin-tax. However will it have any effect on the nations drinking habits? I'm less convinced, but then again I'm not convinced price is the main reason people get quite so sloshed at the weekends.&lt;/p&gt;
&lt;p&gt;What do you think? Do we have a problem that needs fixing? How else can we do it?&lt;/p&gt;
&lt;p&gt;* There are groups for which alcohol leads to fights and criminal damage. I have no problem with dumping them prison cells and prosecuting them for crimes committed under the influence. Being pissed it not an excuse.&lt;/p&gt;
</content><category term="general"></category><category term="alcohol"></category><category term="booze"></category><category term="drinking"></category></entry><entry><title>Baseline Codecs for web video</title><link href="https://www.bennee.com/~alex/blog/2011/01/17/baseline-codecs-for-web-video/" rel="alternate"></link><published>2011-01-17T13:15:00+00:00</published><updated>2011-01-17T13:15:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2011-01-17:/~alex/blog/2011/01/17/baseline-codecs-for-web-video/</id><summary type="html">&lt;p&gt;A lot of 'net comment has been generated in the last few days following &lt;a class="reference external" href="http://blog.chromium.org/2011/01/html-video-codec-support-in-chrome.html"&gt;Google's announcement&lt;/a&gt; that they will be dropping support for &lt;a class="reference external" href="http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC"&gt;H.264&lt;/a&gt; in future versions of their Chromium browser. They expound on their decision &lt;a class="reference external" href="http://blog.chromium.org/2011/01/more-about-chrome-html-video-codec.html"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In making this move they &lt;a class="reference external" href="http://blog.mozilla.com/blog/2009/01/26/in-support-of-open-video/"&gt;join the ranks of Mozilla&lt;/a&gt; in supporting …&lt;/p&gt;</summary><content type="html">&lt;p&gt;A lot of 'net comment has been generated in the last few days following &lt;a class="reference external" href="http://blog.chromium.org/2011/01/html-video-codec-support-in-chrome.html"&gt;Google's announcement&lt;/a&gt; that they will be dropping support for &lt;a class="reference external" href="http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC"&gt;H.264&lt;/a&gt; in future versions of their Chromium browser. They expound on their decision &lt;a class="reference external" href="http://blog.chromium.org/2011/01/more-about-chrome-html-video-codec.html"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In making this move they &lt;a class="reference external" href="http://blog.mozilla.com/blog/2009/01/26/in-support-of-open-video/"&gt;join the ranks of Mozilla&lt;/a&gt; in supporting Open Video in web-pages. The trouble with H.264 is that while it is a documented standard it's not a free one. To implement a H.264 &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Codec"&gt;codec&lt;/a&gt; you have to use patented techniques that are controlled by the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/MPEG_LA"&gt;MPEG-LA&lt;/a&gt;. Despite claims that licenses will be given away freely for decoding non-commercial video it doesn't meet the requirements of Free Software which needs to be able to distribute implementations freely and without additional restrictions. It's a problem the Open Source world has been talking about for years and it's good that Google are bringing these concerns to a wider audience.&lt;/p&gt;
&lt;p&gt;For all practical purposes the change will have little effect for my day to day browsing. I can already view pretty much any video format on my Linux Desktop and if Chromium has to pass decoding to a plugin instead of doing it within the browser I probably won't even notice. This will have more of an effect on Apple's &lt;a class="reference external" href="http://en.wikipedia.org/wiki/IOS_(Apple)"&gt;iOS&lt;/a&gt; devices (iPhones and iPads) when places like YouTube switch to using either &lt;a class="reference external" href="http://en.wikipedia.org/wiki/WebM"&gt;WebM&lt;/a&gt; or fall back to a Flash based player. Even today you can't browse a large amount of media on Wikipedia which favours &lt;a class="reference external" href="http://commons.wikimedia.org/wiki/Commons:File_types"&gt;free software compatible audio and video formats&lt;/a&gt;. That is because Apple refuse to add support for these alternative codecs to their mobile OS. Not surprisingly they also have a vested interest in H.264 becoming the de facto format for video on the web being one of the many licensees represented by the MPEG-LA.&lt;/p&gt;
&lt;p&gt;It's noticeable that the majority of the comments on Google's blog involve people throwing their Chrome shaped toys out of the pram and returning to Safari. Windows users will I assume have the same ability as me to handle formats via plugins instead of native browser support. It does lead me to think that their anger is somewhat misdirected when aimed at Google.&lt;/p&gt;
&lt;p&gt;A number of people have pointed out there is a degree of hypocrisy in Google's stated support for open web standards while their browser (in non-free software form) still supports Flash and MP3s which have similar issues. I'm willing to concede this isn't ideal from a software freedom perspective. However I'm happy to accept their pragmatic point about this being a statement on support for open codecs for the emerging &amp;lt;video&amp;gt; tag without wanting to cripple the browser for the amount existing content out there. Now is very much the time to make stand over video lest we repeat the mistakes of MP3's and GIF's in the rush of companies to stake out their own little revenue generating area of what should be the free and open standards that underpin the web.&lt;/p&gt;
</content><category term="geek"></category><category term="codecs"></category><category term="google"></category><category term="h264"></category><category term="open"></category><category term="standards"></category><category term="video"></category><category term="web"></category></entry></feed>