Josh (the blog)

I’ve delivered simple, clear and easy-to-use services for 20 years, for startups, scaleups and government. I write about the nerdy bits here.


@joahua

DPI-accurate printing in Linux

The easiest way for me (seeing as it’s too hard to get the GIMP working with print drivers… not that I’ve particularly tried, but not-out-of-the-box isn’t good enough!) is simply to create artwork as per usual methods, exporting/saving as a PNG (because it’s lossless, and JPEGs aren’t acceptable whilst any pretense of quality exists) at 300dpi (or whatever DPI, but 300 is usually what I’ll be working in for print), then importing into OpenOffice.org 2.0′s Draw. This, of course, is very focussed on delivering a great user experience — printing works flawlessly. The only warning I have is that if it says “outside printer margins” then select “crop” rather than scale to fit… otherwise, obviously, your DPI/dimensions calculated image will go out the window.

You can also export to PDF from here, but that’s boring. Same caveat applies when printing PDFs, by the way. I think Acrobat defaults to scaling, and I imagine evince, et al., would also… possibly not. Alternatively, find a Windows PC with Irfanview on it, which is excellent for these kinds of things.

This post, of course, avoids the possibility of Photoshop and others of its kind for a reason. If you can afford it, you should know how to use it to print…

This brought to you by the hurriedly-assembled long-overdue Matthias Carols copy I promised someone at church ages back. Actually, I only did the cover as a way of apology for it taking me so long ;-) Shrug.

Whinging about uni and stuff

Today was, erm, interesting. One of the few people at uni that I’ve met since starting there (Will), and with whom I shared two courses (more than with any other person I know/have spoken to more than once), transferred degrees today and is now going to be studying at Cumberland campus. Which is totally a good thing from where he’s sitting and Cumberland is even closer and stuff, but… gah! -1 friend! This whole meeting-lots-of-people-and-trying-to-remember-names thing is way over-rated. Not that there’s really any alternative if I’m going to do uni without going crazy/existing in some ridiculous Christian-only underworld (because those are the people I’m guaranteed to meet) — though perhaps the two aren’t that distinct ;-)

So I thought I was starting to go places on that front. Apparently not. It’s interesting trying to make friends and meeting new people, and balancing the fact that you really want to make friends with, well, everything else. As in, when you’re in a tut and after speaking to the person next to you for 10 minutes (intro session thingy) realise that you’re really not going to get along (I don’t just mean disagree about stuff… I don’t mind that at all!) even though you can keep a conversation up quite easily with the usual boring questions about what degree, courses, subsequent-application-of-Arts-degree-in-some-way and so forth… but know that even if you actively tried to sit next to this person in a tutorial (or, shock, even a lecture of too-many-people) it wouldn’t be a particularly stimulating/enjoyable experience.

Maybe you read that and are now convinced I’m a snob. If so, we all are. If someone’s agenda revolves around sport, we’re not going to have particularly stimulating conversations unless they diverge into literature/IT/history/random films they’ve seen/books they’ve read/ideas+more abstract matters. That is, stimulating conversations by my reckoning. Mikhail Bakhtin’s idea of dialogism applies here: in a competition between several competing perspectives, it is acceptable — if not expected — that I will “foreground” my own values here. Heh. So… be offended, or not, whatever. Preferably not… I haven’t really said anything offensive, only that I don’t like talking about sport for prolonged periods: mostly because I have never made any great effort to follow any sport in particular, which has a tendancy to make conversation a little strained… and, in a dialogic way, tend to force myself into the background (contrary to the notion that one will always tend to foreground oneself!)

There we go. Bundled literary elitism. Good stuff. (Not that hard to follow, though Wikipedia’s Dialogism article is a bit crap… I think stub-like)

Anyway. Had my first Philosophy tut yesterday and was thoroughly unimpressed, I think in part coz it took me too long to find the room and it was overcrowded and I was tired and already irritable, and then our tutor person started using “true/false” and “valid/invalid” interchangably for half the tut, which was probably the most unhelpful thing he possibly could have done at that point. I had a perfectly sound understanding of everything we’d covered before going into that tut, spent 30 minutes in utter befuzzlement, then after a bit of aggressive questioning we got back to sanity. I wasn’t the only one [asking questions]… but started off the cascade of questions leading back to the core idea I’m pretty sure most people already understood, and started off… probably too aggressively. Now my tutor probably hates me from the very start… not that I really care, because the class size is like… 32 or thereabouts, so it’s way too big for something in which engaging (as in, engaging of all in the group) discussion can feasibly be had. Same goes for remembering names.

Then the philosophy lecture today was all about rabbits or “Bunnies”, as the lecturer — different person to the tutor — so fondly calls them. Heh. Oooh… indicator of my mood in tutorial is an example I gave to make a point about distinction between invalid/untrue. Sorry, have to share this whilst on the subject of bunnies!

  • All bunnies will die in 2005.
  • It is 2006.
  • Bugs Bunny is a rabbit.
  • Therefore, Bugs Bunny is dead.

Muwahaha. (The point being that my argument is “valid”, even if my premises are “false” — and hence my conclusion is also “false”.) Anyway. Today’s lecture was all about bunnies and how carbohydrates are like crack (as in cocaine) to them. Other crack references abounded. Lecturer spoke about free will. Spoke about how he’d love to lecture naked… notes that was a joke, and that he would be too ashamed. Moves back to crack. Runs out of time, rushes through pictures of furry animals, microphone stops working (repeatedly — it was demonstrating free will to ignore what he was saying), starts talking about cocaine some more. He has free will to consume all the crack he wants, as we have free will to ridicule him. Certainly the people sitting around me were ridiculing him… others may have thought he was the coolest thing since… something cool. I dunno, junkie philosophers don’t really do it for me. He was explaining some basic stuff about the nature of free will at the start, and put up a ridiculously simple point in his overheads, saying “This is when you wish you weren’t accumulating a HECS debt to hear me teaching you”. If it wasn’t true then, it certainly was by the end of that lecture. I don’t know how much HECS works out to per lecture, but my guess is it was a moderately expensive evening at a comedy venue without the benefit of comfortable chairs or bundled food.

Doo be doo. I’ve got all this positive stuff to say about how interesting all my subjects are, but against a backdrop of all that I don’t suppose it’d be particularly effective. Although, if you’ve read this far, you’re probably into procrastination as much as that lecturer was into bunny rabbits on crack. Oh well. I’m done typing, it’s late, I need to go to work tomorrow. And I’ll be away for most of the weekend, likely start the week exhausted, die in my Greek test on Monday, and so on.

<\/rant>

Horrible homonyms

I’m not even thinking of homonyms so much (though that may be true of the word in question, if you ignore similar meanings) when I get upset (as I am at present) about the untenable nature of the word “class” or “classes” (as in school/education) in any context where it could possibly be confused with programming of any sort.

As usual, it’s the geeks’ fault. I suppose classes in programming generally refer to a grouping of objects, as a class of students is a grouping of the same… so perhaps context should make the distinction clearer. But still, waaaay too much potential for confusion. Roget’s was thoroughly unhelpful in this regard… “course” is inaccurate, “grade” is too broad, and everything else was way off the mark. I think I’m going to go with “course” for the minute, at least until/unless I come up with something better.

For those wondering why I’m talking about something IT-related outside of the murky realms of semantics (though this arguably relates, albeit in a different sphere!), pseudo-design/browser-bug-fighting, and my all-encompassing-JavaScript-ineptitude… well, I’m playing with Ruby on Rails again. Or rather, properly for the first time. Because, you know, I don’t think there are enough balls I’m trying to juggle already ;-) Meh. If Rails is really fast and I don’t run out of time and make this drag out forever (which I inevitably will… bleh) this’ll probably take about a month. If Rails actually sucks, which by most reports it doesn’t — speculation about crap performance for large-scale services and concern over the small bus-factor (if one dev member got hit by a bus, what’d happen to the project?) aside — then I might give up for another couple of months. Whatever!

If nothing else maybe I’ll learn some stuff about MVC along the way. Not bad for an Arts student, hey?

cPanel/WHM deleting account slowness

I’m amazed at how long this takes! My guess is it’d take longer on over-selling systems (i.e. lots of accounts using very little resources, sold more resources on one host than would ever realistically be used rapidly enough to warrant concern) because of the volume of lines/files to be parsed for various services, but still. I just got rid of a site that’s wound up and it must’ve taken about a minute and a half (this is on a normally-quite-responsive dual Xeon 2.8 with HT (so it looks like a quad processor box! ;-)) with a not-so-small 4GB of memory). There was a really-quite-small database and less than 10MB of files (across probably less than 100 files for the entire site)… seems like a pretty long time!

I guess things would be slowed down by the fact that because the script is being run from a webpage (probably Perl?) it doesn’t multitask things (so, for example, syncing a password database for a particular service might be CPU/memory intensive whilst other processes are just quickly marking inodes as empty — but the two can’t occur at once). Shrug! I think this is the first time I’ve ever had to do this, so I’m hardly jumping up and down with anguish at all the wasted hours of my life (heh, I’m a uni student, I have no right to complain about such things! Or something.)… just seemed a bit lame.

Broken rake

Great. So I try and do things all properly-like, using migrate scripts to make the database and stuff, and it goes and dies on me.

` josh@whisper:~/public_html/XX/db/migrate$ rake migrate (in /home/josh/public_html/XX) rake aborted! You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ‘desc varchar(255)) ENGINE=InnoDB’ at line 1: CREATE TABLE courses (id int(11) DEFAULT NULL auto_increment PRIMARY KEY, name varchar(255), desc varchar(255)) ENGINE=InnoDB ./Rakefile:200 `

Nyaaaah. I think it’s coz I’m using the only version of Ruby that the Rails team don’t recommend:

We recommend Ruby 1.8.4 for use with Rails. Ruby 1.8.2 is fine too, but version 1.8.3 is not.

Hah. Yeah, I’m using 1.8.3. It’s Ubuntu’s fault! That’s just what happened to be sitting in stupid apt repositories. So now I need to add backports to an otherwise-clean computer. *shudders* Well, I guess the alternative is compiling and trying to stay on top of all that… *Josh is seen hurriedly running to add backports sources*

Well, maybe not tonight. wanders off to post on τρανσλιτερατιον before sleeping