Monday, December 12, 2011

Techy post

I appologise for how techy and geeky and boring this post is.

I even find it so myself.

But I need to get this off my chest, so I can actually write about interesting stuff later...

And some geeky people may actually find something comprehensible in here.  Perhaps even interesting.

If you want to read it, then if your eyes glaze over with techiness, then stop reading, drink a glass of water, scroll down to 'And another thing', and read from there.

So then.

Most of my recent work has been on the website.

It's a site I put together with David when I visited OMNIvision 4 years ago (now that seems weird!).  We put it together in about 2 weeks, based on a well known large complex CMS (Content Management System) called Joomla, which was the OM standard web-site-software-package, a few very large complex modules for that, specifically "VirtueMart", plus a bunch of my own hacks in php/javascript, plus a load of very clever HTML/CSS from David.  Since then, I'd done a few fixes for them, logging on from a 'net cafe in Singapore, and when Becky and I arrived at OMNIvision 2 years ago, it was basically in the same state.

The trouble was that in the 2 years since we'd put it together, the internet had changed quite a lot, and we hadn't had the time to really work on OMNItube to change with it.  Joomla had advanced significantly, as had Virtuemart, and alas, we couldn't smoothly upgrade to the latest versions of those without majorly breaking everything.

About a year ago (from now), I decided it was about time to do something about this, as I was scared that a now 3 year old install of joomla/etc without being able to have security updates was a bit scary.  Especially as we wanted to sell videos online, and DVDs, and so were doing credit-card type security stuff.  And the system admin wanted to upgrade the server, and I thought doing that would probably break everything again.

I spent about a week trying to upgrade things to the latest versions of joomla and virtuemart.  Some bits I got almost close to working, but in the end it just totally bogged me down.  Joomla + Virtuemart + all the plugins and modules which were installed to make everything work as we wanted ended up at around 7000+ files, and 800'000 lines of code.  Not joking.  So tracking down bugs and errors and trying even to find which function I was looking for took forever, and I simply don't have a big enough brain to hold that much in my head at once.

So after a week or two of working hard to try and upgrade things, I gave up, it was just too big a job for me to do on my own.  I'd made no progress, and it was still a big stinkin' mess.

We also had some new features we wanted to get working. Specifically, iTunes subscriptions, XML sitemap, facebook commenting/liking/etc, and related product lists.  The "search" system was also very broken, giving pretty much useless results most of the time.

I'd just read an article online about making stuff simpler, 'the no-framework framework' or something like that.  And looking at the SQL database, I figured I could write the iTunes and sitemap features we wanted in just pure basic php.  So I did.  It took about 3 days, which was pretty good, I thought, considering I'd not really done significant amounts of programming in about 4 years.

So then – perhaps alas? – I thought, well, why not re-write the whole of OMNItube in a similar manner?  I mean, how hard can it be?  It's a very simple website, after all....

In 2 weeks after that, I'd put together a quick 'demo' of the site, which took it's data from the joomla database, had all the basic functionality of the front end,  but in 700 lines of code, TOTAL.  No Joomla, No Virtuemart, nothing.

OK, so it was only the front end, if you wanted to actually add a new video or something you needed to edit the database manually, rather than use the horrendously over-complex somewhat-broken-by-our-CSS-mods joomla back-end, but hey!

700 lines of code is something I can hold in my head, no problem.  Way better than 800 thousand!

So anyway, that's been the big project for me, over the last year.  It's taken me 3 re-writes, which is what took so long.  I really should have spent a lot longer learning stuff and looking at alternatives before launching in to it as I did...

I first wrote it doing all the SQL in-line, sort of saying "I need a list of the products, so the SQL for that is SELECT...blah.blah.blah" and so writing it then and there.  Which works for very simple stuff.  But I began to find patterns, of course, and so wrote functions and classes to abstract stuff out, which was good!  But each time I did something like that, it meant re-factoring and writing stuff I'd already done, to make use of the new abstract methods I was coming up with.

Eventually, though, it was all working, pretty much.

 I slowly switched over bits of the live system to my new creation over time,  so the video embedding system was first, then the iTunes feeds, then the front end, eventually, and finally I was able to delete the joomla system, and run entirely on my much smaller simpler pure-php non-frameworked version.  I guess about 6 to 8 months ago?

So after the crazy summer, I did a bit of cleaning up, backups, version-management, etc, And a guy called Chris came to work with us, who is interested in doing web / programming stuff.   So I chatted with him, showed him OMNItube, as it was then, and told him about my future plans.

I'd found a cool looking database library for PHP called 'Propel', which did much of the grunt work of doing SQL database querying instead of us having to do it.  I thought it looked cool, and would save us a lot of work in the future, and so Chris started work on porting OMNItube over to using Propel.  He also figured out a bunch of stupid stuff I'd been doing before, and found much better, simpler ways to do it.  Templating things, for the big example.

In some ways, I'd not really wanted to be working on any more OMNItube stuff for a while though.. I kind of thought 'it's working, I should probably just leave it until next year or something'.  But then after Chris left, I wanted to get his project all merged in to the main system, and not leave things in a mixed state, with 2 versions, his almost-done version, and the online-one with changes to it that I'd needed to make since he started....

Anyway.  I've spent the last few weeks hacking hard at OMNItube, until now it's stable and running well using the new Propel based system.  It's much simpler, much better, the administration/back-end thing is very cool, and generally just works great.

The whole thing is now 7000 lines of PHP, plus a few hundred of javascript and html, but still, that's quite manageable, and I'm reasonably happy with it.  I've even open-sourced one of the smaller more generic bits of the system, and plan to put a few more modules online too, in the hope other people can find them useful in the future.

I've learned a lot, during this project.  I understand from experience a load of programming concepts a lot better than I used to before.  I've learned quite how much I dislike PHP, for one thing.  It really is a botch on top of a hack on top of a temporary way to fix a problem.  If I were starting the project now, I think I would pick a cleaner, simpler, better language.  Possibly ruby, python, LISP, javascript, perl5, or even haskell.

Another thing though, I'm really bored of web development.  It's so much effort, and in the end, all you're left with is a bunch of patterns of pixels on a screen.

I SO miss acting, theatre, drama, etc.

And the trouble is, after a day fighting with programming problems, I don't then feel capable of doing anything creative.  It's like my brain has just given up, as has my emotional capacity to care about creativity.  All I want to do is crash, which isn't very nice for Becky, nor very helpful in building relationships, in staying up to date with anything actually interesting, or in keeping in practice with Clarinet or juggling or writing plays or whatever else I'd prefer, if I were less frustrated and computered-out to actually do.

Writing, for instance.  When I've been writing code, or trying to write code all day, I have no ability to write on this blog, say.  Or write newletters, or emails, letters, or even SMSs.

I've not really touched OMNItube now in about a week, which is why I'm able to write this post... but even still, I'm not quite able to break my brain out of that mould enough to write about anything interesting... all I can do is write about writing code.

Which I guess is a step in the right direction.

I'll write a more general, non-techy post soon

Friday, October 07, 2011

There is a reason...

There is a reason why I prefer text based / commandline / unix interfaces.

"Why?" You may ask?

So I had to update a website – basically changing from '2011' to '2012' – for someone.  Once I got in to the file manager (web based) I could find the graphics files to replace, reasonably easily, and upload new ones.

But I needed to update the text of the banner.  No .html files, or .inc or anything to edit.

So I went to the "WYSIWYG" editor section of the site.  I could edit everything, except that part.  And the footer.  And the page title. So, I could edit the "articles", but not much else.

After hunting around for a while, I decided to try the "Website Management" area.  Total different interface again, loads of settings boxes and tabs.  I found there on different pages where I could set the page title, and so on.  But I couldn't find the banner! Anywhere!

Eventually, this morning, I found it.

In "Website Management" -> "Structure" -> "Website Settings" -> "Code Injection" -> "Advanced" -> "Site Banner HTML Override -- Edited"

I hadn't found it before, because the section I needed was "Site Banner HTML Override", and to find that, I needed to look through a drop-down box which was displaying "Extra Header Code (within )" with some javascript includes.


What is wrong with just having a bunch of text files, and then letting me type

"grep 2011 *"

And it giving me a list of files to edit?  HOW is this graphical interface any easier?

OK.  So 'grep' isn't common English, I know.  Learning basic unix does have a steep looking learning curve.  At first.

In case you're interested, I started, months and months ago, writing an "English-like" command shell.

So you could type commands like:

"list all files which contain 2011"

and it should tell you.

It's on sourceforge, the first alpha versions of the code.

The whole idea of 'natural language' interfaces fascinates me.  I should work on daftshell again, one of these days.

So. Yeah.  Graphical "easy" systems aren't always easy.

Friday, September 09, 2011

Windows Movie Maker

I wrote this a few months ago in a prayer meeting.  I know.  Very holy of me.

Windows Movie Maker [C:\Program Files\Movie Maker\MOVIEMK.exe] is a highly virulent productivity virus.  Not only effecting the computer it is hosted on, but having a socially engineered payload which self-propagates through USB sticks, video/data projectors, and various presentation media.

Reports have come in of this virus' unique capability to be transmitted through analogue forms such as VHS tape, and occasionally film.

  • Audience hypnotism
  • Hours of time wasted by 'editor' and 'viewers'
  • Computer lock-ups and data-loss
  • Lowered expectations of quality
  • Copyright infringement
  • Physical injury
  • Death
Response Actions:
[small print.  Dear lawyers, et al.  This is what's known as parody.  Just like the word 'Movie' is in the program title.  In other words, a joke.]

Wednesday, June 22, 2011

Beauty in the eye of the beholder?

"Beauty is in the eye of the beholder"... or is it?

By saying it is, we say beauty is only a subjective quality.

But by saying it isn't – by saying that something may be beautiful without our being able to appreciate it as beautiful – we divorce ourselves from our experience and our association between words and description...

Is it possible to say

"It's beautiful, but I don't like it."

Which I think I may have said, from time to time. In that I can see elements and aspects which, maybe I know, are considered beautiful, or perhaps I can see an underlying elegance and purpose, but aesthetically I find it displeasing... Some of Rembrant's paintings would fall in to this category.

The thing is, am I just susceptible to the cultural conditioning of my upbringing in saying something like this? I have preconceived notions of what is beautiful and what isn't? But then, my aesthetic sense is also formed (to a large degree) by the same...

So there's a whole philosophic field based around these very questions.

But I guess I'm kind of wondering... how variable language is. How our thoughts are modified by the language and words we use, and yet the language and words we use are modified and morphed by our thoughts.

So often, everything seems so vague, so fuzzy, so indefinable, so inexplicable, so possibly variable, so uncertain and indefinate, and so futile. *sigh*

Tuesday, May 31, 2011

You become your parents,

Or so they say.

And hereby, I think I will prove it true, to some degree:

Yes, I'm blogging pictures of settlers games, and home made food.

Now for some context.

So we got back from honeymoon two weeks ago - which means we've been married now for a month! Incredible.

Honeymoon was amazing - the perfect holiday, I think. We stayed in this gorgeous cottage / gatehouse / lodge , in Gatehouse of fleet:

Went for loads of walks (Dumfries & Galloway are lovely!):

(where I took quite a few photos of flowers and insects, cos it's cool)

Yeah. Honeymoon was cool! I thoroughly recommend it. Getting married first is a pretty good idea, too.

We visited Cream of Galloway who make icecreams:
(I love this photo!!! Becky isn't so keen on it though. heh heh heh)
Drank lots of coffee:
(I figure if I put a funny one of me, I'll get less flak for putting a crazy one of Becky...)
The house had a log fire,
where we made smores:

And generally had a wonderful time. Thanks to everyone who came to the wedding, helped us in so many ways, and gave us gifts and all that cool stuff. Getting married is awesome! Being married is even better.

So now we're back, we've been playing with some new kitchen toys (real chef knives, a blender, breadmaker, new plates and bowls and pans and pots and a yoghurt maker... wow! I feel really thankful and very embarrassed in a good way...). Thus the food pictures:

(making pancakes using a blender to make the batter - is this the ultimate in laziness? Whatever - it's fun! :-) )
Yes - we're having fun. Not having to walk half an hour home each night is VERY nice too. I may well post more pictures too, as I slowly sort them out. We haven't actually got all the pictures back from the wedding, we've seen some of them, but I'll post some of those too, later.

Wednesday, April 27, 2011



Thursday, March 10, 2011

Jesus' teaching

Sometimes it seems a bit scattered - all over the place. I'd wondered for a while about the sermon on the mount, as He seems to jump from one topic to another in a somewhat haphazard manner.

Check this out:

ESV Bible - Matthew 7:1-14
Judging Others

"Judge not, that you be not judged. For with the judgment you pronounce you will be judged, and with the measure you use it will be measured to you. 3 Why do you see the speck that is in your brother’s eye, but do not notice the log that is in your own eye? 4 Or how can you say to your brother, 'Let me take the speck out of your eye,' when there is the log in your own eye? 5 You hypocrite, first take the log out of your own eye, and then you will see clearly to take the speck out of your brother’s eye.

"Do not give dogs what is holy, and do not throw your pearls before pigs, lest they trample them underfoot and turn to attack you.

Ask, and It Will Be Given
7 "Ask, and it will be given to you; seek, and you will find; knock, and it will be opened to you. 8 For everyone who asks receives, and the one who seeks finds, and to the one who knocks it will be opened. 9 Or which one of you, if his son asks him for bread, will give him a stone? 10 Or if he asks for a fish, will give him a serpent? 11 If you then, who are evil, know how to give good gifts to your children, how much more will your Father who is in heaven give good things to those who ask him!
The Golden Rule
12 "So whatever you wish that others would do to you, do also to them, for this is the Law and the Prophets.

13 "Enter by the narrow gate. For the gate is wide and the way is easy that leads to destruction, and those who enter by it are many. 14 For the gate is narrow and the way is hard that leads to life, and those who find it are few...

This is how the ESV sets out the passage. As you can see, it's nicely broken up in to paragraphs, with nice easy to spot headings, different verse numbers, etc. Usual Bible Printing Style(.css). Same as the NIV, KJV, NASB, and most other Bibles you find these days.

The trouble is, I can't imagine Jesus teaching quite like that. No pauses, just "1,2,3,59,60,61,10008,10009,10010" kind of thing.. No "Oh yes. By the way..." between totally unrelated topics.

Yes, OK. So they're all related to love, and relationships. Kind of.

Try and find something Jesus said that isn't, in some manner of speaking.


I was trying to figure this out.

In our study group, we're using John Stott's notes, which give a rough interpretation as follows:

1-5, "Don't judge others"
6, "Don't waste your time trying to preach to unbelievers who refuse to believe."
7-11, "Ask God for stuff, and He'll give it to you."
12, "The Golden Rule".
13-14, "You must believe the right doctrine!"
15-..., "False prophets, etc"

Which although it fits nicely with the verse numbers, and the named paragraphs, jumps all over the place in terms of topic.

So Here's my take.

What if v6 ISN'T anything at all to do with unbelievers?

Check out 18:15-35, (the parable of the unrepentant servant, etc) as well as 6:14, just before this bit of the sermon as well, then Romans 2, 1 John (the whole letter...), and so on.

God seems pretty insistent about us forgiving others, and Him NOT forgiving us if we don't.

So as Good Evangelical Christians, we say "salvation is by grace, not works," and include forgiveness as a work - in other words - salvation isn't dependent on whether we forgive others.


How can God forgive us when we don't forgive others? What if v.6 is actually about us Christians being the dogs & the swine? When we don't forgive others...

So then that ties v.6 in to the bigger picture.

7-11 is still a bit of a tangent.

I imagine Jesus trying to get his thought across, but almost stumbling over his sentences. Stopping, starting, trying again, trying to paint enough pictures that they would understand.

(He does rather lose His rag later, 15:16...)

So then. v7-11. (In the style of biblical re-interpretation popularized by the amazing Adrian Plass)

So Jesus pauseth, push├ęd back his hair distractedly, and triethed another angle: "Look guys, God giveth to you, SO FREAKING GENEROUSLY, getst ye over yourselves already, and be generous to others... (includeth forgiving them)"(DSV).

Which ties in nicely, actually.

Then the rest of the chapter, taken in the same light, also works.

I'm not too keen on verse numbers and chapters. Certainly in the way that English bibles have of splitting them all up like this - perhaps in ways that aren't intended by the original author. We have no way of knowing.

If this passage is intended this way, then take the sub-paragraphs. The bit about "Ask, Seek, Knock", and so on, for instance. It's often / usually preached as a "Ask God for swag, and He'll give it to ya!" (and in more Calvinist churches, they add "As long as it is within His Will to do so..."). But if it's NOT?

Maybe there are lots of little things we take so totally out of context, that we might even think Jesus was OK with going to war over oil. Or revenge. Or giving up on people. Or loaning and expecting interest. Or using God's money to build a comfortable life for us on earth! Just think - it's hilarious what we might come up with.

Well. Hilarious in the "horrifying" sense of the word.

I know this is rather rough... but what do you think?