Screws, miracles, and Turkies.

It’s been quite a day, lol. When I was at work, I was looking at the bottoms of my shoes for a moment, and I’m sitting here like, “Since when did they start making sandles with screws in the bottom?”. I had to look at my other shoe to be sure, lol. Sure enough, there was a screw stuck into the bottom of my shoe, less then a centimetre away from the bottom of my foot.

On top of that, when I was loading the car, who should greet me in the front yard, but the bosses dog that had just gone out in the back yard—the bloody gate was open! I said thank you LORD, and whoever’s watching, and thank YOU for small miracles!

The misserable part of the day however, ma decided to buy a 22 lbs Turkey (that’s nearly 10kg). I hate turkey, when you’re eating it until the cows come home from their seventh voyage 🙁

XSLT, where have you been all my blankin’ life!

I spent a couple hours to play around with a few style sheets, after inhaling all the XSL/XSLT and XPath related data I could get my mits on.

I wrote one for converting DocBook XML into a portable subset of Bulletin Board Code, and one for HTML-aware blogs. The textproc/docbook-xsl port offers html/xhtml outputs, but it is better suited to generating stand alone web pages; mine targets it for posting to my Live Journal ;-).

For quite a while, I’ve generally skipped dealing with eXtensible Stylesheet Language (XSL) and her friends, but now I’m happy as a clam! XPath expressions provide a relatively simple form of addressing XML elements and attributes, kind of like basic regular expressions and CSS selectors rolled into a hierarchal package. XSLT processing has it’s ups and downs but for generating output for creatures like web browsers, where formatting is different from matter, is quite trivial.

Most non-trivial HOWTO’s, guides, and reviews that I post, are actually taken from files kept in my ~/Documents/ folder. I’ll likely be adjusting them to DocBook and integrating them into their own private git repositories, mauhauha!

Before I was interrupted…

Hmm, as I was saying before I was interrupted, I’ve been learning more about DocBook, and as should be obvious to anyone following this blog or my microbloging outlet, I have also been learning XSLT.

DocBook is a good format, it seems to have all the attributes from LaTeX and troff that I desire, it’s as easy as HTML (in which I am generally fluent), and just like it, is available in XML-based variants ;). Personally, I consider RST the easiest method of preparing documents. The principal problem with RST, being the available formatters: it works good for generating HTML output for the web, but not quite ready for manual pages just yet.

Some people might have issues with writing in XML/SGML like markup languages, but I do not; in fact, I feel more comfortable with DocBook, because there is *no* real presentational crap bloated into it, not to the level that HTML has been mutilated beyond permanent scaring… so yeah, I like it. Even better is being able to use DocBook with XSL/CSS related data to control the outputs. I’m a freak, I like to have central sources for documents, that I can keep under version control, unlike Word docs; and preferably a document that I can read, either in my text editor, a document viewer (ala PDF & PostScript), or copy/paste into a web page. DocBook is a very highly structured way of describing the contents of a document, which further mates well with my insane mind.

Likely I’ll be writing new HOWTO, guides, manuals, reviews, and so on in DocBook; any pertinent documents in existence now, will likely be converted over to DocBook. I will probably write suitable stylesheets for creating posts on my Live Journal here, and forum posts in BB Code.

Today has been a fairly nice day, managed to get some stuff sorted on the net; helped a friend with her blog; finished reading an article on DocBook. Along the way, I also found a cool page on creating rounded corners in CSS, and remembered to add A List Apart to my feed reader, after stumbled across it again.

Ahh, foooooood time!!!!

Just how safe is SHA-1?

Q: How hard would it be to find collisions in SHA-1?
A: The reported attacks require an estimated work factor of 2^69 (approximately 590 billion billion) hash computations. While this is well beyond what is currently feasible using a normal computer, this is potentially feasible for attackers who have specialized hardware. For example, with 10,000 custom ASICs that can each perform 2 billion hash operations per second, the attack would take about one year. Computing improvements predicted by Moore ‘s Law will make the attack more practical over time, e.g. making it possible for a wide-spread Internet virus to use compromised computers to mount such attacks as well. Once a collision has been found, additional collisions can be found trivially by concatenating data to the matching messages.

source

I dunno about everyone else on planet earth, but I feel safe enough with that probability, at least until Independence Day arrives.

Writer’s Block: My Favorite Apps

What are your favorite web or mobile apps? Which ones do you use everyday?

Live Journals Writer’s Block

Web applications are things that can either be awesome or truly disappointing, most fall some where in between for one reason or another. In particular, there support for sane web browsing ;).

From the apps I use every day, I would have to say that my favourite is Google Web Search, if that actually counts :-P. The reason being, Google uses a nice AJAX system for suggesting search terms—which can be helpful when you’re not sure exactly what you’re gonna type next. On top of that, the search results are often excellent (in proportion to your query terms). unlike some sites hosting web search engines, Google doesn’t try to be an all in one portal — it’s just a search engine! With lovely tabs to other resources ;). Microsoft/Bing has even gone this wrote as well. For those that want a more portal like page, you can build your own with iGoogle personalised pages instead of relying on a generalised one (Ala MSN classic).

In terms of web apps, in the more modern rich user experience sense, I’m not sure if I really do have a favourite. Every day, I use Googles Mail, Groups, and Talk (XMMP) systems; several flavour of phpBB and vBulletin forum; not to mention extensive utilisation of Wikimedia and Reference.com (from ask.com) services. Perhaps, Google Mail, Docs, and Reader are the modern web apps that I favour the most. I like them, because Google takes a more minimalist yet distinctive approach to developing their apps, yet they are often fully featured. Google Reader for example, the only areas for improvement I can see, is support for themes and even more optimization for speed; nether of which are required to enjoy the experience.

Lately, I’ve been using rtm, which is arguably the best designed web app created to date! It combines all the attractiveness of a good web app, into an easy to use — self documenting package. Complete with keyboard shortcuts! The ability to integrate both GTalk and RTM into GMail with ease, is a massive perk.

To few web apps these days realise that the old school design rules still ring on home. Revised, I would say these are what most people forget:

  1. Users have more to do in their lives, then just run your stupid app
  2. It’s shouldn’t (strictly) be necessary to visit the website to use it
  3. If it looks like an app, it should act like an app not something alien
  4. It shouldn’t matter what browser is, as long as it follows the standard

Point 1 is something the folks at RealPlayer and PlayXpert should really take to heart, seriously now!

While point 2, is best exemplified by software such as RTM and GMail—both integrate quite well into other websites, and in Googles case, to most desktop software.

The third point being, if it looks like a program, it should act like one: the fact that it’s running inside a web browser that is using a desktop widget toolkit, instead of running stand alone in a desktop widget toolkit, shouldn’t matter very much—learn about the principle of least astonishment, and take it to heart!

Fourth, brings to mind a time that I stopped by a Yahoo! video page when responding through a thread in forums.pcbsd.org. The result was humorous: Yahoo told me that my Operating System (FreeBSD) and Web browser (Firefox) were upsupported, suggested that I download a supported browser like IE or Firefox, then went on to proclaim that I was missing Windows Media Player and Adobe Flash plugins, never mind the fact that my web browser is configured to use the MPlayer plugin to handle Windows Media 8=). I assume their website has changed for the better in the years following: but it shows an important lesson. Don’t blacklist usability, smartlist accessibility. If it’s unsupported, downgrade intelligently and warn the user unobtrusively that their setup is missing XYZ functionality, don’t just send them to /dev/null because they don’t meet your expectations of Joe & Jane user.

If people did that in a desktop program, like Microsoft Office, a company might go out of business or lose market share to wiser competitors ^_^. Sheesh, I wonder how many ignorant webmonkies have used user agent detection or faulty CSS files when wiser work arounds were (and are) available.

One reason that I often favour Googles web applications, they tend to work well and stay the hell out of my way. I’ve yet to see any of them do anything truly stupid or grandiosely insulting.

Codes, Designs, and EPI

Today has been a fairly productive day, despite a heck of a lot of interruptions; to the point in fact, that at least 2 hours of work time was lost to it… Thanks ma!

Most of my mental energy was devoted to refining the interface between epi-add and $EPI_WIZARD, and figuring out how best to document it. My original vision for it was using bidirectional communication between finite state machines running in separate processes (the installer and the wizard). Amid the 21,000 interrupts of the day, I’ve managed to balance out the problem, and have come up with a more interesting solution; one which vastly simplifies the wizard programming interface and grants more freedom to anyone who wants to write an $EPI_WIZARD, which should be easy as pie.

By contrast, most of my code time was spent working on epi-unpack and prototyping ideas for the previous problem. Other then a few changes that I would like to make, epi-unpack is basically done; I’ll probably work on epi-verify next, while the others are reviewing the code for epi-unpack. One thing that distinguishes our Encapsulated Package Installer (EPI) system from PC-BSDs PushButton Installers (PBI; formally PcBsdInstallers), is that PBI is a static monolith from the undocumented garage; ours is knit atop a framework of UNIX programs, with standards and manuals to be shipped along with them ;).

I can not lie, UNIX has effected my philosophies on software design—for the better.

Generally, I don’t discuses business or classified projects on my Live Journal as a matter of ethics, but since EPI is now public knowledge, I’m free to blog about it’s development. The same can’t be said of all things SAS or work related lol. Most likely more things will filter through about EPI, so I’ve created a `tag` for it. Over 3 years and 1500+ entries, and I have never really gotten into Live Journals tagging feature, but have been contemplating it for the last few weeks.

The only way I can ever find my old entries is through Google or sequential search, nether of which are reliable; so utilizing memories and tags would be a darn good idea by now. The problem of categorizing my thoughts, as always remains a problem :=(+).

Outsmarted again!

I sneezed and Willow took off, as usual lol. After a while I looked and she wasn’t back on the bed, our the couch, so I started looking all over for her.

Checked under the step stool, in ma’s bedroom, under the dining room table, in the kitchen, the bathroom, next to the couch, on ma’s couch, heck even under the Parakeet! Guess what!!! Willow was under the covers on my bed, and that was the first place I had looked…. even moved the covers! Yet, sure enough when I walked back into the room it was her head looking quizzically at me, as if to say what the heck are you looking for idiot!

Oy vey!