One of the tools I use at work is causing me a lot of pain and discomfort. It’s the web-based editor for mass mailings - we use it for the email newsletter.
I blame the developers. They have chosen what I feel is the wrong object schema. Here we enter the world of high level application design…
I expect that I’m not the typical user of this service. Neither is the Marketing Director - she’s still stuck in the “fear of breaking my computer” mode, which I think is a self-fulfilling prophesy. No number of decades of using computers will be enough if you maintain that attitude.
interlude…
I learned everything I know about computers by assuming that I would break them, and that that would be interesting. There’s no call to be timid. This bothers me almost every day: For all that timidity, these people still break their computers, causing screwed up problems that good tech support can’t solve. Mainly because a tech support person doesn’t think that way - we can’t always put ourselves in the mind of the person who is afraid of breaking it. It’s a real cultural barrier.
..end interlude
In some ways she has approached this problem with bravery. She wanted to edit the newsletter directly without damaging my work, so when I was leaving yesterday afternoon, she told me she would make changes to a copy. I didn’t stick around for the argument I wanted to have: That won’t exactly help the situation. You see, the system won’t really allow me to move her changes from one copy to the other. And this takes us back to the flawed object schema in the web application…
The emails you design are called “Campaigns”. (Let’s remember to treat this like Euclidian Geometry - the quoted terms are class names, and specific objects are an instance of that class - the terms are all meaningless except in their relationship with each other.) I was really upset by the fact that I can delete a “campaign”, but I can never reuse a “campaign” name ever again. That sucks when I have to nuke it and start from scratch. We create new ones every week, so they tend to have names based on that Thursday’s date: ‘Jun 19, 2008’.
Each “Campaign” is built from a “Template”. I could create each week’s “Campaign” from scratch with an empty “Template”, but that is going to take a long time to do: Instead I copy last week’s “Campaign”. This causes new problems which are slightly less annoying.
Each “Template” is a container of “Blocks”. The “Campaign” is a container of the “Blocks” it has inherited from the ‘new’ or ‘copy’ operation. Follow me so far? I can alter the “Campaign” I am working on in many ways: Some “blocks” are special - the ‘Logo’ and the ‘Table of Contents’ have special properties. Some “blocks” can be expected to stay exactly the same, others need only a slight update, and other “blocks” are completely rewritten, added from scratch or deleted. I can also change the order of the “blocks” within the “Campaign”. There is no way I know to transfer an existing “Block” from one “Campaign” to another. The only “Block” operations are ‘new’, ‘edit’, ‘cancel edit’ (I would prefer to call it ‘revert’), and ‘delete’. There is no ‘load’ or ‘store’ because there is no container specifically for holding drafts of blocks other than the “campaign” you are currently working on. I would improvise by storing them in another “campaign” I’m not going to send, but once again, there is no ‘copy’ operation.
I did think of one way to improvise: When I saw that I had a lot of blocks disappear one week only to reappear the next (wWe usually have a ticket giveaway contest and some weeks there are no tickets; Most of the bloggers write a new post every week, but sometimes they take one week off…), I doubled the number of “campaigns” I produce by copying. I maintain an omnibus “Campaign” that I copy from week to week, make changes to the “blocks” that should persist, then when I’m satisfied, I copy it all into another “Campaign” that I actually intend to send to thousands of people. I have had a lot of last-minute requests to include something - maybe one of the bloggers will announce that they wrote something half an hour before the email goes out - and if the “block” is there about to be deleted, I can edit it a lot quicker than I can create it from scratch. If you question me on this speed difference, you should know that every change has to be loaded through HTTP by the web interface. And, when I create a new “block” from scratch, it appears at the bottom of the “campaign”, when it needs to be near the top. The procedure is to drag it to the place you want it, but our last ‘article’ “block” is always the very long author event schedule, so that drag operation can take an agonizingly long time for someone working on a deadline.
So what’s the problem now? By creating yet another copy of the “campaign”, the Marketing Director has a sandbox she can play in, and that’s a good thing. But, I can’t really use what she’s done, I have to copy it somehow. A copy operation on “blocks” is not offered. I can’t even see both versions on screen at the same time!
I went looking for a way to print it out, so I could work from paper to screen. But, I’m afraid that won’t be possible. For some reason I don’t understand, the email will not format well to the printer. The “block” will not run from one page to the next - it crops instead(!) Now, why would it do that? In desperation, I go looking in my toolbox, and realize that all of these tools are just cheap plastic toys that don’t work as advertised.
I’m writing this because it is my last hope. Even though it seems like I am wasting time that I could be using to work, the fact is I wouldn’t be working! I would be staring at the screen trying to figure out what to do. Writing this has engaged a much wider range of my brain function, and it’s the only way I am going to come up with something creative.
Wish me luck.
Posted in olssons, web-craft, programming | no comments | no trackbacksPosted by Evan Bittner
Thu, 19 Jun 2008 14:13:00 GMT
I’ve been getting way behind in “expressing myself” lately. I blame the heat. I also fall into a pattern of lugging my equipment around with me, in case I get an opportunity to write online, then finding myself tired at the end of the day, and surrounded by people who don’t remember that I get paid by the hour. So I flee with my equipment to the next venue - either home, or some coffee shop. But going has a tendency to shatter any clarity I had sitting still. It introduces new ideas to distract me.
I read news about a Rubik’s Cube world record, and went looking online for theories about solving it. Sure, it’s “Math” of a sort. I think the Wikipedia entry might say more about that. I found notation for all the moves, and I would have to spend a little time memorizing them. One guy’s site had an applet with keystrokes for each move, but I kept hitting keys I didn’t want - maybe he should have an ‘undo’ key. You can just hit the reverse of your last move, if you can find it reliably.
But, if I’m going to memorize something, I’d prefer to do Japanese Kanji. Years of study left me with a good foundation, but it really helps to practice writing. I used to take some pride in my stroke form, but these days I can’t always remember the correct stroke order for most characters. I have the Henshall book from 1988 with the mnemonic descriptions. For those of you who don’t know, there are some useful ways to break apart the complicated characters, but they’re not always historically meaningful - So many simplifications through the centuries have obscured the root forms and caused coincidental common features.
I always keep a towel in my backpack. Did you miss Towel Day this year? I think it falls on Douglass Adam’s birthday. I’d have to double-check that. After a week or two, the towel bunches up a bit, so I periodically re-compile the contents for comfort. This always has the effect of reminding me that I’ve got bean bags for juggling. That triggered a juggling binge sometime around noon.
I keep lugging around my big “Programming Ruby” textbook. It’s paperback, but it still weighs in at 830 pages. I find the tutorial in the first half superfluous, but not completely irrelevant. O’Reily’s “Nutshell” Guide is not as helpful as the language guide in part three, and part four’s library reference can’t be beat. Of course, running Ruby scripts is still weirdly different on *nix servers than on a Windows PC. Any serious code is still muddy to my eyes - So I figure my best defense is a thorough knowledge of the language mechanics. As with most programming languages, my biggest problem is tracing all the references. But, once I started to grasp the underlying C data structures for classes and objects, my task of thorough understanding started to seem more plausible. I still think Ruby is so elegant that it spoils me for things like JavaScript. Although I’m not sure how to get around that in the Web Development field.
I ran over to Whole Foods at lunch time. I knew I wanted milk, but beyond that I thought I’d play it by ear. Cut fruit is a fabulous luxury there. Berries looked good, but I wanted blueberries, and the price was not acceptable. I was delighted to find a container of “marinated mussel salad” at a reasonable price. Since I had pasta waiting for lunch, that seemed like a good combination. I bought more mixed nuts, which always go a long way with so much salt to slow me down, and a wedge of one of the cheaper Goudas. The prices are okay if they encourage me to make it last.
I’m still working on “The Economics Of Attention”, but I’m all but done - there’s about six pages of bibliographical essay in the last chapter. I probably won’t put it away just yet - there’s so much to think about in there. It’s the kind of stuff that informs everything else I talk about. If you and I do have a conversation, I’m likely to bring it up. But my future directions in reading are not so clear.
I will probably continue to dredge up more volumes from the collection. I’ve ordered a textbook on “Refactoring” software designs. I could be spending more time reading source code for comprehension, and developing a more structured critique of how it’s written. I notice that I’m still not so good and writing code from scratch. And yet, it’s always a nightmare trying to understand existing code and writing something to work alongside it.
Posted in programming, books | no comments | no trackbacksPosted by Evan Bittner
Mon, 16 Jun 2008 01:04:00 GMT
I tried to accomplish two little chores today, and I have had very limited success. I guess I can’t say I failed completely - and if I want to be optimistic, I should say I’ve made a pretty good start. It feels like one of my ‘evil’ sudoku puzzles, where I can stare for a few minutes and see nothing, then suddenly set off a cascade of logic, filling in ten, maybe twenty, numbers, only to find myself stuck for a few minutes more. You see, I now have an excuse for doing those puzzles: They provide a perfect analogy.
It’s Text. In a Box. How Hard Can It Be?
Windows is very opaque when you first start out programming for it. The details: I have a free C++ IDE (Integrated Development Environment), an extensive help file with reference to a thousand topics in gory detail. I am free to browse the header files - though that’s an exercise in frustration, too. I also have a book or two. The books have some typos that took me a while to discover.
By working through some of the examples in the book, I was able to compile programs that launched a simple window on the screen and painted a rectangle, or an ellipse… Wow. I eventually worked my way up to more complicated graphics, menu items, and form controls. I even had some success reading from files and displaying… something. Based on what was read. For example, I was able to display header information from a Wave file (sound) and scroll through a graph of the wave in a sort of oscilloscope trace(!) Forget writing to files. I never got that far.
So I’ve been thinking that I often open a text editor to check the contents of a text file. Sometimes I just need a text ‘viewer’: A little widget window that can sit in the corner for visible reference. I would like to be able to display the text in a larger font, since it is an area of the screen I won’t be concentrating on - only glancing at briefly. I don’t think I am going to accomplish all that today. And, I actually got a program running to display an overly particular factoid. It’s just in a standard system font that I need to squint at to read. (My screen has a nice big DPI - and I could probably use new glasses.)
And I think: Okay, I will now take the next step - add code to select a bigger font. Suddenly I’m awash in EnumFontFamiliesEx() and GetTextMetrics(). I notice that in HTML it isn’t nearly as hard to pick a font name and size. So it won’t happen today, for the eternally recurrent fact that I have the explanation, but it doesn’t make any sense to me.
So HTML Is Easier, You Say?
Back to something I do on a daily basis: The Blog. And, a little pet peeve I thought I ought to be able to fix in a matter of minutes: The page where I edit posts does not take advantage of the full width of the browser window.
I’m very visual, so when I am working on something, I like to see it. Is that too much to ask? Can my document fill the page, please? I don’t know why I have a 1440 by 1050 pixel screen if I’m going to be forced to write in a little 40 column box. I insert a link here and there, and these URLS can be quite long - I’d love to have some more width to work with.
The post editing screen has the main panel taking up 85% of the browser. With lots of nice white margin on both sides. Which is one of the stupidest things I’ve ever seen: Margins and layout are for end users. I’m trying to work here. Would you condemn 15% of your desk as unusable empty space? No. You’d use that space to work with. Similarly, I can reduce my browser window if I don’t want to use all that screen space - say, I want other windows to be visible with references, like I might keep a thesaurus on my desk. I managed to fix that. But, it wasn’t what I would call “easy”. The page code shows the URL for the stylesheet. But this URL is a redirect: The blog tool, written in Ruby, intercepts the URL at the server and sticks some extra directory path information. So…
"/blog/stylesheets/administration.css"
is something more complicated that I need to know if I’m using FTP, or the command line:
"/rails_auto_apps/blog/public/stylesheets/administration.css"
Once I figured that out, I changed that 85% width to 100%. It took more page refreshes than it should have, but eventually I got it to work. So, I succeeded at one thing. That’s pretty good for an entire day. When it came time to change the text edit box, things were not so simple.
I can see in the page code where the rows and columns are set in the HTML form that lets me type the blog post contents. But that whole page is the output of a Ruby script. That’s simple enough - but which script is it?
Now I’m getting really ticked off. I start digging through eRuby files ending in “.rhtml” that all do real work, even though I couldn’t get one of these files to print out the date and time. Is the server running them, or are they just fodder for ‘Ruby on Rails’. It’s not clear from the source. But as I navigate through the directory structure and browse the code in the rhtml files, I start to comprehend the purpose of each part. The form I want isn’t the only form generated, but I’m picking up the clues as to the purpose of each one. I locate the call to generate my form, and… rows are specified, but columns are not. I bumped up the number of rows from 25 to 35, and that worked. Maybe I can change a bunch more stuff I wasn’t trying to change. Maybe that will serve as some sort of consolation.
For the life of me, I can’t figure out where the width of this text edit box is stored - read from a data file somewhere or called as a literal in the code. I see the call and it’s not there. I don’t see any good candidates for such a data file.
Like I said, if I want to be optimistic, I’ll say that I’ve learned something. But that’s the way it always is: I learn something and accomplish nothing.
This Blog Tool Has a Web Page.
I wonder if it is helpful.
No. Sorry. It isn’t. The Leetsoft page isn’t loading at the moment (did it ever?). And Planet Typo is a bunch of seriously advanced language tweaks for Ruby on Rails. Yes, okay, some day I may reach that point. But, it doesn’t seem very likely if I can’t find help on modifying a single number in the software.
So then, I notice a link to Nuby On Rails - clearly a site directed at beginners. Nice Ruby/Newbie pun there, guys. But what you actually have here is one more blog of obscure code invention. I can’t see how that helps me. I gather there are some community standards about how to package your Ruby code. That’s nice. I might need to know that some day. There is also a portable documentation system for ruby. That sure will come in handy once I can understand what the documentation says.
It looks like I hit one more dead end - based on the fact that none of these sites are the front door: There is no “Getting Started” anywhere that I have been. Where did any of these people ever get started?
Posted in computer-interface, programming, web-craft | no comments | no trackbacksPosted by Evan Bittner
Sun, 25 May 2008 18:57:00 GMT
I’ve been troubled lately by my frequent inability to remember to attach a file when I send an email. Quite often, I send files to people over email. As I’m sure you all must now by now, it’s a fairly easy thing to do. Most email programs have a big button with a paperclip icon that says attach. No matter: I continue to key in the addresses I’m sending to and a reasonable subject line, then click send. Sure, it’s my fault. But I still blame the computer, and I think there is a fundamental reason why it is right to do so…
Simply put, computers are more reliable than people. I have typically just edited the file I want to send - I’ve got ‘file on the brain’. Cognitively, the next move I make has the file as an implicit attachment. When I begin ‘composing’ the email, that file is still floating around in my short-term memory. The part of my brain that ticks off the steps in the process has mistakenly crossed that one off the list as completed.
There are a lot of things I do on a computer where the task is ‘structured’. The computer follows a script and funnels me into following along. As I mentioned recently, I’ve designed some of these scripts. The ability to design them, however, does not make me infallible. Much of what you do on a computer is ‘free-form’. That’s nice when you are exploring possibilities, but it’s cumbersome when it makes you responsible for all the little details of a process. There are several ways I might send these file-attachment emails, and it’s no beauty contest. Each way has pitfalls, or presentation problems.
I’ve noticed that there is a big trade-off of another nature: Let’s say I write a script to handle the details. What happens when the details change? How much is safe to hard-code? When I need to make some obscure script change, will I know to do it? Will I remember where to go, or will I have to hunt for it? Will I even still be around?
This all relates to something else: In many computer environments, users are not allowed to make programming changes, even if this is just a batch script of some variety. GUI machines discourage the practice, and furthermore, I’ve found it time-consuming just to locate information on program APIs anyway. I can write those scripts at will, but I don’t always know how to code each step. By about this point, I’ve forgotten what I was doing in the first place.
Posted in computer-interface, programming | no comments | no trackbacksPosted by Evan Bittner
Tue, 13 May 2008 15:07:00 GMT
Today is the day I discovered a problem with the MySQL Upgrade I did at Network Solutions. But wow, was it subtle!
I knew all about changing the MySQL IP address in all the relevant Perl scripts. The big two build a file to export to our two partner sites, respectively. The first one worked just fine. The second one I only run on Sundays. That script ran without complaint… but produced a blank file. It was clearly using the right IP address. The database name and table name and field names are all the same. I called up queries from the MySQL browser, so all the data is exactly where I expect it… And yet it still doesn’t work from the script.
At this point, I’m sure the script is broken. But how can that be? I have to refine my test. I can’t do a “SELECT *” query: That just means “Give me what you’ve got.” I decide that I have to be superstitious if this problem is going to get solved. The script asks for certain fields from the table. Without actually solving the puzzle yet, I decide my next move is to take the exact text of the query that the script sends, and paste that into the browser.
SELECT AUTHOR, TITLE, CATEGORY, COVER, PRICE, CONDITION, DESCRIPT FROM $table (for you nit-pickers out there, I don’t need the semi-colon in this context…)
You see the blue text? The program paints syntax: reserved words in blue, string literals in pink, etc.
Since when is “CONDITION” a reserved word?
Since version 5, no doubt. Let’s go to the online manual (now that I’ve got shell access…)
mysql> help condition
Name: 'DECLARE CONDITION'
Description:
Syntax:
DECLARE condition_name CONDITION FOR condition_value
condition_value:
SQLSTATE [VALUE] sqlstate_value
| mysql_error_code
This statement specifies conditions that need specific handling. It
associates a name with a specified error condition. The name can
subsequently be used in a DECLARE HANDLER statement. See [HELP DECLARE
HANDLER].
A condition_value can be an SQLSTATE value or a MySQL error code.
URL: http://dev.mysql.com/doc/refman/5.0/en/declare-conditions.html
Well, if you’re going to be that way…
How come during this upgrade it couldn’t have done an audit on my table names and field names to ensure none of them were reserved words in the new version? Huh? Maybe e-mail me a warning? Imagine if the thing were really BIG?
Nevertheless. My Kung Fu saved the day once again.
Posted in databases, olssons, programming | no comments | no trackbacksPosted by Evan Bittner
Sun, 11 May 2008 21:40:00 GMT
Since I read this article on “Backscatter Spam” at Slashdot yesterday, it seems like I’ve been getting a lot more of these misguided auto-replies. Yes, I have gotten them before - and other people have come to me, their email administrator, fearing that they had been ‘hacked’. But I really did get a little extra burst of backscater right after I read about it - an odd coincidence, I’m hoping…
I figure the the early pioneers of the Internet asked themselves, after a string of philosophers down through the ages, “Are people basically good or basically bad?”
And they answered “People are basically good”. They were probably wrong. They were actually just thinking about a small group of their colleagues. And, they must have forgotten that the future would belong to robots and software agents anyway.
Because these “People” I’m talking about includes quite a few tricksters that send junk mail to everybody on a list of addresses. Just in case a couple gullible suckers are caught off guard. It costs even less to do it with email. Just a modicum of formatting can look authentic. (I’ve had my account suspended at about 40 credit unions I’ve never even heard of - that’s another interesting way to view today’s topic… maybe later.)
Email is a funny medium. Ensuring that the sender really is the sender would require a concerted group effort. That doesn’t seem likely to happen any time soon. My last round of SMTP scripts in Perl reminded me how easy it is to pretend you are somebody else. I have several email addresses, and I access at least five others for work. I send personal and business messages claiming to be me, and I send other job related messages from a role or department of the company. Email servers don’t get too upset when I log in to one account and send mail claiming to be from another domain entirely. I’m also sure I could write an email sending program on my laptop that wouldn’t even demand that I log in.
As a courtesy, email servers will reply to tell you when there is nobody with that email address at that domain. This is nice if I misspell the address, but it simply doubles the traffic in junk. Every doomed request is honored with a response. This probably isn’t necessary. A lot of places have started running paranoid spam filtering the message doesn’t reach the address in the ‘to:’ field, but a reply still goes back to scold the ‘from:’ field for sending spam.
So we come to backscatter: Hey, Thanks for that reply - but, I didn’t even send the message in the first place…
[More Later…]
Posted in programming | no comments | no trackbacksPosted by Evan Bittner
Thu, 08 May 2008 22:42:00 GMT
First, Some Nonsense
Binderies for the fragmentary.
Fleeting thoughts that must go in distinct bins that I don’t have the name of yet.
Ways to establish temporary, shifting forms of organization; Ad hoc; Expeditious; Transient; Ephemeral.
Aleatory shuffles of past utterances/communications as a substitute for entertainment.
Now, What I Intended
I read about Long Photos in Boing Boing. Flickr is offering to host video now, but you’re limited to 90 seconds. So what kind of video will show up? Someone immediately brought up the film Koyaanisqatsi with its lovely shots of people trying to hold still. The casino waitresses always freaked me out - the neon is animated behind them. It’s got me thinking about what is static. I hate to watch video - I don’t like the demand on my attention. It would be cool if, in DVR fashion, the video only proceeded when it knew I was paying attention. On the other hand, information about when I pay attention to the video could be harvested, like those eye-tracking experiments that show people only skim webpages or stare at cleavage in commercials.
Once on an old Mac, I had a program that analyzed text statistically and produced randomized replicas. Anybody remember what this program was called? Some of the results were freakish. You could set the ‘cluster size’ and it must have produced a hash data structure for the probability of any word following another. I don’t know how the program was intended. As a joke on academic writing? It occurs to me that it might be very interesting to have that program now, and that it ought to be straightforward to hack one together in Ruby - with it’s scripting language facilities for reading text as tokens.
Anyway, you must have seen some “Tag Clouds” on web sites… But tagging requires a discipline I don’t always have. What could we infer about the word content of my blog entries? What sorts of associations or juxtapositions could we form from the disparate material of what I wrote. And what of a little two-column annotation?
Have you seen the sites where common terms have definition links, or pop up thought bubbles with more info? Those things annoy the hell out of me. I’m always hovering over them when I scroll the mouse wheel, and the browser suddenly engages in some heavy lifting and interface catatonia.
Okay, So I Can Come Up With Words
But that’s hardly enough for deep meaning. I’ve been thinking about better ways of marking the semantics and metadata of what I write than mere category tags. This is part of what I was thinking but didn’t write yesterday.
The history of thought is full of these techniques and technologies for organization. I should think about taking more advantage of these gimmies. I’ll always remember the TV series “The Day the Universe Changed”. He talked about monasteries hitting on the idea of putting a title on the spine of the book, instead of the first few words of the text. For a book like “A Tale of Two Cities”, maybe it wouldn’t matter. How many other books start out with the same few words?
Journal Trouble
When I sit down to write - and a lot of times this is on a bus when I get an idea - I can’t focus on one idea at a time; I get a sort of “round robin” experience. (Maybe I’ve finally gotten good at multitasking?) Once in a while I try using blank paper in a diagramming mode. At the computer, of course, I can just insert new text at any point - there’s nothing special about the last character position in a document - but still the majority of my keyboard writing is done in strict sequence with a few edits afterwards.
Well, Here’s A Perfect Example
I realized earlier that I put something in quotes, and that furthermore I use single and double quotes in a relative fashion - not so much to break the monotony, but to offer two levels of literalness. So if I’ve got real quotes of things people said, they get the double quote marks, and I save single quote marks for terminology/jargon/what-have-you style emphasis. I could use bold or italics for this too… But I stopped using bold here, and italics is for word stress in my mind. You ought to be able to catch the stresses without me pointing them out, and if you can’t then I’m not doing my job properly, so I do have feelings of guilt.
But I realized that I don’t have ways to shade degraded memories of what people said, or approximate reconstructions (see ‘cluster size’ above) of jargon that would be useless as search terms.
Posted in writing-craft, web-craft, programming, books | no comments | no trackbacksPosted by Evan Bittner
Thu, 24 Apr 2008 20:16:00 GMT
I looked it up, and discovered that YAML is not an old format at all. Yesterday I said it was. That was just a guess. YAML is a “data serialization” format. Don’t worry, it is not as complicated as it sounds: Computer programs - especially on a web site - are often stopped and restarted, and they need a good way to store live data in a file for later. Think of it like sleep: When you wake up, you return to an awareness of your life that you didn’t have while sleeping. In a similar way, when a program has to stop, then resume later, it’s nice to have all the relevant information saved to a file.
YAML is part of the standard library in Ruby. Anybody could choose to write the code necessary to save the program state when stopping, and load it back when starting, but with YAML, it is already there. The benefit of YAML, and some other similar formats, is that it is relatively human-readable. This makes it perfect for configuration files, as I mentioned yesterday. It is also perfect whenever one program uses the same data structures as a second program, but the two are not running at the same time. One program can effectively ‘leave notes’ for another program that runs later, instead of requiring them both to run continuously, just in case they need to talk to each other. It should even work for two programs written in different languages entirely.
So now, I’m on board with YAML. But there’s still a long way to go. Hopefully this will make it easier.
Posted in programming | no comments | no trackbacksPosted by Evan Bittner
Tue, 08 Apr 2008 15:29:00 GMT
After sorting out the help desk problems - some of my replies to the trouble ticket didn’t post - I figured out what my SSH login and password are, and I’ve got shell access. Now maybe I’ll set up the encrypted login if I can make sense of the instructions, but in the mean time I’m just happy to be in. What a world we live in: Getting a command line is a mystery. I’ll admit that most of what I need to do can be done from the control panel website - the back-end - but, once I’ve got command line access, it seems weird not to do everything there.
And there’s one more issue at stake here: When you go to find help on something like Ruby on Rails, you get command line examples to illustrate. Well, that’s useless when I don’t have a command line to try them on. It’s sort of like having an English style guide written in Swahili.
But now I’m on to new hurdles:
I got a core dump when I tried to use the Ruby Gems installer. You might remember why I care. No tutorial I have mentions this possibility. I have the local directory in the path search list, but it goes straight to the Ruby Gems website to search. So why exactly did I download a copy of the Gem I wanted?
The configuration files for Gems and Rails are supposed to be in “yaml” format. I’m pretty sure this is an old Unix format. This is very reminiscent of the time I tried to figure out “make” - of similar origin, but for automating large programming projects with separate compilation - I kept getting errors until I somehow figured out that the missing separator was a Tab. It’s easy enough to copy in examples, but does this mean I need to start learning yaml, too?!?!
I need to cozy up with some more textbooks. This minuscule increase in my knowledge might help me find my way through some of the ‘help’ I didn’t understand before.
Posted in computer-interface, programming, web-craft | no comments | no trackbacksPosted by Evan Bittner
Mon, 07 Apr 2008 17:23:00 GMT
Today is the old Spring Forward. Anybody with an unpatched system who made a manual adjustment last month on the new Spring Forward day will find their clock has sprung one more. I was running late to work, and I got a little disoriented. It didn’t help that it was raining in Silver Spring. But when I logged on to the Unix box at work, I was stunned to learn that it was 10:45 already. Of course, it wasn’t 10:45 - it was 9:45. At this point, only three of us have punched in, so the damage cleanup was minimal. If you adjust the clock back one hour while someone is working, it steals an hour from their total. If you’ve got a Windows 98 computer, I advise you to fix the clock. We have a few still running here at work. The one I can see from my desk has the pop-up dialog box informing me that the time change is today. Nice work there, Lou.
I actually just got off the phone with our programmer. He was obsessively double-checking that everybody’s timecard would receive the proper correction.
Posted in programming, olssons | no comments | no trackbacksPosted by Evan Bittner
Sun, 06 Apr 2008 14:58:00 GMT