atomicules

Push propelled program tinkerer and picture maker.

LINK: Tenor Fly in Memoriam on The Remix

Right at the start.

Doing that catch-up thing and so I didn't realise until today that Tenor Fly had died. What a crap year for musicians.

If you don't know, Tenor Fly is (for me anyway) pretty synonymous with The Freestylers. And that, of course, is what this show opens with.

Note: Been well over a month now since cycling regularly. I am now a normal human being and no longer crave 4000+ calories a day

Uncollected Thoughts on Anna Karenina

  • If you fancy reading Tolstoy, but don't want to read War and Peace (because it's too big or too obvious) then Anna Karenina is a good choice: It has short (toilet-sized) chapters and is easy to read.
  • Because it is easy to read I didn't find the prose particularly beautiful or profound though.
  • Tolstoy does stream-of-conciousness better than James Joyce.
  • I thought I was going to guess the ending (thanks to the blurb on the back, "it ends tragically"), but didn't.
  • Despite the size and sometimes unwarranted detail on supporting characters and situations, you are still left wondering a lot about what happened afterwards to other characters.
  • The continuing theme that contrasts and shows conflicts between country and city living struck a chord with me. Where is better for the soul? Country living is hard and perhaps keeps you too busy to think too much, but is that a good thing? This is something we are thinking about at the moment as a family.
  • A couple of times a question is posed as to whether parents should sacrifice everything for their children or whether the parents should have the fineries in the life whilst the children get by with less. There is talk about a swing from one to the other in a generation; I wonder if it is cyclic? Certainly, for me, the past six years have felt very much like "Parents now are not expected to live at all, but to exist altogether for their children"; Although I would say that expectation comes not so much from other parents, but from the children. Natalia Alexandrovna gets it right: "No, extremes are not good in anything".

The New Push

Possibly because I can't be bothered with a re-design of my website, push is going to be used for running*. Hey, if a push-bike is so called because you push the pedals with your feet (well, historically the floor with your feet), I am now pushing the floor directly with my feet so I can't see why it can't work.

When news came that I'd no longer be cycling the directive was "don't get fat". Seeing as how I have struggled to justify the costs associated with cycling when I needed one for work, I didn't think it'd stand much chance as a hobby. Mainly, though, I wanted a break from cycling, so opted for running because my sole expense has been £70 on a pair of last season's running shoes. Decent shoes, mind you; My last experience of significant running was in a pair of non-running shoes and it crippled me for days; The difference in running with proper shoes is amazing - no pain.

Because my years of skateboarding have destroyed my ankles and knees I knew I wanted to ease myself into running and so decided to follow Couch to 5K, even though I'm pretty much the direct opposite of a coach potato. This had the added bonus of my wife deciding to join in with me; As far as I can tell, my wife's motivation mainly seems to be so she can outrun random axe murderers. So far we are five weeks through the programme and it is going brilliantly for both of us. Really can't fault it as a programme; I am itching to do some faster/longer runs, but I'm going to stick to it so as not to wreck myself.

I might actually regain my posture now.

* - Cycling hasn't gone forever, just (hopefully) for a long time

An Apathetic Review of Vittoria Cross XL Pros

It's not because they're not good, it's just because I can't be bothered reviewing them. I intended on doing a review similar to the Vittoria XGs, but these aren't going to get to 1600 miles for a long time. These ones are going to be as per what a normal person is like with bicycle tyres: Fit and then forget.

I mainly got the XLs just because I fancied a change from the XGs and at the time I switched it most certainly wasn't the right time of the year for the XNs (I'm a bit sad I never got to try those). I had hoped that the XLs might be a bit faster on smooth surfaces (roads) because the centre tread pattern is more continuous than the XGs, but I honestly noticed no difference - if anything slightly higher rolling resistance, but that could easily be my imagination as it is hard to compare to a tyre from half a year previously.

And so that's my review: Not really any better or worse than the XGs.

The Last Commute

It was over a month since the penultimate one. Felt a bit funny to be getting on the bike again, but it wasn't too windy and the weather was nice. And it all went well: No mechanical issues.

So that's it done. I'd worked out that if I'd made it until July, my sixth year anniversary, I would have done the same round-the-world miles as this guy, in the same time period, but whilst still holding down a full time job, being a parent and doing all the additional chores that come with all the animals we have. And most of it on a shittier fixed gear bike.

But I didn't make it until July so I can't claim that. I'm a bit sad that none of that ever qualified me for a decent bike and if that didn't nothing ever will. I'm not disappointed though - at all: I've done enough.

Note: The last cycle commute. EVER. Done!

LINK: Freestylers Double on The Remix

From 57:40 to 01:08:00.

Because I've not been at work and I had a bit of time before I got my new NetBSD machine up and running I ended up with quite a few weeks of The Remix to catch up on. This show is from May and includes two(!) Freestylers tracks. Holding On is a new one and the second is a remix of Anastasia's T99 by The Freestylers.

You know, these actually aren't that great (still good) for The Freestylers, but seeing as how Eddy Temple-Morris is the only DJ I've ever heard who consistently plays Freestylers I'm certainly going to mention them here.

Simplenote.py now Python 2 and 3 compatible

Hot on the heels of the changes to the underlying Simplenote.py, Simplenote.vim is now Python 2 and 3 compatible. Ok, that's a lie. The same fate befell me: I assumed it would be tricky and complex to do (not least because I needed to build a separate version of Vim with only Python 3), but in the end it was actually quite easy and I really should have done it sooner than fourteen months later.

Some of the key points this time round:

Using pyfile instead of embedded code

Simplenote.vim makes use of embedded python code identified with endmarkers, like so:

python <<< ENDPYTHON
    #python code here
ENDPYTHON

but Vim requires you use the appropriate call for the version of python you have and will error if you call a version you don't have. I.e. for python 3 you must use

python3 <<< ENDPYTHON
    #python3 code here
ENDPYTHON

This potentially was going to lead to huge chunks of duplicated code as you'd need a setup like follows:

if has("python")
    python <<< ENDPYTHON
        #python code here
    ENDPYTHON
elseif has("python3")
    python3 <<< ENDPYTHON
        #Very similar python3 code here
    ENDPYTHON
endif

Fortunately, at least I think so, using these has calls means Vim will load the first available python, but not both, which is what I want. I'm not sure how many people are likely to have vim compiled with support for both though; it was only just recently when I came across the first person who had python 3 support instead of python 2. I guess I'll await the bug reports.

To get around the duplication I used pyfile instead, like follows:

if has("python")
    execute 'pyfile ' . s:scriptpath . "/samefilefor2and3.py"
elseif has("python3")
    execute 'py3file ' . s:scriptpath . "/samefilefor2and3.py"
endif

cmp_to_key

I thought this would be my stumbling block, as Python 3 no longer has a cmp function for sort, only accepts a much more simplistic key, and Simplenote.vim uses quite an extensive compare function for sorting notes in the list index. Fortunately, from version 3.2 onwards there is a cmp_to_key function provided by functools so I could just do:

notes.sort(key=functools.cmp_to_key(compare_notes))

I think I can be pretty confident that anyone who has Vim compiled against Python 3 only will have a recent version of Python 3.

Python 3 changes that work fine under Python 2

  • print statements need brackets (parentheses) under Python 3. They are optional under 2.
  • iteritems doesn't exist under Python 3, instead you just call items. For the Simplenote.vim use of iteritems, using just items under Python 2 worked fine.
  • Python 3 requires you use list on map to return the actual content (otherwise you just get a map object). Python 2 doesn't require this, but including it anyway causes no harm.
  • No more has_key, but that has been depreciated for a long time anyway. Just use in instead, works everywhere.

Really the only excuse for not writing Python 2 and 3 compatible code is laziness.

See commits 9a2234d to c916606 for more detail.

The Picture Came To Stand Still

"He had enough taste for painting to be unable to finish his picture. The picture came to a standstill. He was vaguely aware that its defects, inconspicuous at first, would be glaring if he were to go on with it."

Anna Karenina by Leo Tolstoy

I am mostly just enjoying Anna Karenina as a story and not finding anything too profound in it, but this bit stood out to me. Wonder if Tolstoy had himself in mind here or perhaps his compatriots? Certainly struck a chord with me and not necessarily just with art, but anything in general where we give up through fear of failure rather than actual failure itself.

LINK: NetBSD Current-Users archive: /var/db/entropy-file not present

For some reason I never noticed this on the ye-olde laptop (it was running NetBSD 6.1.3, but I don't think that was why), but on this NetBSD 7 machine I noticed this exact error message on boot. Even if I manually created it using sudo rndctl -S /var/db/entropy-file it would still disappear at some point.

After reading this thread I now understand why and what is meant to happen:

  1. When the system shuts down the entropy-file should be created
  2. When the system next boots the entropy-file is loaded and then deleted

It turns out I'd also been falling foul of shutting down incorrectly: I've always used poweroff. I don't know where I learnt that from, but I never realised I should be using shutdown -p now instead because poweroff doesn't run the shutdown scripts. Whoops.

Phoenix Assumes That Our Postgrsql Database Will Have A Postgres User

"Phoenix assumes that our PostgreSQL database will have a 'postgres' user account with the correct permissions and a password of 'postgres'. If that isn't the case, please see the instructions for the ecto.create mix task."

Alternatively, just edit the .exs files in config/.

On NetBSD the default PostgreSQL user is called pgsql. Rather than add yet another user to PostgreSQL you can just edit the Phoenix config files. I pulled out the username and password details from config/dev.exs, config/prod.secret.exs and config/test.exs and added this to the top of config/config.exs instead (just after use Mix.Config):

# Configures the database
config :hello_phoenix, HelloPhoenix.Repo, adaptor: Ecto.Adaptors.Postgres,
  username: "pgsql",
  password: "pgsql"

This, for example, is what remained in config/test.exs:

# Configure your database
config :hello_phoenix, HelloPhoenix.Repo,
  adapter: Ecto.Adapters.Postgres,
  database: "hello_phoenix_test",
  hostname: "localhost",
  pool: Ecto.Adapters.SQL.Sandbox

These are the ten most recent posts (not counting the note drivel), for older posts see the Archive.