[ { "content": "
<rant>\n
As a big fan of inflationary language, I have a soft spot in my heart for\nwords like ‘ponthreen’, where the ‘too’ sound in pontoon gets bumped up to a three, on account of rising prices, of course.
\n\nIf you Google/Bing/Duck for ponthreen, though, there’s very little aside from a mention or three in reddit comments. I consider\nthis a travesty and injustice and all sorts of mean, nasty things, not because ponthreen is a fun word to say (though it\nis!), but because a subset of pontoon boat enthusiasts and especially retailers will call a pontoon boat with three pontoons\na ‘tritoon’.
\n\nClearly this cannot stand.
\n\nA “pontoon boat” is a boat made with one or more pontoons, which can interchangeably be called pontoons, floats, or tubes.\nObviously, despite the fun rhyme, you can’t call it a “float boat” because any boat that doesn’t float isn’t a very good\nboat (please don’t @
me about submarines technically being boats or something). I’d assume there’s a good linguistic/marketing\nreason that “tube boat” lost out to “pontoon boat”, but here’s where we are. An illustration of a stereotypical pontoon\nboat:
If each tube/float is itself a pontoon, and ‘pon-‘ is not a Latin or Greek numeral prefix in the singular or any other number,\nthen you can’t chop up the word to end up with junk like:
\n\n…and so on.
\n\nA “pontoon boat” is a pontoon boat, regardless of the number of pontoons that support its deck(s). This ‘tritoon’ usage\nclearly must be stopped.
\n\nIt might be palatable, since single-pontoon boats are exceedingly rare to my knowledge, to call a pontoon boat with two\npontoons a “pontoon boat” without qualification, and then boats with more pontoons could be prefixed (with or without a\nhyphen) like so:
\n\nBut tritoon is just wrong. Wrong wrong wrong.
\n\nSince both tritoon and ponthreen are equally wrong for describing a pontoon boat with three floats, and tritoon is already\nmore commonly-used than ponthreen, I believe the only recourse is to now spread the word, literally, and get people\ncalling them ponthreens.
\n\n</rant>\n
(Also, not nearly enough people include an opening rant tag)
\n\nP.S. In an alternate universe, “tube boat” became common usage, and it didn’t take long for the ‘b’ sounds to compmanteau\n(a portmanteau of ‘compound’ and ‘portmanteau’) themselves into ‘tuboat’. Some silly midwestern boat dealer would then,\nin an insult to alternate-universe Brad, call a tuboat with three tubes a triboat. You can see this unfold in the cutscenes\nof Everything Everywhere All at Once.
\n", "id": "/blog/quick-pontoon-rant", "url": "/blog/quick-pontoon-rant/", "path": "_posts/2023-07-09-quick-pontoon-rant.md", "relative_path": "_posts/2023-07-09-quick-pontoon-rant.md", "excerpt": "<rant>\n
The amount of blood in my stool is staying the same. Agent Checkles keeps whispering in my ear that this means I’m getting\nbetter.
\n", "id": "/blog/day-five", "url": "/blog/day-five/", "path": "_posts/2023-06-18-day-five.md", "relative_path": "_posts/2023-06-18-day-five.md", "excerpt": "The amount of blood in my stool is staying the same. Agent Checkles keeps whispering in my ear that this means I’m getting\nbetter.
\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"He says I'm getting better.","image":{"alt":"Agent Checkles with me in the mirror.","src":"1200x630/share_3day-five.png"}}, "tags": ["Days"], "title": "Day Five", "date": "2023-06-18 00:00:00 +0000", "slug": "day-five", "ext": ".md" }, { "content": "As I am wont to do, I expressed an opinion on reddit and started a debate\nabout a niche tech topic. Much like the topic, Sass (and similar CSS ‘pre/post-processors’),\nthe reddit thread got nested to the point of inefficiency, so here’s a bit more breathing room to really explore the topic.
\n\nIf you were local to the Detroit tech scene around 2013, you know that 10 years ago Vince and I had a public debate about CSS preprocessors,\nso this is not the first — but hopefully will be the last — time I’ve engaged folks on this topic.
\n\nIf I were to coin a tl;dr that doesn’t appear anywhere else in these 4000 words, it would be this:\nCSS preprocessors are productivity theater and\ntechnical debt, plain and simple.
\n\nAlso…
\n\nI’m grateful to u/Scowlface for engaging with me in good faith. The one mistake\nthey made, in my eyes, is asking, “Okay, first, why be so pedantic?”, and then claiming:
\n\n\n\n\n“And it’s not a “css generator”, it’s a CSS preprocessor.”
\n
By golly my new acquaintance Scowlface, I have not yet begun to be pedantic!
\n\nThe existence of a CSS preprocessor like Sass or a postprocessor like PostCSS implies the existence of a middle step, processing,\nthat is important in some manner or fashion. That’s simply not the case.
\n\nBoth Sass and PostCSS do all their work before what is inevitably a CSS file getting loaded in a web browser to provide styles\nfor a web page. You could almost just say PostCSS is a CSS preprocessor, too, and that the processing step is the browser\nparsing the CSS and applying the defined styles to the DOM, but as we’ll see shortly, that’s not technically true.
\n\nThe words people use to describe CSS preprocessors (and more incorrectly, ‘postprocessors’) were made up by the people selling\nthe software to the development community. Uncritically parroting that terminology not only does nobody any favors, but\nin the case of insisting Sass isn’t a “CSS generator” but rather a preprocessor, you’re exchanging a good descriptor for\na crummy one. Tin-pot dictators will tell you they were birthed by the gods on a mountain peak and have gotten all holes-in-one\nwhen golfing — but saying those things do not make them so, and repeating them plays right into their hands.
\n\nSass is not CSS, nor is the more CSS-like SCSS syntax (and the same goes for LESS, Stylus, any non-native PostCSS\nplugins, tailwind @apply, etc.). These are all DSLs (Domain-Specific Languages) that are parsed and interpreted into CSS.\nThis distinction is important because Sass is called a “CSS Preprocessor”, which implies taking CSS, pre-processing it,\nand then ending up with pre-processed CSS. But that’s not what happens. A non-CSS language is used to make CSS, hence why\nit’s much more accurate to call Sass and its ilk ‘CSS generators’ because that’s what the tools do: they generate CSS from\nsomething else (even if SCSS looks very CSS-y in many ways, the other available syntaxes show that it need not be).
\n\nThis entire section isn’t important in any real sense, except that if you’re going to accuse me of both being pedantic and\nsaying something “patently false”, it behooves you to think about the accusations for a second or two.
\n\nThe following example, like all Sass examples, is open to criticism for not being a particularly good use of the technology.\nThe fact that so many Sass examples show bad practices should indicate to you that perhaps something is amiss.
\n\nLet’s say you want to generate utility classes for 14 named colors, so you could put background-color--grey-light
on any\nelement and have a light grey background, plus 13 other theme colors for the same concept.
The resulting CSS in either case will look like this:
\n.background-color--black {\n background-color: #000;\n}\n.background-color--grey-dark {\n background-color: #444;\n}\n.background-color--grey {\n background-color: #ccc;\n}\n.background-color--grey-light {\n background-color: #fafafa;\n}\n.background-color--white {\n background-color: #fff;\n}\n.background-color--main {\n background-color: #007599;\n}\n.background-color--main-dark {\n background-color: #002733;\n}\n.background-color--main-light {\n background-color: #ccf4ff;\n}\n.background-color--second {\n background-color: #E32416;\n}\n.background-color--second-dark {\n background-color: #331716;\n}\n.background-color--second-light {\n background-color: #ffcfcc;\n}\n.background-color--third {\n background-color: #00838a;\n}\n.background-color--third-dark {\n background-color: #003033;\n}\n.background-color--third-light {\n background-color: #ccfcff;\n}\n
In Sass you might use an @each loop that would look like this:
\n\n$colors: (\"black\": \"#000\", \"grey-dark\": \"#444\", \"grey\": \"#ccc\", \"grey-light\": \"#fafafa\", \"white\": \"#fff\", \"main\": \"#007599\", \"main-dark\": \"#002733\", \"main-light\": \"#ccf4ff\", \"second\": \"#E32416\", \"second-dark\": \"#331716\", \"second-light\": \"#ffcfcc\", \"third\": \"#00838a\", \"third-dark\": \"#003033\", \"third-light\": \"#ccfcff\");\n\n@each $name, $hex in $colors {\n .background-color--#{$name} {\n background-color: $hex\n }\n}\n
The thing is, and this is true for darn-near anything you want to do in Sass, the toughest and most time-consuming parts\nare:
\n\nIn contrast, with the same map but using regex find/replace in an editor like Sublime Text, you can make the classes one\ntime and get on with your life:
\n\n\n\nThis is important because doing it the Sass way has a lot of disadvantages compared to making the classes as plain-old\nCSS, even if you took the time to type them all out rather than regex-ing up a map:
\n\nbackground-color--black
class on an element via the browser devtools, searching the codebase won’t find anything usefulsecond-light
background but not the others requires a little text-shadow
?And what’s the benefit of all this inconvenience and overhead? Some zealots might claim that the @each Sass setup lets you\nquickly and easily add the 15th and nth background-color class, but, like…
\n\n\n\nFFS, copy and paste exists. It doesn’t matter how many items are in the map: looping is guaranteed to lose you time compared\nto writing CSS. It’s just tech debt for tech debt’s sake.
\n\nJudging by all the downvotes I got in the reddit thread and posts like this one by Rob O’Leary on dev.to,\nit kind of feels like there’s a cult around Sass. If you use Sass and have a good opinion of it, have you ever taken a critical\neye to it? Do you feel a sunk-cost resistance to abandoning a tool you like and a skill you spent time learning?
\n\nThe thing I hear people say is something along the lines of “CSS doesn’t have certain features, but Sass adds them in. Sass\nmakes CSS into something more like a programming language.” You can accuse me of building up a straw man here, but I’ve\nheard that exact sentiment a lot. And the problem is, it’s 100% a misconception: Sass does no such thing. Sass itself\nis like a programming language, sure, but all it ever outputs is plain-old CSS. There’s no escaping that. It doesn’t add\nfeatures to CSS or make CSS more like a programming language: it just generates bloat for you.
\n\nI really don’t know where the mentality comes from, but it’s wild to me. Writing ‘vanilla’ CSS and not having to deal with\nthe nodejs ecosystem just to style pages is a great feeling, so if you’ve only ever done CSS by way of Sass, I\nstrongly encourage you to try modern CSS without the Sass crutch (and yes, clearly I’ve learned Sass and used it on\nmany projects throughout the years, so no hypocrisy here in asking you to try something new).
\n\nThe original comment by u/aguycalledmax I replied to that started the scowly\nexchange said:
\n\n\n\n\n“Even with nesting coming to native css I really don’t see any reason not to use scss or sass. The DRY and maintainability\nbenefits of your code far outweigh the imperceptible negatives of a tiny build time on your local machine.”
\n
We’ll get into why both the DRY/maintainability and build time arguments are hogwash later, but for now I’d like to touch\non why we should wholeheartedly embrace CSS Nesting specifically (when browser support is up to snuff for your project)\nand wholly abandon the same concept in CSS preprocessors.
\n\nCreating a similar example to those from a post on the Sass blog,\nhere is some nested CSS that’s valid in native CSS now, and is also valid SCSS nesting:
\n\n.base-class {\n padding: 20px;\n\n .foo {\n color: #eee;\n\n &.fighters {\n color: green;\n }\n }\n\n .bar {\n color: #ccc;\n\n &.fighters {\n color: red;\n }\n }\n\n .fizz {\n color: #fc0;\n\n .ylifting-drinks {\n color: #cf0;\n }\n }\n\n .buzz {\n color: rebeccapurple;\n }\n\n .fizzbuzz {\n color: #c0ffee;\n }\n}\n
In native CSS, the nesting is interpreted with an implicit :is()
wrapping the parent, keeping the selector specificity\nvery flat, which allows less-specific selectors if/when you need to override any selector. In contrast, all the selectors\ngenerated by Sass in the build step have a specificity of at least 2. This isn’t a big difference for a single level of\nnesting, but can make overriding a lot more pleasant for deeper levels of nesting in native CSS.
The other factor here is payload size. Even prior to minimizing, the CSS example above is 341 characters. That’s\nwhat you’d send over the wire and the size gets no bigger. It could get smaller with minimization and compression, but not\nbigger.
\n\nIn contrast, the Sass build process takes the nesting above and turns it into:
\n\n.base-class {\n padding: 20px;\n}\n\n.base-class .foo {\n color: #eee;\n}\n\n.base-class .foo.fighters {\n color: green;\n}\n\n.base-class .bar {\n color: #ccc;\n}\n\n.base-class .bar.fighters {\n color: red;\n}\n\n.base-class .fizz {\n color: #fc0;\n}\n\n.base-class .fizz .ylifting-drinks {\n color: #cf0;\n}\n\n.base-class .buzz {\n color: rebeccapurple;\n}\n\n.base-class .fizzbuzz {\n color: #c0ffee;\n}\n
The resulting CSS is 383 characters, or 12.3% larger. Yes, gzip would be very effective on those repeated base-class\nstrings, but this is a small, simple example. More nesting makes both the specificity and the payload size issues worse\nfor Sass.
\n\nSimilar arguments exist for CSS custom properties, calc()
, CSS Color Module Level 4,\nand the whole gamut of newer CSS features that have advantages over former Sass features. In the long run\nyou benefit from embracing web standards over third-party tools.
There’s this relief you feel whenever you’ve fought with npm or yarn to install the dependencies you want, then ran your\nscript successfully to do what you wanted it to. It’s a familiar feeling for anyone who’s ever done computer programming.
\n\nBut dependencies are introducing technical debt into your project, sometimes to a greater extent than you considered at\nfirst. If you’ve installed Sass and got it working, then done some stylesheet work for a while, then ran into a dependency\nissue later, then fixed it to get Sass working again, you may be feeling something more like Stockholm Syndrome than\nactual satisfaction.
\n\nWith vanilla CSS, you can make a file named styles.css
or similar, put some style directives in it, then reference the\nfile in a <link>
tag in the head of your HTML documents, and you’re off to the races. Yes, you can definitely make the\nCSS building and attachment process a lot more complicated, but the minimum-viable example is pretty easy.
With Sass you have to do all the aforementioned things, but also:
\n\nnode_modules
This is all textbook technical debt. In order for any of it to make any sense, Sass would have to save you a ton of time\nand/or produce much better code in order to justify all the time lost doing all the above-listed frustrating junk over the\nlifetime of your project. The thing is: there is no way you’re making the time back up. You’re gonna lose time messing\naround with Sass, and your frontend stack is more brittle for the privilege.
\n\nAt least once in your project you’re gonna have to decide: should we commit build artifacts?
\n\nIf you commit generated and minimized CSS output by Sass, the advantage is that you don’t have to set up your servers to\ndo your front-end build process. Deployment is simpler, faster, and less error-prone. However, committing your build artifacts\nis effectively setting yourself up for merge conflicts way more often than with regular CSS, as a team of even two developers\nwould create conflicting artifacts almost every time they touch the Sass on a feature branch.
\n\nIf you don’t commit build artifacts, your server will have to be set up to be just as capable as your local machine of building\nCSS from your Sass source files. This, of course, is additional overhead just to get stylesheets working, and introduces\nits own headaches.
\n\nDo you do frontend builds directly from a local machine? Or are you using containerization like docker-compose to have a\nlocal simulation of a server? If you do use a container on your local, is your local dev container the same spec as containers\nused for production? If not, then there’s a solid chance that you have at least two different sets of tooling with subtly-different\nversions for the various constituent parts.
\n\nAs frustrating as it can be for the dependencies not to install locally or for a syntax error to fail the build, it’s\neven more frustrating when it works on your machine but fails on the server. Tracking down what the heck must be different\nis a solid way to lose an afternoon. And to reiterate, none of this is required — you’re volunteering to use this optional\ntool for some murky reason!
\n\nIt’s pretty common for frontend work on a particular site to go quiet for years at a time, then for the site owner to shift\nfocus and want updates to their existing site. With plain-old CSS you’re sure to encounter some weird old stuff, but you\ncan be pretty sure it’ll just work. With Sass the opposite is true: I’m comfortable claiming with 95% certainty that\nyou’ll spend at least an hour fixing dependency issues before you can get back to writing styles.
\n\nThis comes down to both the commonly-paired-with-Sass nodejs ecosystem for build processes being brittle as eff and pretty\nirresponsible with notions like backwards compatibility (and yes, I get it, the ecosystem is getting more mature, and it’s\nnot exactly fair to say it’s Sass’s or node’s problem if gulp changes their config format every five minutes) and with\nthe coin toss of whether your project was set up with the Ruby version of Sass, the C/C++ version, or the Dart one.
\n\nIt’s easy to brush this concern aside, since the pain won’t be until 5 years later, but it’s something you should know before\nyou sign up: as surely as the Sun will rise tomorrow, you will spend a significant fraction of your Sass-ing time getting\nit to work anew when you revisit an older project. It will take up a lot of your time and it will likely be unpleasant.
\n\nThe beginning of this section already touched on how choosing Sass is signing up for more setup time, learning, and overall\ndifficulty than using plain CSS. One last point along those lines is the relatively-small slowdown of having your stylesheets\nbuild whenever you make a change to your Sass source.
\n\nThe site you’re reading this post on uses a static site generator, Jekyll, to put the pages together when the code is deployed\nor during development when any file is modified and saved. Fully building the site can take between 10 and 30 seconds today,\nwith the amount of content and assets the site builder has to process (perhaps ironically, the stylesheets technically\nget processed by Sass, as Jekyll kind of makes you do that, even though the SCSS file contains vanilla CSS).
\n\n20-ish seconds is a long time to wait to be able to look in my browser window and see the changes reflected on the dev site.\nThe thing is, most of the activities like writing a blog post take a lot of time in the text editor between reloads. With\nCSS, often you’re writing a line or two and then checking your work, since the little increments and test tweaks all build\non each other. When you’re changing two or three lines over the course of 30 seconds, an extra build time for Sass to complete\nof a second or two (hopefully not more!) quickly adds up.
\n\nAny one build feels imperceptible, and might be a welcome micro-break similar to the old-school trope of getting coffee\nwhile your code compiles. But taken in the aggregate, and especially combined with the startup and maintenance costs of\nusing Sass, those build times turn into significant productivity loss.
\n\nAgain, you’d have to see time savings in another way, or benefit significantly from code quality improvements, to justify\nthe kind of time lost to all this setup and waiting. Somebody please show me the benefit. Please email me with a good\nexample that makes this make sense!
\n\nMuch of what I argue in this section is predicated on one simple principle: The less CSS sent over the wire the better.\nWriting CSS directly and seeing exactly what you’re serving the user is helpful toward avoiding bloat, technical debt,\nand bad practices. In contrast, using Sass’s leaky abstractions more often than not means never seeing the mess it’s making\non your behalf.
\n\nOne of Scowlface’s last arguments went like this:
\n\n\n\n\n“If your argument is that since sass outputs css, that you can just write the css that sass would output, then yeah, sure,\nobviously. But it’s not as easy, and that’s the entire purpose of sass. That’s like saying, “don’t use PHP, just write\nC. Why write C when you can just do it in assembly? All these higher level languages just add bloat and slow down your\nprogram.”
\n
I see a few big problems with this line of reasoning:
\n\nLet’s look at Sass’s feature set with the less-is-more concept in mind, and a healthy appreciation for utility-first architecture\nthat keeps your project’s specificity graph nice and flat.
\n\nSee the Sass docs for an index of flow control items
\n\nVariables and conditionals, plus other primitives, all define logic that operates entirely within the Sass context rather\nthan the resultant CSS.
\n\nThese features are all inside baseball and can give you a deceptive impression of what the tool is doing. They’re helpful,\ninsofar as if you’re using Sass you need these primitives to accomplish anything, but are useless outside of Sass because\nthey’re build-time resources rather than render-time.
\n\nTo go back to an earlier example, you could use an @if
to put a text shadow on just the second-light
background-color\nutility class. It would really ugly up that @each
loop, and would require more time and effort than just pasting the\ntext-shadow property:value pair into the class in plain CSS. And note: no trace of the @if
would show up in the CSS. Not\nto sound like a broken record, but Sass features aren’t CSS features — they only exist to generate plain old CSS.
By comparison, CSS custom properties — or CSS variables as they’re commonly known — work in the render context, making\nthem useful and interchangeable between systems. Similarly, the calc()
and other functions, plus render-time CSS flow\ncontrol structures like @supports
and @media
accomplish what’s needed in real-world styling.
These flow control features aren’t actively harmful like some of the following examples, but they certainly help enable\naccomplishing bad things.
\n\nSee the “Modern CSS…” section above.
\n\nThe entire purpose of nesting is to write something succinct that generates way more code than you wrote. It also,\nby definition, is a way to chain specificity, which is also a questionable thing to do when a utility-first approach keeps\nyour CSS payload small and makes overriding easier. The whole feature (moreso in Sass than the new native CSS equivalent)\nencourages you to do something bad.
\n\nA blockquote earlier in this post alluded to DRY (Don’t Repeat Yourself) and maintainability benefits of using Sass over\nvanilla CSS. Both @mixin
and @extend
illustrate how being DRY in Sass makes your CSS very… wet? Well, whatever you’d\ncall it, these features make it really easy to irresponsibly duplicate code in your CSS. @extend
is also a good example\nof how maintainability is an illusion.
In the reddit thread, I gave as an example a mixin for applying an old-school clearfix (which in the age of flexbox and\ngrid is far more of an edge case than years ago), which Scowlyface dismissed as a “bad example”. Keeping my pedantic streak\nalive, by the GitHub search numbers I’d rebut that it’s a good example\nof how Sass features are commonly used to do bad things.
\n\nScowlyface was right that clearfix
should be a utility class that gets applied in markup where needed, rather than repeating\nthe same property:value pairs and pseudo-elements all over the codebase. This is a classic trap, of course, since the @mixin
\nand @extend
features are only useful for duplicating the output code while giving the illusion of not repeating yourself\nif you only look at the Sass source. You simply can’t provide a good example where duplicating code in this manner would\nresult in a healthier CSS codebase.
When applying a clearfix
class would require clicking around your IDE sidebar to find the directory holding the correct\napplication logic or template file and then pasting the class in the correct place, then testing that the class is applied\nand the styles are working, if you’re already looking at the nested code block for the .new-container
declaration and\ncan’t be bothered to click, copy, and paste in another file, the lazy developer will be happy to throw a
@include clearfix;\n
…at the problem and call it a day. Nevermind that at best it’s making a big comma-separated list of selectors that should\nall repeat the same code, and at worst is repeating the same combinations of properties and values in pseudo-elements\nall over the output CSS, because it ‘saved’ the developer precious time versus doing the job correctly.
\n\nMoreover, these features are among the Sass features that obfuscate the source of style directives, requiring a loss of\ntime for developer to track how many mixins and functions deep you have to go and how many variables and parameters you\nhave to parse (being mindful of the variables’ scope, of course!) just to find where a particular line of output is coming\nfrom. Time-savers these features are not.
\n\n\n\nCan you look at the example above and credibly say there’s any advantage to inserting a @mixin
to make three little\nclasses? Isn’t the CSS on its own a lot easier to understand and work with? Why on earth would you do this to yourself\nwillingly?
With @extend
, additionally, you’re often declaring an unenforced dependency. Let’s say you have a class,
.padded-box {\n padding: 20px;\n}\n
and then in your SCSS later you want to make a padded box that has some more properties:
\n\n.fancy-padded-box {\n @extend .padded-box;\n background-color: #ffccff;\n}\n
Depending on how you have your SCSS structured, .fancy-padded-box
might be miles away from the original .padded-box
.\nIf a new member of the team sees the original .padded-box
declaration and searches the markup for usages, not finding\nany, and decides to delete it, the .fancy-padded-box
class will error out. The new developer might not even see the failure\nin their terminal window until an hour or two later, and by that time they’ve made so many changes that the notion of Sass\nmaking the stylesheets less delete-key-friendly will have turned into a lot of time lost adding the extended class back.\nThat’s the opposite of a maintainability benefit.
This has been a lot of words, many of them very negative, about Sass and other CSS preprocessors. Given that, and that I\nbear no ill will toward my fellow humans, I wanted to take a second to acknowledge that the folks who made Sass and have\nmaintained it for over a decade has done a great thing — and I don’t want to discourage either them or somebody thinking\nof releasing their open-source tools in the future. The more tools the better, and for that matter the more debate the\nbetter!
\n\nHaving gone through lots of features and showing ways they can easily be misused, now might also be a good time to point\nout two use cases where using Sass might be a net benefit:
\n\nLastly, it’s worth noting that the features of CSS preprocessors led the way to many of the CSS standards we embrace today,\nso we owe a debt of gratitude to the Sass team for that.
\n\nDid I get something wrong? Is there something great about CSS preprocessors I missed that justifies putting up with all\nthe crummy things I’ve highlighted here? Am I a doodyhead with a butthole for a face? If you’ve got an opinion and an ax\nto grind because this site doesn’t have a comment section, tell me all about it. There’s a solid\nchance I’ll update the post with your rebuttal or link to your post.
\n\nOh! Also, while I have you: if you any web development or strategy needs,\nplease check out Solve it once, my Drupal-focused web dev shop.
\n", "id": "/blog/sass-considered-harmful", "url": "/blog/sass-considered-harmful/", "path": "_posts/2023-06-03-sass-considered-harmful.md", "relative_path": "_posts/2023-06-03-sass-considered-harmful.md", "excerpt": "As I am wont to do, I expressed an opinion on reddit and started a debate\nabout a niche tech topic. Much like the topic, Sass (and similar CSS ‘pre/post-processors’),\nthe reddit thread got nested to the point of inefficiency, so here’s a bit more breathing room to really explore the topic.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"CSS preprocessors had a lot of promises but not a lot of delivery. It is time to dump them.","image":{"alt":"It's CSS all the way down, and 'preprocessors' never did what you thought.","src":"1200x630/share_sass-considered-harmful.png"}}, "tags": ["Meta","CSS"], "title": "Sass considered harmful", "date": "2023-06-03 00:00:00 +0000", "slug": "sass-considered-harmful", "ext": ".md" }, { "content": "In February 2020, a month ahead of the lockdowns, I left the world of paychecks, W-2s, and office commutes. At first I had\nnothing planned: just take a few weeks to enjoy life and catch up on things around the house.
\n\nIt didn’t take long for friends to reach out, seeing if I could do some freelance website work, which ended up being\na lot of fun and taking up a decent chunk of April and May 2020 when I wasn’t catching up on Star Trek.
\n\nThat freelancing experience made me believe I could go into business for myself, so on June 2, 2020, I filed the business\nname Solve it once LLC with the State of Michigan and got started trying to drum up clients.
\n\nHere are a few cool things that have happened while being my own boss the last few years:
\n\nAs the highlights show, I’ve spent a decent amount of time embedded on other teams, helping deliver big projects for big\nbrands. While I love this kind of work, and especially the variety that comes with it, I’m also aiming to build more sites\nas Solve it once rather than on somebody else’s team.
\n\nMy next big thing, outside of client work, is trying to build interest around frost,\nan easy-to-use free-and-open-source head start for making excellent Drupal 10 websites:
\n\n\n\nIf you or someone you know is in the market for a website or other website-related services, so1ve may be for you:
\n\nFriends, family, friends of friends, family of friends, and all other permutations can get a 10% discount buying online\nusing the discount code familyandfriends10 at checkout.
\n\nThere are a lot of ways to help out, so I’ve categorized them below, depending on if you’re technical, if I’ve ever done\nwork for you before, or if you only have a minute or two. Anything you can do helps, and I want to thank you in advance!
\n\nIf I’ve made you a website or done web work for you in the past, you have the power to make the biggest impact to my future\nbusiness. Your honest reviews on any of the following sites (please don’t lie or leave a fake review) would be a huge boost:
\n\nIt’s wild how much software is a popularity contest. Sometimes it feels really tough selling folks on free software! Every\nlike and share of one of the following project pages could mean the next visitor will see the project as growing in popularity,\nrather than just some abandoned repository. Please like, or star, or fork, or otherwise show approval, for any of these\nopen source projects:
\n\nThe last two repos on the list are technically from Lower barriers, a nonprofit started by\nme and a couple good friends. We’ve put LB on hiatus for the last few months, but if you’re interested in joining and\nparticipating, please reach out to let me know your interest.
\n\nLikes and follows on various social media sites go a long way for showing legitimacy and juicing the algorithm (or whatever\nthe kids say these days). If I’ve never done work for you and you don’t know what a GitHub is, leaving a like or a follow\non any or all of these pages would be a massive, quick help.
\n\nIf you saw this post linked on social media, you can also share it or make your own post linking to this blog, which would\nbe hero-level awesome.
\n\nAnd of course, any time someone mentions they need a website or web developer, please send them my way: for business use\nbrad@solveitonce.com and (313) 509-7214.
\n\nThank you very much!
\n", "id": "/blog/so1ve-anniversary", "url": "/blog/so1ve-anniversary/", "path": "_posts/2023-05-24-so1ve-anniversary.md", "relative_path": "_posts/2023-05-24-so1ve-anniversary.md", "excerpt": "In February 2020, a month ahead of the lockdowns, I left the world of paychecks, W-2s, and office commutes. At first I had\nnothing planned: just take a few weeks to enjoy life and catch up on things around the house.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"A few easy things you can do to support Brad, just this once.","image":{"alt":"A graphic representation of this post title and description","src":"1200x630/share_3-years-of-so1ve.png"}}, "tags": ["Meta"], "title": "3 years of Solve it once", "date": "2023-05-24 00:00:00 +0000", "slug": "so1ve-anniversary", "ext": ".md" }, { "content": "Things have been busy!
\n\nSo busy, in fact, that despite re-platforming this site to use finished-starter\nin 2020, I haven’t truly posted anything new since 2014. This post isn’t exactly a means of catching up on the last 9 years,\nbut is a commitment to post far more frequently.
\n\nThe next post, likely in the next 2 weeks, will assuredly be an overview of my business’s website once launched, with a\ncall to action: to help me get the word out about our affordable Drupal 10 websites. For now, though, if you somehow still\nhave this feed in your reader, first: thank you! I guess this is hello.
\n\nHi! Talk to you soon.
\n\nBtw, I’ve added an About page. It’s pretty barebones for the time being, but I’d love to know what you’d like\nto see there. Hit me up at ao5357@gmail.com with suggestions.
\n", "id": "/blog/coming-soon", "url": "/blog/coming-soon/", "path": "_posts/2023-04-10-coming-soon.md", "relative_path": "_posts/2023-04-10-coming-soon.md", "excerpt": "Things have been busy!
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Commitment to blog more","image":{"alt":"A sticker on the tub top of some French onion dip","src":"french-onion-dip.jpg"}}, "tags": ["Meta"], "title": "Coming soon", "date": "2023-04-10 00:00:00 +0000", "slug": "coming-soon", "ext": ".md" }, { "content": "Originally posted on my blog at Commercial Progression.
\n\nOr read about the extension below.
\n\nHere at Commercial Progression we live in a bunch of environments: our local development environment, the staging ecosystem,\nthe QA habitat, and of course production. It’s a pretty common thing for website developers; your setup is probably similar.
\n\nIf you have a whole bunch of tabs open, it’s often difficult to tell which tabs are which. You might have three different\nversions of the same site open, and the only way to tell the difference is to click into the tab and look at the address\nbar.
\n\nWell that simply won’t do! There’s got to be a better way. Preferably an automated system built on an open source foundation.\nThat’s where Development Favicon comes in.
\n\nDevelopment favicon lets you select a color and apply one of eight effects (stripes on top, bottom, left, or right, plus\nbackground, replace, cover, and xor-top) to the existing favicon for a given site.
\n\nYou target sites using Regular Expression match patterns.
\n\nThis setup lets you create patterns once, and have them apply to each new project (assuming the projects have a common\npattern). If all your local sites end in “.local”, you can add a green stripe to the top in 10 seconds and have it work\nfrom now on. Same goes for staging. Sometimes production too.
\n\nThe settings page (accessible from chrome://extensions) uses the HTML5 color picker, and features\na slick drag-and-drop interface. Your settings get saved as you enter them, and they work wherever you’re signed into\nChrome.
\n\n###Recipes
\n\nHere are some ideas for favicons you could colorize:
\nMatch | Example URL | Pattern |
---|---|---|
Local site | http://example.local/ | .*\\.local.* |
Staging site | http://stage.example.com/ | .*stage\\..* |
Second Google account | https://www.google.com/voice/b/1 | .*google.*\\/[bru]\\/1.* |
IP Address | 198.168.1.1 | .*?\\/\\/[\\d]{1,4}\\.[\\d]{1,4}\\.[\\d]{1,4}\\.[\\d]{1,4}.* |
###Contribute\nThe source code for Development Favicon is completely open and available on GitHub.\nIf you’d like to contribute back to the project, we’re open to pull requests.
\n\nLooking for expert Drupal website design and development?\nLearn more about Commercial Progression.
\n", "id": "/blog/development-favicon", "url": "/blog/development-favicon/", "path": "_posts/2014-02-05-development-favicon.md", "relative_path": "_posts/2014-02-05-development-favicon.md", "excerpt": "Originally posted on my blog at Commercial Progression.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"A neat browser extension I made"}, "tags": ["Technology"], "title": "Development Favicon", "date": "2014-02-05 00:00:00 +0000", "slug": "development-favicon", "ext": ".md" }, { "content": "Flexible phones are coming soon. At first this could just mean phones will\nbe more comfortable in your pocket and less prone to shattering, but eventually this is bound to serve a practical purpose.
\n\nI believe the ability to flex is an affordance. In the same way that touchscreen\ngestures and device orientation-detection have become UI standards, device torsion will enable new ways to interact with\na device.
\n\nWhile flexible displays are a reality, many other device components won’t be practically bendy in the near future. This\nleads to two primary design decisions:
\n\nIn this model, shown by prototypes at trade shows, one edge of the device is a solid housing for non-flexible components.\nThe screen emerges from this edge, being the only flexy part of the device. I see this going two ways:
\n\nIn this model, the non-flexible components are spaced out underneath the screen somewhat-evenly, and the device’s chassis\nlimits the amount of flex in order to prevent the non-flexible components from being damaged. This leads to a device that\ncan bend, but not one you can roll up or crumple.
\n\nThis is the overwhelmingly better idea. It will be especially practical if the battery (the most volume and mass inside\nany given device) can be made flexible. A semi-bendy device still allows for flextures and may be more resistant to damage,\nwhile remaining a familiar and useful form factor
\n\nThe variety and complexity of flextures depends on the operating flexible range of a device. Early semi-flexy devices may\nonly have crude flexture support.
\n\nAll the flexture types below can be toggled either way; bending either toward or away from the user. Where my imagination\nallows, I speculate on common uses for each flexture.
\n\nIf a user bends the device “hamburger style” (assuming a phone form factor that’s taller than it is wide when held the\nusual way) toward themselves, this might perhaps trigger the iOS notification pane — or other tasks that might use a top\nedge swipe nowadays. Maybe this could become a flexture similar to the “pull-to-refresh” pattern.
\n\nThere are at least two ways to accomplish a vertical inward bend, each with its own caveats:
\n\nThe first method involves touching the screen, which might interfere with tapping gestures. The second method requires\ntwo hands. Neither of these are show-stoppers necessarily (pinch-to-zoom requires two hands), but they’re an indication\nof the care required to implement successful flextures.
\n\nThe user can also bend the device away from themselves hamburger style. This would almost certainly require two hands. I\ncould see this as an alternative method to close an app, triggering a split vertical wipe animation from the center of the\nscreen.
\n\nA horizontal bend inwards, especially one biased slightly to the lower end of the device, could be the most-used of all\nthe flextures. It’s just how you naturally hold the device, so activating this flexture is faster and more natural than\neven hitting a button or tapping the screen.
\n\nFor this reason, it’s important that this be the most-standardized flexture for handheld devices. It should do something\nuseful and significant, but not distracting in the case of false positives.
\n\nI think this flexture should toggle an app’s fly-out menu or navigate OS panes. By design standards, apps and sites will\ntend toward menus that wipe in from the side. It should be encouraged by OS makers that menus be fairly static and cached\nin memory, allowing them to fly in and out quickly.
\n\nA horizontal bend outward might be rare. It really depends on the bezel, use case, etc. Bending different directions likely\nwon’t indicate on-screen directionality, since bending one way is substantially more tough than bending the other.
\n\nIf you pinch the top-left corner (with your left hand) and the bottom-right corner and twist your hands in opposite directions,\nit will increment/decrement the contextually-approriate volume slider. Turning your right hand left (and left hand right)\nwill turn down the volume. Turning it right will crank up the volume.
\n\nIf you pinch the opposite corners and perform a twist, it slides the device brightness. The increase-decrease motion is\nalways indicated by the bottom corner in a righty-tighty-lefty-loosie fashion.
\n\nBending individual corners could also trigger certain actions. One cool action would be bending the corner opposite the\ncamera, thereby taking a picture. It’s cool because not only does it make taking a picture more convenient, but it also\nprevents your hand from getting in the way of the lens.
\n\nUp to this point I’ve talked about flextures from a conventional UI perspective. A pinch gesture does roughly the same\nthing in most apps by convention, for instance, so it’s reasonable to believe there will be conventional flextures. This\nisn’t necessarily what happens in games, though…
\n\nWe’ve seen some pretty cool games that use device orientation: to steer a car or to orient a player in a 3d world. Flextures\ncan extend these movements and allow for more dimensional movements or even distortion of the virtual worlds. I’m pretty\nexcited about this aspect.
\n\nAlong with having the ability to flex, a device that uses flextures would also need a sensor to detect the direction(s)\nand intensity of the flexing that occurs. Not being an engineer, I have no idea what this would entail. But I assume it’s\nsomething that can be done with current technology for the most part.
\n\nI believe torsion detection is a practical necessity for devices. If the device’s gyro is flexed one way, but the rest of\nthe device is oriented another, the software may orient the screen the wrong direction. The same reasoning also has\nimplications for compasses and other internals. Only by having the software be aware of flexing activity can the user\nexperience not be negatively affected. The potential problem is dependent on the physical locations of sensors in the\ndevice, as well as by the overall device size.
\n\nIt would be pretty cool if flexing your phone different ways was a type of gesture.
\n", "id": "/blog/flextures", "url": "/blog/flextures/", "path": "_posts/2012-12-28-flextures.md", "relative_path": "_posts/2012-12-28-flextures.md", "excerpt": "Flexible phones are coming soon. At first this could just mean phones will\nbe more comfortable in your pocket and less prone to shattering, but eventually this is bound to serve a practical purpose.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Really wanna twist a phone"}, "tags": ["Technology"], "title": "Flextures", "date": "2012-12-28 00:00:00 +0000", "slug": "flextures", "ext": ".md" }, { "content": "When evaluating a CSS methodology or new tool, I tend to ask questions:
\n\nIn keeping up with tons of CSS-related blogs, I’ve learned about techniques that seem like good ideas on the surface, but\nwhich often fall short in the questionnaire.
\n\nOOCSS itself was branded “CSS Circa 2009” by its creator. In 2009, we were on the cusp of HTML5/CSS3, and perhaps a majority\nof web designers still fretted over IE6 backwards-compatibility. As we approach 2013, it’s probably a good idea to revisit\nboth the conceptual framework and the CSS framework it spawned.
\n\nTo me, the biggest takeaway of OOCSS is the media class. This is a class for a block element that tends to hold a thumbnail\nalong with some text. It literally came from (re-)designing the boxes in facebook’s timeline. It’s often paired with comments,\nlikes, or other attachments. Media-classed elements can be extended and augmented with multiple classes for particular\napplications. The innards of such elements can be targeted for further customization.
\n\nThe media construct stems from the OOCSS recommendation to use classes near-universally. This allows an input of type\n“button” and an anchor to both take the same class and benefit from common styling. However, it also decouples the document\nsemantics from the stylistic semantics, leading to lots of redundant classes in the HTML rather than redundant styles in\nthe CSS.
\n\nWhat we’ve found in the mean time, from the HTML5 camp, are elements specified to enhance document semantics. Likewise,\nWAI-ARIA allows us to take HTML elements and assign role-based semantics (among other cool things ARIA does). The\n<article>
tag, for instance, is a suitable container for design projects that require a box like the media class. When\na style convention with arguable semantics appears, it’s probably time for a new HTML element
In the OOCSS Google Group,\nstubbornella explained that designing the wrapper for a site isn’t necessarily where OOCSS shines.\nOOCSS, by merit of OOP principles, is most useful for reusable elements; which tend to be in the main content area of a\npage. This is a perfectly-reasonable way to do your CSS, but it limits the purview of OOCSS principles.
\n\nLook at the home pages for all the common CSS preprocessors. They all advertise auto-nesting rules. This might give you\nthe impression that nesting is a good or useful practice. It is not, for two reasons:
\n\nAnother issue is one of workflow. If you design and tweak using Firebug or Chrome DevTools, a preprocessor’s generated\nstyles may not match up with the line numbers in the inspector. And if you make a change, you often have to translate it\ninto the new syntax before putting it in your stylesheet. By avoiding a preprocessor altogether, what you see is what you\nget.
\n\nStylus fucks with the syntax just for the fuck of it.
\n\nIn most cases the right tool isn’t a preprocessor, it’s a text expander.
\n\nIf you’re prototyping but (as many claim) should restart from scratch for production, what’s the point?
\n\nElements ship with default styles for a reason
\n\nGoes to obscene lengths to avoid semicolons in JavaScript (not a CSS thing, but is dumb)
\n\nA fool with a tool is still a fool — and it shows in the shoddy one-off sites made in bootstrap
\n\nNormalize, then extend
\n\nQuick note: you really only need/want 1 apple-touch-icon.png in most cases
\n\nStart with a normalization stylesheet and HTML slug
\n\nWith media queries for mobile-first responsiveness
\n\nWith media query for print
\n\nWith basic layout (role=”main” and HTML5 elements)
\n\nTake H5BP’s advice and get friendly with backspace — delete the conditional-comment head and modernizr if you’re not using\nit
\n\nImplement, then fight, your layout
\n\nLayouts aren’t always easy
\n\nRemember to pad the main container for thumb scrolling on mobiles
\n\nGrids help some people, but are they truly a time-saver?
\n\nSet ‘skin’ defaults at the base tag level and try not to override
\n\nAvoid classes in favor of tags > roles > other attr
\n\nThis might sound contrary to other advice, but it’s meant to make you think about semantics. Anyone who tells you classes\nshould be semantic isn’t really thinking about semantics at the right level
\n\nIf you have fewer rules, individual selector performance is less of a concern
\n\nThe cascade should be used mostly/only for special cases
\n", "id": "/blog/questioning-css-practices", "url": "/blog/questioning-css-practices/", "path": "_posts/2012-12-27-questioning-css-practices.md", "relative_path": "_posts/2012-12-27-questioning-css-practices.md", "excerpt": "When evaluating a CSS methodology or new tool, I tend to ask questions:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Unfinished draft I really wanted to publish"}, "tags": ["Web Design"], "title": "Why Are We CSS-ing All Stupid?", "date": "2012-12-27 00:00:00 +0000", "slug": "questioning-css-practices", "ext": ".md" }, { "content": "Canton Public Library’s Catalog uses a large\nlibrary application called Millennium ILS from Innovative Interfaces,\nInc. Recently, I undertook\nto spruce up the images, styles, and JavaScript for our catalog, and in doing\nso realized substantial speed increases catalog-wide.
\n\nNote: The speed enhancements below are mostly about optimizing files and client-side stuff. You can also speed up your\ncatalog on the server side with hardware and database optimization, though doing so is likely to require assistance from\nInnovative.
\n\nFaster-loading pages make users happier. Some speed-enhancing techniques also\nincrease server performance and decrease the amount of bandwidth used. Page\nspeed also factors into search engine rankings, though that is less of a\nconcern for our catalog than our website.
\n\nMost of the improvements came from Google Page\nSpeed recommendations.
\n\nFact I found interesting: Before I applied the catalog changes, the directory contained 682 files. It now has 49. Having\nfewer files doesn’t inherently speed up the app, but it does speak to the nature of the changes.
\n\nThere are two types of images in a Millennium “example set”: icons (or whole\nbuttons as images) and media type indicators. A typical setup, until recently,\nhad 145 or so button images. The most recent example set available from\nInnovative has 45 icons and a couple support images for making buttons. These\nimages are coupled with some crufty markup to make the buttons work. The\nlatest set also ships with 39 media indicators (in fairness, we’d use maybe 13\nof those for our library).
\n\nCPL now has one image for all the icons and one image for all the media\nindicators. In total, the\ncatalog screens have 8 images: one is required but never used, another never\nseen, and two others used\ninfrequently. Yes, we grab book jackets from an external service, but that’s\nthe extent of the catalog graphics.
\n\nAn individual example icon weighs in between 600 bytes and 1.3K. Our icon\nsprite is 5.44K. It can be loaded once and\ncached on the user’s machine.\nFor pages with many buttons, this results in far fewer HTTP requests and a smaller total payload. The same\ngoes for media indicators.
\n\nHow do we pull this off? We use two spriting techniques: ‘traditional’\nsprites and \npseudo sprites. The styles to makes these work can be found in\nthe catalog stylesheet.\nWhat’s novel, and how you can pull this off in Millennium, is in carefully\ncrafting what’re called ‘wwwoptions’:
\n\n# pseudo sprite example\nICON_BUT_REQUEST=<span class=\"but icon request\">Request</span>\n\n# traditional sprite example\nIMAGE_MATTYPE3=/screens/spacer.gif\" class=\"media-icon bookmp3\n
As you can see, in both cases activating sprites involves appending classes to\na particular HTML element. In the case of the pseudo sprites, there’s a class\nthat makes anything look like a button, one that pads the left-hand side and\nloads the icon sprite image into the space, and one (‘request’ above) that\nstipulates where in the sprite image the request icon appears. In the\ntraditional sprite, the “IMAGE_MATTYPE3” option must be an image. Since\nthere’s no getting around that, I used a spacer gif. It’s 43 bytes — the\nsmallest practical image for the web. I then\ncircumvented the wwwoption to add the classes to the image.\nThose classes set the background size and position the sprite image.
\n\nBe advised that pseudo sprites only work in standards-compliant browsers and\nIE8+. If a substantial number of your users are on IE7-, you may want to wait.\nUsers with non-supporting browsers can still see the button style we use, but\nthe icons won’t appear. Sites that work for everyone but look better for\nmodern browsers are considered progressively-enhanced;\nthat’s what you can\nconsider these buttons.
\n\nWe use Syndetics Plus, Librarything for\nLibraries, and Google Books\npreviews\non our bibliographic record pages. That’s a lot of stuff to load. As part of\nan overall improvement in JavaScript performance, we changed the way we pull\nin those resources.
\n\nSyndetics Plus, by default, loads onto a page something like this
\n\nThis is a mess. It’s a long chain of serialized resources\nthat aren’t well-cached by the\nbrowser, aren’t served minified and/or\ngzipped, can’t be\nserved over SSL, and\nthat block full page rendering\nuntil they’re complete (whether or not\nthere’s a result). Total payload for this process is 49K.
\n\nLibrarything for Libraries is even worse (here I go\nagain). It goes:
\n\nWhat makes this process so awful is connector.php. It’s over 150K all by\nitself, and it includes the sizzle selector library\nand a bunch of other\nutilities. Which makes one wonder: why not just\nuse jQuery? Moreover, why does a file that loads a comprehensive selector\nengine need to define getElementsByClassName()? connector.php’s JavaScript is\na Frankenstein’s monster of code that pollutes the global namespace. I’m\nafraid that some people might be having nightmares over\nit. This\nfile also includes all functionality for all different ILSes (not just\nMillennium, the one we’re using) and all LTfL features (a small fraction of\nwhich we’re using). This massive file is unminified and uncompressed and is\npart of a call chain that doesn’t support HTTP keep-alive. Minifying the file\nwouldn’t solve all the problems, but it would be less than half the size\n(mostly because their variable names are massive). Ditto on gzip compression,\nwhich could make it less than a quarter of its heft over the wire (without\nminification!).
\n\nWe pull in jQuery from Google (the\nold-fashioned way, so it client-side caches for just about ever) and use it\nfor almost all the (CPL-made)\nJavaScript on the page. The\ncode for us to replace Syndetics Plus’s payload (25K without jQuery) is 150\nbytes before compression. The nearly 200K for LTfL? Less than 1K, and I could\nprobably optimize further.
\n\nCPL-specific code pulls the primary ISBN from bib record pages, validates it,\nthen makes sure the page is served as regular HTTP. All of this occurs after\nthe page has already loaded. If the conditions are met, we then feed the ISBN\nto the widget_response files from the two services, getting back just the\nresults specific to the bib record. The widget_response files handle writing\nto the page all by themselves, so the service-specific code just adds things\nthose scripts expect to find and handles certain on-page actions. Since we do\nthis all asynchronously, the page loads (and feels like it loads) as quickly\nas Millennium allows.
\n\nBeing careful with the three widget services provided the biggest overall\nimprovement to payload size and page rendering speed. Google Page Speed\neliminated the warnings about redirects, uncompressed resources, request\nserialization, unminified javascript, and undeferred scripts.
\n\nWhat’s funny about the terribleness coming from Bowker’s servers is that a big\npart of improving the situation is both easy and a big sack of win. Users\nwould get faster pages and Bowker’d save on bandwidth and hardware specs. Some\nquick apache config of mod_expires and mod_deflate is all that’s required to\npay dividends. A deployment scheme involving minification and/or a refactor of\nthe connector scripts would be more time-consuming, but could make the widgets\nsubstantially faster. Serving out static scripts without query strings would\nbe a huge help, for instance.
\n\nI was more diligent about jQuery best practices like using\nfast selectors,\ncaching selected objects,\nand delegating events to their appropriate containers.
\n\nMillennium has its own JavaScript library. It’s ordinarily served out as 3\nfiles, but we weren’t having any of that. Our Millennium setup\nprevents the default files from loading,\nand instead serves a single file with all three components minified.\niii.js is just under 20K before compression, and 5.2 over the wire. That’s 2 fewer HTTP requests\nand 4.4K less payload on every page.
\n\nI ran all the catalog images through PNGGauntlet,\nwhich uses PNGOUT to reduce file size —\nsometimes by 25% or more. For high-use files, I also weighed the quality\nreduction of making them 8-bit PNGs; the sprites, for instance, get served out\nas 8-bit files, making them substantially smaller.
\n\nI also rolled out a sprite for the site’s\nlayout and theme, optimized the chat widget, and\ncombined and minified CSS files\nfor use by the catalog. Our web server, in contrast to the catalog, is pretty aggressive\nabout caching. Files are served with far-future expires headers. APC for PHP\ncaches the opcode to minimize file reads; this results in faster execution\nspeed across the board, but not necessarily faster serving to the end user. We\nhave drupal caching set up, which benefits from MySQL\nquery caching. Apache gets some love from the OS’s buffer cache. Altogether,\nthe website is a layer of caches.
\n\nI’d like to reduce the payload of every page on our site by rolling out a new\ntheme. There’s a lot of extraneous markup and styling that can get cut out\npretty easily. Other possibilities:
\n\nFor the catalog, a few squeaks of extra speed could come from moving static\nfiles to our web server (which has longer cache lifetimes), combining the\n(minified) catalog CSS into the site CSS, and working with Syndetics to get\nbook jackets from URLs without query parameters.
\n\nCanton Public Library’s Catalog uses a large\nlibrary application called Millennium ILS from Innovative Interfaces,\nInc. Recently, I undertook\nto spruce up the images, styles, and JavaScript for our catalog, and in doing\nso realized substantial speed increases catalog-wide.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Oddly-specific WebPAC tweaks"}, "tags": ["Google","Libraries","Web Design"], "title": "Your Fast Catalog", "date": "2012-03-16 00:00:00 +0000", "slug": "your-fast-catalog", "ext": ".md" }, { "content": "I’m honored to have been selected to present at the first-ever DrupalCamp\nMichigan. The local Drupal community is super\nstrong: they opened registration for 50 people and it sold out so quickly they\nexpanded to 100. Not being a good public speaker at all, you’d think this\nmight be daunting. However, a combination of under-preparedness and lack of\nsleep really put me in the right mindset. So, without further ado, here are\nthe slides and a\nvideo of the presentation:
\n\n\n\n\n\nI originally proposed this session not because I have a ton of experience on\nthe topic and all the answers, but because I wanted to use presenting as an\nexcuse to learn about git.
\n\nIf you’ve been using git for a long time and/or have memorized large portions\nof the Drupal APIs, chances are you won’t be able to learn much from me.
\n\nThe word git was first a British slang word for an annoying or stupid person.\nThe software was named self-deprecatingly from that word. I like to think git stands for\nsomething else though: good shit.
\n\nGit is a fast, distributed version control system.
\n\nIt was originally developed by Linus Torvalds in 2005 to be used for\ndeveloping the Linux kernel
\n\nIf you’ve used another version control system, you might wonder what sets git\napart.
\n\nFrom what I’ve gathered, the most important differences between git and other\nsystems are:
\n\nOther systems, like CVS, subversion, and others, are also considered slow for\naccomplishing certain tasks. While I don’t have a great means of comparison,\ngit seems pretty quick to do most everything.
\n\nThe Drupal project switched from CVS to git in February\n2011. The changeover is a\n3-phase process, of which they’re on phase 2.
\n\nLocally, there are a few tools that can make routine tasks fast and can\nintegrate with the tools you already use.
\n\nI’m a visual, GUI guy, especially for menial tasks. So I like\nTortoiseGit on Windows, along with a\nGit plugin for Notepad++.\nTortoiseGit makes pushing changes a job of a few clicks. The Notepad++ plugin\nlets me press Ctrl+Alt+C, type a commit message, and click a button to commit\nchanges to one or more files. If you think vi is a pain in the butt, tools\nlike these are for you.
\n\nIt’s probably not just you doing development. Even if it is, there’s a\ncompelling reason to have at least one central place for your repositories,\nwhich I’ll explain later.
\n\nBut a side reason to have bare remote repositories is that you can use tools\nintended for remotes, like redmine. Tools like this\nadd another layer for project management. You can do project planning, bug\ntracking, wiki documentation, and other such tasks from a web interface,\nletting either you or your team keep track of things. And if your project is\nout in the open, you can leverage a much larger community using sites like\nGitHub, Google\nCode, or SourceForge.
\n\nLet’s say you have a directory of files that you want to put under version\ncontrol at that path. You’d go there in your terminal, then initiate a new\nrepository. Next you’d add all the files. Those files are queued up and ready\nfor the first commit, which you then perform.
\n\nIf you don’t use the ‘m’ option to add a commit message, the commit command\nwill show the log entry for the commit in vi, and you put the commit message\nat the top. It’s at this point that I’d like to reiterate that vi is a pain in\nthe butt.
\n\nSo that’s how you create a new repo from bash
\n\nThese are the git commands you might use in day-to-day work
\n\nPoint at commands and explain what they do\n^ Learn what the commands do
\n\nThese commands are used less frequently (in general), but it’s good to know\nabout them
\n\nbisect lets you determine where a bug began in the revision history, using a\nbinary search to split the possibilities in half each time.
\n\nThese are also git commands, though you might not use them very often or ever.
\n\nstash is commit for wusses
\n\nSo let’s talk workflow.
\n\nAt my job I’ve got two Drupal sites: “Beta,” which isn’t really the right name\nfor it, since at times it’s a dev box and at others it’s a beta-slash-QA\nmachine.
\n\nAnd the live site.
\n\nThe design and development parts of my job revolve around creating modules and\nthemes to add functionality and enhance the design of just those two\nproperties.
\n\nI’m guessing that’s NOT what your jobs are like. I’m guessing you make lots of\nsites. And those sites in various states exist in multiple places, like your\nlocal dev machine, an internal server for testing, and external hosting that\nyou don’t necessarily control. I don’t envy you.
\n\nA site is Drupal core, plus contrib, plus the data in your database.
\n\nSince Drupal is modular and nearly everything can be changed via hooks, it’s\nreally pretty rare that you have to change anything in core. And if you do,\nI’ve found from experience that it’s usually for temporary debugging rather\nthan for permanent changes.
\n\nDo not hack core.
\n\nSo from Do Not Hack Core we can take away that all the things on the left are\nthings you shouldn’t mess with, and the thing on the right is the only place\nthat customizations go (unless you have a weird multisite setup, which is\ncool, but your workflow’s going to be different).
\n\nA repo at the whole site level is redundant, and reinforces the opposite of\nthe number 1 best practice of the Drupal site-building community.
\n\nWhat about at the ‘sites’ level?
\n\nThis is workable, but you might notice something immediately.
\n\nLook at the sites/all/modules directory.
\n\nYou’re probably not going to be hacking contrib either! All of those modules\nare version tracked in git on the drupal.org site. The vast majority of those\nmodules require zero coding to work exactly as expected. Putting them under\nversion control doesn’t accomplish much.
\n\nThen there’s sites/default
\n\nsites/default/files contains uploaded and attached files. Those files are\nsite-specific and are subject to database dependencies. The files also tend to\nbe images and other files that are unlikely to change. There are a number of\nreasons why version controlling those files is impractical.
\n\nOn the other hand, sites/default/settings.php is a good candidate for revision\ncontrol individually, as it’s something that you have to work on in the\ndevelopment process, and some of the settings will likely have to change\ndepending on where the site lives. The branching model of git could be really\nuseful for this purpose.
\n\nOne way to wrangle sites/default/files and streamline the process is with\n.gitignore files. With a well-made, well-placed .gitignore file or two, you\ncan continue using git add . and git commit -a without adding stuff you don’t\nwant to your project.
\n\n.gitignore files let you choose files to omit from the versioning index, based\non wildcard notation. So instead of omitting /sites/default/files wholesale,\nfor instance, you could just selectively ignore boring images and junk while\npreserving the directory structure wherever the repo might end up.
\n\nConceptually, the two components that you’re likely to work on that can most\nbenefit from version control are:
\n\nIf you start with a working theme, like Zen, you can clone down a repo from\nDrupal.org and use the history of that particular part of the project if you\nneed it. You can create your own branch for your theme and develop from there.
\n\nIf you code up a custom module, it might only be useful for a single site a\nsingle time. But maybe the functionality you add is something that other\nclients might want, or that can be contributed back to the Drupal community.\nModules are reusable pieces, so structuring your repository environment to\nmake them accessible for all sorts of projects is a plus.
\n\nHere’s an example of what repositories on a central server might look like.
\n\nI made the directory structure here very flat, putting core, modules, themes,\nand the site_projects repositories all within a single folder. This would work\nwell if you always use the same base theme along with a limited number of\ncustom modules. This particular setup plays nice with management software like\nredmine, which is one reason a flat structure is attractive.
\n\nIf you’re going to have lots of distinct themes and modules, it might be\nhelpful to create big repos called modules and themes, then use git’s\nsubmodules functionality to manage the individual drupal modules contained\nwithin. Thanks Ben for the submodules tip!
\n\nNow that we have a central place for all the things we’re working on related\nto building our sites, we can optimize our workflow to play nice with version\ncontrol.
\n\nOne way to do that is to set up pushing and pulling.
\n\nIf you don’t already have ssh keys set up between your development box and\nyour repository server, setting that up will make it a lot quicker to push and\npull from git. If you want to deploy via git from the repo server to other\nmachines like your site testing server or even live web server, you’ll also\nwant to set up ssh keys between the those boxes.
\n\nOn your local dev box, use the clone command to make a local version of the\nrepo on your server. When you do that, the source repo becomes a ‘remote’\ncalled origin.
\n\nMake some changes to the local copy (you can branch if you want to, you can\nleave master behind). When you’re done making changes and they’re ready for\nother people in your shop to see/use them, use the push command to send them\nback to the origin.
\n\nOnce the changes are on the server, you can pull them to your deployment\nboxes, or…
\n\nYou can get fancy.
\n\nIt’s a common use case: you end up using the same base theme, modules,\nconfigurations, and other tweaks on most of your projects. You might already\nhave an “install profile” informally; Drupal with all the stuff you use all in\none place.
\n\nThe “drush make” command lets you generate makefiles that turn your informal\ninstall profiles into the real deal. In Drupal 7 it’s easier to make profiles\nthat configure things on install, but technically it should be possible in D6\ntoo. Some combination of the features, strongarm, context, and other helper\nmodules could let you automate some impressive stuff — like pre-built views.
\n\nHint: it might be manual coding work, but if you install a whole bunch of\nsimilar sites, writing a (profile name).install file could be a time-saver in\nthe long run. Especially if you swipe one from an existing public profile and\nsuit it to your needs.
\n\nYou can use the drush make command to import all the dependencies for your\nprofile wherever you need them. Then just run the installer (which if you’re\nsuper fancy you could get working with drush site-install) to have a\nfunctional site in the time it takes to make a pot of coffee because your\njunior dev doesn’t know proper coffee machine etiquette.
\n\nThe makefiles are really flexible, so you can choose particular version\nnumbers of modules for compatibility, apply patch files to change modules or\ncore code, or grab external libraries from tarballs.
\n\nNailing down a “holy grail” workflow for this sort of development takes time\nand effort, and I certainly don’t have all the answers.
\n\nOver the next few weeks, Alex Fisher and I will be working on drush make and\nworkflows, and will report useful findings to our respective blogs.
\n\nYou may also ask about how to go from local dev to testing to quality\nassurance to live, all while easily managing your databases. You may ask that,\nbut I don’t have an answer. Sorry.
\n\nIf you’d like to become a core developer or get involved in a contrib project,\na working knowledge of git will help.
\n\nI’m fighting the urge to give nitty-gritty details here, as the instructions\nare both technical and well-documented. If you’re not a project maintainer,\ncontributing code involves creating patch files based on numbers from the\nissue queue. If you are a project maintainer, you can interact directly with\nthe remote repo (albeit while following the guidelines).
\n\nOne reason I’m avoiding an in-depth explanation is that the Phase 3 git\nmigration could very well change how things get developed on Drupal.org.
\n\nBut here’s how to create a patch file, just in case.
\n\nJust one commit is the easiest for contributing back patches.
\n\nThe Version Control tab on project pages gives really good instructions for\ngrabbing source repos and other contibution tasks, including the specific\nclone command you need to grab a local copy of the repository.
\n\nSo now that you’re a git expert, go out there and contribute back to the\nDrupal community!
\n\nThanks for putting up with me!
\n", "id": "/blog/drupal-and-git", "url": "/blog/drupal-and-git/", "path": "_posts/2011-12-09-drupal-and-git.md", "relative_path": "_posts/2011-12-09-drupal-and-git.md", "excerpt": "I’m honored to have been selected to present at the first-ever DrupalCamp\nMichigan. The local Drupal community is super\nstrong: they opened registration for 50 people and it sold out so quickly they\nexpanded to 100. Not being a good public speaker at all, you’d think this\nmight be daunting. However, a combination of under-preparedness and lack of\nsleep really put me in the right mindset. So, without further ado, here are\nthe slides and a\nvideo of the presentation:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"A presentation that made me locally infamous"}, "tags": ["Web Design"], "title": "Drupal and Git", "date": "2011-12-09 00:00:00 +0000", "slug": "drupal-and-git", "ext": ".md" }, { "content": "My apartment is covered in dry erase boards. I like to use them. Here are some examples:
\n\n\n\n\n\nThis tendency has led to me using them for my slide presentations. I’ve had two in the hopper that I presented at the\nMichigan Library Association’s Tech Escape workshop in May. As is always the case with my presos, be forewarned that they\ncontain a lot of salty language: If you have any dry erase board art requests, please leave them in the comments and I\nwill try my best.
\n\n\n\n\n", "id": "/blog/whiteboard-backlog", "url": "/blog/whiteboard-backlog/", "path": "_posts/2011-06-25-whiteboard-backlog.md", "relative_path": "_posts/2011-06-25-whiteboard-backlog.md", "excerpt": "My apartment is covered in dry erase boards. I like to use them. Here are some examples:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Drawings all over the walls of my apartment"}, "tags": ["art","dry erase","General","whiteboard"], "title": "Whiteboard Backlog", "date": "2011-06-25 00:00:00 +0000", "slug": "whiteboard-backlog", "ext": ".md" }, { "content": "It was one year ago today that I first posted about transliteracy.\nA few days earlier, I had complained on twitter that transliteracy was\n“a bullshit made-up term for the same old stuff.” Since it’s always been my policy on this blog to offer solutions whenever\nI identify a problem, it took a few days of thought before I posted the beginnings of the language model.
\n\nOver the last year, I’ve done some other transliteracy-related stuff that might interest you:
\n\nStarting out, and despite my first tweet calling transliteracy bullshit, I was conciliatory and downright friendly. After\nputting some positive work out there and being ignored, I chose to approach the topic differently and talk about the\ncontroversy. The L&T librarians told me that\nI had gone too far, so before\npublishing Redefining Transliteracy I scaled back and was\nonly semi-controversial (if you consider pedantically listing problems with a definition controversial).
\n\nThing is, that post was probably the most popular of the whole lot. It was even the\nsubject of an assignment for a Digital Media Communication class at Rider University\n(co-instructed by the truly inspirational John LeMasney). I hope most of the post’s appeal\nwas that it offered a compelling case for the adoption of a model for transliteracy that people find useful. I suspect that\npart of the appeal was the oh-no-you-didn’t out-calling of the PART definition. So screw it, this stuff’s been bugging me…
\n\nIf the original “working definition” of transliteracy were claimed to be proprietary, it wouldn’t be a big deal that my\ncriticisms (let’s call them “bug reports”) and suggested improvements (‘patches’) have fallen on deaf ears. But the\nseminal First Monday paper on\ntransliteracy refers to it as open source thinking. Professor Thomas calls\ntransliteracy an open source concept in a well-circulated video:
\n\n\n\n\nWe see it as an open source concept, and we offer it up for you to think about, develop, write about, go to Wikipedia\nand argue about the definition…
\n
One immediate problem is that Wikipedia is a bad place to argue about the definition, since it’s a place for things notable\noutside of itself, not original research or discussion leading to development of new ideas. While it might be acceptable\nto have a discussion of wording on an article’s talk page to some extent,\narguing about the definition using Wikipedia as the sounding board will generally lead to\nNOR,\nNPOV, and/or\nCoI issues. It’s precisely why I haven’t\npersonally made any edits to the transliteracy page. If you don’t already have your hat in the ring, I encourage you to\nedit on the language model’s behalf.
\n\nCalling transliteracy open source is really quite hollow. Is the transliteracy blog really all the source? Where’s a clear\nexplanation of licensure for applicable source, besides a CC icon on the First Monday article? Where’s the mechanism for\nreporting bugs and submitting patches? The fact of the matter is that there is very little open source about PART’s work\non transliteracy. It’s a buzzword in a sea of buzzwords.
\n\nPART, if you do not wish to explicitly put the transliteracy concept under an\nopen source or\nopen creative license, release source material in the same manner, and ideally\nexplain the mechanism\nby which the community can contribute to the project,\nyou should publicly clarify that transliteracy is actually a proprietary concept.
\n\nNeither PART nor\nLibraries and Transliteracy have posted about the language model. Since\nI’m certain that prominent posters of both those blogs have read\nRedefining Transliteracy, it’s curious to me that they\nhaven’t talked at all about the language model on their respective blogs. To me that’s a lie of omission, or worse yet a\nfaith-based lapse of intellectual honesty. After all, they’ve been presented with evidence to the contrary of their claims:
\n\nUnless there is some means of reconciliation to which I’ve not been made privy, believing transliteracy can operate under\nthe PART definition requires faith: belief in the absence of (or in the face of contradictory) evidence. That’s not a leap\nI’m willing to make. I’ve proposed a patch for a definition based instead on language (with thorough explanation of what\nlanguage means in that context) that eliminates all 5 of those problems. Of course, if there were problems with the language\nmodel, I’d be interested in exploring those as well.
\n\nMaybe the silence on those blogs is because of personality conflicts with me. But that only goes so far; at some point\npointing at me and saying I’m being arrogant or condescending just ends up being a distracting\nArgumentum ad hominem. If you think I’m an asshole and don’t want\nto subject your readers to my douchitude, just don’t mention me by name or link to my blog. I don’t care – all I care about\nis furthering the discussion of transliteracy by putting ideas out there. If you’re unwilling to tell your readers about\nideas because they conflict with your pre-formed assumptions, who’s the real asshole?
\n", "id": "/blog/a-year-of-transliteracy-call-to-action", "url": "/blog/a-year-of-transliteracy-call-to-action/", "path": "_posts/2011-05-31-a-year-of-transliteracy-call-to-action.md", "relative_path": "_posts/2011-05-31-a-year-of-transliteracy-call-to-action.md", "excerpt": "It was one year ago today that I first posted about transliteracy.\nA few days earlier, I had complained on twitter that transliteracy was\n“a bullshit made-up term for the same old stuff.” Since it’s always been my policy on this blog to offer solutions whenever\nI identify a problem, it took a few days of thought before I posted the beginnings of the language model.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Putting transliteracy behind me"}, "tags": ["Transliteracy"], "title": "A Year of Transliteracy: Call to Action", "date": "2011-05-31 00:00:00 +0000", "slug": "a-year-of-transliteracy-call-to-action", "ext": ".md" }, { "content": "Chris Coyier posted a nice, working\nsolution to a real problem over at CSS-Tricks. Basically, CSS lets you\nstyle your website to look and work well on mobile devices\nby over-writing the styles of your full-size website. There\nare performance drawbacks to this approach, but for the most part it’s the best-of-all-possible-worlds solution.
\n\nOne thorny problem, though, is over-riding the style of certain elements that use the width of the screen liberally by\ndefault. One such element is the venerable data table.
\n\nCoyier’s solution is great in that each table cell is labeled. However, doing this requires either writing CSS manually\nfor every data table on the site (which is near-impossible for large sites) or having the same thing done with scripting\non either the server or client side:
\n\n\n\nI propose a generalized solution that requires no scripting whatsoever. The drawback of this method, though, is that the\ncells are not individually labeled. The example is also more compact, but this aspect can be tweaked by marrying the two\nmethods:
\n\n@media screen and (max-width: 720px) {\n table {\n display: block;\n }\n\n td,\n thead th {\n border-color: #444;\n border-style: solid;\n border-width: 0 2px 0 0;\n display: inline;\n float: left;\n }\n\n td:last-child,\n th:last-child {\n border-right: 0 none;\n }\n\n thead th {\n background: transparent;\n font-size: 1.1em;\n }\n\n tr {\n display: block;\n float: left;\n clear: left;\n padding: 6px 0;\n width: 100%;\n }\n\n thead tr {\n border-bottom: 4px solid #444;\n margin: 0 0 .3em 0;\n padding: 0 0 .2em 0;\n }\n\n tbody tr:nth-child(even) {\n background: #ddd;\n }\n\n td:nth-child(5n+1),\n th:nth-child(5n+1) {\n background: #FFD8D8;\n }\n\n td:nth-child(5n+2),\n th:nth-child(5n+2) {\n background: #FFE8D8;\n }\n\n td:nth-child(5n+3),\n th:nth-child(5n+3) {\n background: #FFF8D8;\n }\n\n td:nth-child(5n+4),\n th:nth-child(5n+4) {\n background: #D8FFD8;\n }\n\n td:nth-child(5n+5),\n th:nth-child(5n+5) {\n background: #D8D8FF;\n }\n}\n
Open the working demo and resize your window to under 720 pixels wide to see\nthe effect. I call this approach the “Rainbow Tables” method :-)
\n\nThanks to Chris Coyier for posting a thoughtful working solution, and thereby motivating\nme to post about my approach after sitting on it (in production no less!) for almost a year.
\n", "id": "/blog/another-responsive-data-tables-approach", "url": "/blog/another-responsive-data-tables-approach/", "path": "_posts/2011-04-27-another-responsive-data-tables-approach.md", "relative_path": "_posts/2011-04-27-another-responsive-data-tables-approach.md", "excerpt": "Chris Coyier posted a nice, working\nsolution to a real problem over at CSS-Tricks. Basically, CSS lets you\nstyle your website to look and work well on mobile devices\nby over-writing the styles of your full-size website. There\nare performance drawbacks to this approach, but for the most part it’s the best-of-all-possible-worlds solution.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Little Bobby Tables strikes again"}, "tags": ["General","Web Design"], "title": "Another Responsive Data Tables Approach", "date": "2011-04-27 00:00:00 +0000", "slug": "another-responsive-data-tables-approach", "ext": ".md" }, { "content": "For 2011, my New Year’s resolution was three words: exploration, patience, transparency. It’s been a goal of mine to\nassess the documents in my Google Docs, share as appropriate, and disseminate the information once available.
\n\nIt’s with that goal in mind that I’m\nreleasing these 65+ documents.\nThis release makes up only a fraction of the electronic documents that could tentatively be shared, but it’s a start.\nThere’s some good stuff in there; also, some pretty useless stuff.
\n\nI look forward to continuing this exercise as the year goes on.
\n", "id": "/blog/personal-transparency", "url": "/blog/personal-transparency/", "path": "_posts/2011-04-18-personal-transparency.md", "relative_path": "_posts/2011-04-18-personal-transparency.md", "excerpt": "For 2011, my New Year’s resolution was three words: exploration, patience, transparency. It’s been a goal of mine to\nassess the documents in my Google Docs, share as appropriate, and disseminate the information once available.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Bradleaks: a document dump"}, "tags": ["General"], "title": "Personal Transparency", "date": "2011-04-18 00:00:00 +0000", "slug": "personal-transparency", "ext": ".md" }, { "content": "At the end of last year, my library school classmate Lane Wilkinson and I had this great\nemail conversation. I had just posted Redefining Transliteracy, and he and I\ndiscussed the various implications of it. What I found most awesome were Lane’s questions\nregarding definitions of words used in the language-based transliteracy definition: “What do you mean by language?”, “What\ndoes encoding and decoding mean in this context?”, etc.
\n\nGiven that turnabout is fair play, and that Lane specifically requested feedback, I have a definition-based question\nregarding his recent post:
\n\n\n\nWhat definition of medium is used in this context?
\n\nTo me, a medium is a go-between over time and space used to convey information:
\n\nMedium can inform us about a lot of things. It can also confuse the issue. The reason I’ve pushed so hard for literacies\nto be defined as language skills is that many languages are relatively medium-agnostic. A letter written in ink on paper\nand one written in marker on posterboard are different in many ways, including both medium and aspects of visual language;\nbut if the textual content of both is the same, the written language of both is equivalent. If that same text is on a\ncomputer screen or a television or a tattoo, the written language portion remains congruent.
\n\nIn usage, people also tend to conflate medium with mode (semiotic modality). Modality is nearly a sensory means of\ncategorization. Except it’s not.
\n\nWhether medium or modality, questions arise:
\n\nLanguage requires a medium. Communicating (over time and space) constitutes information being encoded into signs and symbols\nand sent over a channel, then decoded by the receiver(s) to be interpreted. Often, though, changing the channel has little\neffect on the integrity of the semiotics. McLuhan’s stickiest mind-virus, “the medium is the message,” is widely misunderstood,\nand is dead wrong much more often than it is right.
\n\nSince literacies are abilities for a sender to write and a receiver to read a message, rather than abilities of either\nparty to grok a medium, it makes more sense from a literacy taxonomy standpoint to define and\ncategorize literacies by linguistic properties\nrather than media.
\n\nAlso, I think the literacy ecosystem would be a lot cleaner if we could agree that, whether “information literacy” is actually\na literacy or literacies or not, its name is a really crappy mistake.
\n\nOtherwise, the diagram is fantastic. It’s especially astute because it shows how literacies named and in common use can\nbe grouped, even if those named literacies are themselves problematic. Literacy sucks indeed.
\n", "id": "/blog/matters-of-media", "url": "/blog/matters-of-media/", "path": "_posts/2011-03-30-matters-of-media.md", "relative_path": "_posts/2011-03-30-matters-of-media.md", "excerpt": "At the end of last year, my library school classmate Lane Wilkinson and I had this great\nemail conversation. I had just posted Redefining Transliteracy, and he and I\ndiscussed the various implications of it. What I found most awesome were Lane’s questions\nregarding definitions of words used in the language-based transliteracy definition: “What do you mean by language?”, “What\ndoes encoding and decoding mean in this context?”, etc.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Making Claude Shannon spin in his grave"}, "tags": ["Transliteracy"], "title": "Matters of Media", "date": "2011-03-30 00:00:00 +0000", "slug": "matters-of-media", "ext": ".md" }, { "content": "I’d like to touch briefly on a widely-circulated LJ post by Aaron Schmidt entitled\nResist That Redesign.\nIt is generally good advice – using iterative website design rather than relying on complete redesigns. However, I think\nthe advice needs better context.
\n\nFor one thing, most library websites are really outdated and bad. Comparing the design/development workflows of Apple and\nGoogle (nice!) or Amazon and Netflix (not exactly gems of design) to how libraries maintain their sites is apples-to-oranges.\nIf a library has a flat-file website (Not a straw man: this is common in libraries!), performing a complete\nredesign/redevelopment is probably advisable. A “slowly evolved” CMS developed in-house at a library is likely to be\nslapdash, and there are tons of available CMSes that are well-designed, secure, free, and supported.
\n\nWhat’s not mentioned in the original post is that redesigns don’t have to be long, painstaking processes. Bad redesign\nprocesses are that way, but a sufficiently-experienced and talented designer can ease those woes. The solution for doing\na good redesign is to have a good designer.
\n\nLikewise, iterative design isn’t always a breezy process, and it often isn’t design. Design needs control; website creative\ncontrol is often lacking in library environments. What often ends up happening under the guise of “iterative design” is\nactually a patchwork; sometimes from having too many cooks in the kitchen, sometimes from having one crummy cook. We’ve\nall seen these websites; they start out clean and freshly-designed. Then someone pastes in a widget and it clashes with\nthe design. Then comes more widgets ad nauseum until the site looks and works awful. As such, the solution for doing good\niterative design is to have a good designer.
\n\nLibrary folks: don’t resist redesigns. If a well-designed website is important to you, hire a good web designer. Trust\ntheir judgment to decide whether the best course of action is to iteratively improve your site or to do a full redesign.
\n", "id": "/blog/resist-that-advice", "url": "/blog/resist-that-advice/", "path": "_posts/2011-03-03-resist-that-advice.md", "relative_path": "_posts/2011-03-03-resist-that-advice.md", "excerpt": "I’d like to touch briefly on a widely-circulated LJ post by Aaron Schmidt entitled\nResist That Redesign.\nIt is generally good advice – using iterative website design rather than relying on complete redesigns. However, I think\nthe advice needs better context.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Redesign early and often?"}, "tags": ["Libraries","Web Design"], "title": "Resist That Advice ", "date": "2011-03-03 00:00:00 +0000", "slug": "resist-that-advice", "ext": ".md" }, { "content": "Last week, David Rothman posted\nCommensurable Nonsense (Transliteracy), a post\ncritical of transliteracy from an Information Literacy perspective. David’s arguments were plausible-sounding fallacies,\nleading to some serious confusion.
\n\nInformation Literacy is a bad name for really good concepts. Let’s change the name (again!) to avoid confusion.
\n\nRothman’s post starts with the two most common definitions of literacy:
\n\nNothing wrong there. However, it’s implied that for the purposes of transliteracy the second definition is the important\none. I don’t see how one would reach that conclusion, given that the definition of transliteracy quoted later in the post\nstarts “Transliteracy is the ability to read, write and interact…,” pointing to the first definition rather than the\nsecond. Transliteracy is about reading and writing (or their equivalents in other senses/contexts); working from some\ndifferent assumption is a straw man.
\n\nThe second problem is that Information Literacy is not a literacy per his own criteria. If a literacy is an ability\nto read and write or knowledge of a particular subject, where does “Information Literacy is the set of skills needed to\nfind, retrieve, analyze, and use information” fit? The common definitions of IL as critical skills are incompatible with\nthe extended-but- conventional literacies of transliteracy. As such, comparing IL to transliteracy in such a manner has\nno bearing.
\n\nThis framing of transliteracy as a subset of Information Literacy was implied by Lane Wilkinson’s post\nTransliteracy and Incommensurability,\nfurther implied by Rothman’s, and\nelaborated upon by Meredith\nFarkas, Lane\nWilkinson, and\nothers.
\n\nThe second problem I mentioned — that Information Literacy isn’t a literacy — underlies the growing misconception. IL\nrequires conventional literacies, but is not encompassing of them by definition. IL advocates apparently consider IL\nto be all- encompassing, but that’s a difficult-to-defend position. As such, the topics important to transliteracy, at\nleast before last week, are distinct from IL.
\n\nThe ensuing discussion has led to confusion over the practical boundaries of these terms. For instance, it isn’t clear how\nbig transliteracy’s domain is per this newly-thin-air-pulled definition. In\nWhy Transliteracy?, Lane insinuates\ntransliteracy encompasses the Venn diagram of IL:
\n\n\n\n\nFor me, transliteracy is the bridge between isolated spheres of information literacy,…
\n
But on his personal blog, he writes:
\n\n\n\n\nI’m only using transliteracy as a catch-all for one particular slice of information literacy that I haven’t seen before.
\n
This leads me to wonder: is transliteracy an umbrella over Information Literacy and other literacies as most everyone seemed\nto agree prior to last week, or just some small sliver of IL?
\n\nIt’s neither, of course! Information Literacy is the notable exception to the transliteracy umbrella. I hinted at this in\nmy Redefining Transliteracy post and\na smidge on twitter; here are the charges against IL’s compatibility\nwith transliteracy:
\n\nI cite these charges as more than just a reason not to compare Information Literacy and transliteracy directly; I also\ncontend that it’s reason to deprecate Information Literacy and call its skills something else.
\n\nWe’ve done this before. As a field of study, Library and Information Science effectively deprecated the term “Bibliographic\nInstruction” in favor of “Information Literacy.” The reasons behind this switch, it appears to me, were fourfold:
\n\nIf David Rothman is correct about anything, librarians are pedants of language\n. As such, clarity in the terminology we use for our core principles should be paramount. Additionally, re-re-coining this\nset of skills might cure what many seem to agree is cyclical entrenchment (per #1).
\n\nHere’s what I’m proposing: From some point in the near future on, people talking about the useful, respectable principles\ncurrently referred to erroneously as “Information Literacy” should instead use the term (insert term here). Previous\nreferences to Bibliographic Instruction, Information Literacy, and other less-than-ideal terms should be considered\n(insert term here) by implication.
\n\nI think transliteracy and Information Literacy are like peanut butter and jelly. You can have one without the\nother, but they’re usually better together. If we can remove the myth that IL is a literacy of comparison (through deprecation\nor social agreement), we can more effectively work to develop a helpful instructional ecosystem for our patrons. We can\nlook at transliteracy for all the different ways people encode and decode information, and Information Literacy\nfor the critical skills associated with that information parsing.
Last week, David Rothman posted\nCommensurable Nonsense (Transliteracy), a post\ncritical of transliteracy from an Information Literacy perspective. David’s arguments were plausible-sounding fallacies,\nleading to some serious confusion.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Just one literacy was not enough criticism for one Brad"}, "tags": ["Libraries","Transliteracy"], "title": "IL Communication", "date": "2010-12-30 00:00:00 +0000", "slug": "il-communication", "ext": ".md" }, { "content": "At the end of May I quoted Voltaire in my\nfirst transliteracy-related post: “Define your terms, you will\npermit me again to say, or we shall never understand one another.” It’s been a long process, but I feel I’ve\ndefined a language model of transliteracy to a satisfactory\nextent. So before I demolish IL in the\nInformation Literacy vs.\ntransliteracy debate, I figured it would\nbe fun to offer a practical example of the language model.
\n\nOne thing came to mind when thinking of examples: Brian Hulsey’s\nEveryday Transliteracy video. It’s known as the “blueberry smoothie” video\nto many; it shows how someone might communicate the same message (a blueberry smoothie recipe) using different websites\nand other forms of communication, and all in a concise, friendly manner.
\n\n\n\nLet’s look at the examples through a linguistic lens.
\n\nMost examples involve some form of written language. In many cases, though, communication via a particular website or other\nform requires subtle changes of dialect or language variant.
\n\nIn many ways, the language used in email is most like that of a written letter from perhaps a century ago. If a writer\nwished to ignore clear, concise business style, he or she could write an email of flowery prose or any other style you might\notherwise encounter in written language. To me, the written language of an email is something of a baseline for comparison\nto other language usage.
\n\nLinguistically, twitter is an interesting variant. Where you might devote a whole paragraph in an email for a stand-alone\nidea, the standard on twitter is for one tweet (at 140 characters or fewer) to do the same. As such, someone familiar with\nthe letter/email baseline might develop a workflow for converting their verbose ideas to tweet-appropriate length:
\n\nThere’s more to it, such as @replies, but the above workflow is the gist. It’s interesting, anecdotally at least, that\ntweets and text messages diverge somewhat in linguistic usage, despite their similarity in imposed length restrictions.\nWhereas it’s common to use instant message-type lingo (lol, brb, stfu, etc.) in an SMS message, it’s at least somewhat\nless common on twitter. It’s also more accepted to go over the character limit in text messaging, while quite impractical\non twitter.
\n\nFacebook doesn’t formally impose stringent length limits like twitter. A savvy facebook user, however, knows that a long\nstatus update will get cut off at a certain length; and the cut off text is only viewable after clicking a “read more” link.\nThis leads to a subtly different usage than twitter. Facebook users are more likely to use full words in full sentences.
\n\nThe combination of “read more” links and quoting the first three or so words of comments on profile pages means that effective\nfacebook users avoid “burying the lead.” Such users communicate\nin pithy, concise posts, with their thesis statement within the first few words.
\n\nFacebook users may sometimes forgo leading personal pronouns since their name is displayed before their status. This is\na less-likely occurrence on twitter, where users are represented by short usernames rather than their actual names.
\n\nBlogs are similar to emails from a written language perspective. There are nuances, of course, but it’s long-form writing\nwith the optional addition of hypertext elements, just like rich email.
\n\nTalking on the phone obviously isn’t written language. However, I think it’s a great basic example of transliteracy. Brian,\nin the video, reads the necessary amount of orange juice aloud off the screen. This is him reading (decoding) written language\nand speaking (writing, encoding) the same message into oral language. This is a basic transliteracy that many of us possess\nthat we often take for granted.
\n\nSimilar to long-form written language. For a message longer than originally intended, someone writing a post-it message\nmight employ chat lingo and abbreviations, or might start writing smaller near the end of the message.
\n\nURLs are a written language construct all their own. I learned what URLs\nlooked like, how they worked, and the intricacies of their syntax and semantics from using them, rather than by any formal\ninstruction. However, an internet user can gain a lot from being instructed in URLs.
\n\nFor instance, Brian was 100% correct to shorten the URL for the recipe before posting it to twitter, as that’s common practice.\nOn the other hand, he didn’t show how he used the full URL for the resource in facebook. It’s knowing usage rules like\nthese that make URLs an important language literacy.
\n\nWritten language is a special subset of visual language. Hypertext is where, on the web, written language and what we\nusually consider visual language intersect. Hypertext elements have default styles per user agent stylesheets in the browser,\nmaking them visual elements. They are also semantically- defined markup elements per their SGML syntax. So bold text or\nitalic text or a link or a heading appear different from text not wrapped with any markup; the elements’ semantics\nprecede their appearance.
\n\nA web user who doesn’t know how to identify the common appearance and function of hypertext elements would be at a great\ndisadvantage. Often the appearance of form elements, for instance, are derived from similar UI elements from the base\noperating system’s toolkit. However, sites will often style or re-implement elements like buttons, so the** essence of\nbutton-like symbols is a useful** and transferable visual language skill.
\n\nNote that in the video, Gmail, twitter, facebook, and Wordpress all have similar, but at least somewhat-different,\nrepresentations of buttons, text fields, text areas, rich text boxes, etc. I think it’s in the subtleties of hypertext visual\nlanguage that it’s most practical to use the language model instead of the platforms/tools/media model.
\n\nEach site uses layout conventions involving columns, proportion, color, contrast, and other precepts of visual language.\nHow they are similar and different is a teachable thing for those we might instruct. Knowing basic visual language of\nwebsites is a transferable skill.
\n\nBesides site layout, another interesting form of visual language are symbols, often used as icons.\nThe Noun Project is a cool resource for exploring this aspect of visual language.
\n\nI’ve written a lot about a little, and have still managed to leave out a lot! The literacies at play when doing\nseemingly-simple things are often complex and varied.
\n\nWhat I wanted to demonstrate more than anything else is that the language model allows us to talk about all the same\ntransliteracy things, but in a way that actually gets to the core literacies.
\n\nI think these language literacies allow us to work from a common set of terminology. They let us proceed quicker to\ndeveloping more-universal and more useful curricula for instruction.
\n\nA point to ponder: Brian’s video, many (myself included) contend, is a wonderful example of transliteracy. It does not,\nhowever, focus in any way on the critical abilities normally associated with Information Literacy.
\n", "id": "/blog/languages-of-a-blueberry-smoothie", "url": "/blog/languages-of-a-blueberry-smoothie/", "path": "_posts/2010-12-27-languages-of-a-blueberry-smoothie.md", "relative_path": "_posts/2010-12-27-languages-of-a-blueberry-smoothie.md", "excerpt": "At the end of May I quoted Voltaire in my\nfirst transliteracy-related post: “Define your terms, you will\npermit me again to say, or we shall never understand one another.” It’s been a long process, but I feel I’ve\ndefined a language model of transliteracy to a satisfactory\nextent. So before I demolish IL in the\nInformation Literacy vs.\ntransliteracy debate, I figured it would\nbe fun to offer a practical example of the language model.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Still trying to bring folks around to my pedantry"}, "tags": ["General","Libraries","Transliteracy"], "title": "Languages of a Blueberry Smoothie", "date": "2010-12-27 00:00:00 +0000", "slug": "languages-of-a-blueberry-smoothie", "ext": ".md" }, { "content": "A cool-looking box arrived unannounced at my apartment two days ago. It was Google’s Cr-48 notebook for the Chrome OS Pilot\nProgram. It was a pleasant surprise, and I’ve been happy trying to crash it for the last 48 hours. Here’s an analysis of\nthis gift horse’s mouth:
\n\nA lot has been made of the Cr-48’s keyboard’s lack of a caps lock. To me, though, the trackpad is the interface device that\nhas caused the most trouble so far.
\n\nOn my (aluminum) MacBook, I’d configured the trackpad to right-click when the pad is clicked from the right region and\nleft-click for the left region. This helps out in the OS quite a bit, but is most handy in the browser for “Open Link in\nnew tab,” I use that context menu item in reddit, Google Reader, facebook, and for ‘shopping’ in incognito mode; in other\nwords, for the sites I visit most on the web. I could connect a mouse and click the scrollwheel and get back a lot of lost\nlink-opening productivity, but I want to note that it would be a departure from my previous expectation of laptop trackpads.\nThe “two finger click” right-click gesture on the Cr-48 is terribly-inconsistent and annoyingly-different from previous\nexperiences.
\n\nI’m also personally used to a three-finger swipe on the trackpad to go back and forward. Having to use function keys,\nshortcuts, or move the mouse pointer and click are all super slow in comparison. It won’t be fun to browse the web without\nthese features.
\n\nI like the function keys a lot. They’re: back, forward, reload, full screen, toggle windows, brightness down, brightness\nup, mute, volume down, volume up.
\n\nThe search key replacing the caps lock is novel. However, when I accidentally hit the caps lock on any other computer,\nwhat I type continues to print to screen, albeit in all caps. On Chrome OS, a new tab pops open and what I type shows up\nin the omnibox. It hasn’t happened yet, but I anticipate it’ll cause me some annoyance. Since I use ctrl+t constantly\nand consistently to open a new tab, I don’t really get a huge benefit from the replacement key.
\n\nThe arrow keys are all scrunched. Meh.
\n\nWhat the keyboard needs desperately is a backlight. It’s an all-black machine with a lowercase keyboard (a nice UI touch\nin my book, since the default letters that appear when you press the keys are lowercase), so it’s hard to see what key\nyou’re pressing. Perhaps this will be less of a concern when I get used to the slightly-different layout. Also, it’s testing\nhardware, so production mileage will vary. One thing that’s occurred to me is that a backlit keyboard might make some of\nthe trackpad issues more bearable.
\n\nStartup is snappy. In fact, it was a breezy process to get the notebook on the internet after unboxing it.
\n\nI’ve found that there’s a slight delay in establishing connectivity after opening the lid, but it’s not bad at all.
\n\nThe OS would feel snappier and be more usable if the new tab page loaded faster. For me, it’s a race between the URL coming\nup in the omnibox and the app link appearing on the new tab page. Since the tab page looks cool, I like when it wins the\nrace sometimes.
\n\nThe big performance problem is flash. I’m not sure if it’s the hardware or flash itself or the sandboxing model or some\ncombination of all those things, but watching video on this thing is just the worst. Since I’m a hulu junkie, keeping to\nmy promise to use this as my primary machine is going to suck unless flash performance improves significantly. To be honest,\nI’ve already sort of gotten used to watching hulu all jumpy-like in just the last two days. Work with what you’re given,\nI guess.
\n\nIt’s Chrome. I like Chrome.
\n\nI think there’s a legitimacy to the complaints that you can’t really produce content effectively without a robust filesystem\nand using only web apps. However, I see these as solvable problems that will only get better with time. For instance, I’m\nconfident in my present ability to produce documents in Google Docs (as I have for 3 years now), edit photos and make vector\ngraphics in Aviary, and do other limited media production using web apps.
\n\nIn order to do this more effectively, though, access to files on peripheral devices has to be better-supported. I’ve found\nthe core file system satisfactory so far, but can envision it would be better if the various prompts were more unified\nand the keyboard shortcuts more memorable. I think it’d be cool if downloads piggybacked to my Google Docs storage\nasynchronously. If local files appeared in a Google Docs List-like interface with the ability to quickly search those files,\nI think it would be a knock out of the park.
\n\nctrl+alt+t brings up the Chrome Shell, or crosh for short. It has a very limited list of commands. I was able to use ssh,\nso that’s cool.
\n\nIf you click “About Chrome OS” in the wrench menu and select “more info,” you can switch between the beta and dev channels.
\n\nThis note isn’t just about Chrome OS, but about the web app store in general. Google specs a 128x128 icon for apps and\nextensions, but asks that they be 96 pixels square, centered, with padding. This makes the icon ecosystem inconsistent,\nsince developers sometimes glaze over the part about the padding. For instance, Aviary’s icon is huge compared to the Google\nicons.
\n\nThere are some things I don’t like that are probably easy fixes; or they won’t apply to consumer hardware. Once the OS\ngets those fixes or I get used to living without them, this will be a great machine for surfing the web and for occasionally\nproducing stuff.
\n\nI’m optimistic that the web is moving forward, and that the few remaining things I rely upon desktop apps for will have\nviable cloud-based equivalents soon. I’m also confident that Chrome OS will have a novel, simple, usable solution for\nhandling peripheral storage devices and for the necessary interaction with some sort of file system.
\n\nIt’s been fun these past two days, and I look forward to testing this machine a lot more.
\n", "id": "/blog/my-first-chrome-48", "url": "/blog/my-first-chrome-48/", "path": "_posts/2010-12-19-my-first-chrome-48.md", "relative_path": "_posts/2010-12-19-my-first-chrome-48.md", "excerpt": "A cool-looking box arrived unannounced at my apartment two days ago. It was Google’s Cr-48 notebook for the Chrome OS Pilot\nProgram. It was a pleasant surprise, and I’ve been happy trying to crash it for the last 48 hours. Here’s an analysis of\nthis gift horse’s mouth:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Early review of a free Chromebook"}, "tags": ["Google"], "title": "My First Chrome 48", "date": "2010-12-19 00:00:00 +0000", "slug": "my-first-chrome-48", "ext": ".md" }, { "content": "I’ve been weighing whether to blog about some issues I’ve come across with LibraryThing.\nI’ve happily used their flagship product,\nlistened to their founder/owner keynote conferences,\nand have been something of a cheerleader for the LibraryThing for Libraries enhancements.\nSo it follows that I was initially optimistic about their Library Anywhere product.
\n\nUnfortunately, my testing of that product and the conversation with an LT representative that followed (which I consider\ndue diligence in reporting security/performance bugs prior to this post) left a bad taste in my mouth. For full disclosure:
\n\nBeing a compulsive reddit-lurker, I saw\nthis warning about LT passwords on\nthe front page a few weeks ago. It reminded me that I had sent an email 6 months before with performance and accessibility\n(but not security) suggestions to which LT never responded. Last week I re- sent that email, along with the reddit link.
\n\nThe issue outlined in the reddit thread means that, if a hacker were to compromise the LibraryThing database, all the users’\npasswords would be easily available. Since people often re-use usernames and passwords between sites, this can lead to identity\ntheft. Sending passwords to users as plain text via email can lead to other security concerns as well.
\n\nFor the non-technical: Even though there doesn’t initially seem to be a way around saving passwords as themselves, it’s\nactually described by experts\nas “Security 101”. Instead of storing a password, you store something unique and irreversible created by the password. Then,\nwhen someone signs in, you run the same process and compare the results for a match. There’s more to it, but the best practice\nfor sensitive credential storage includes cryptographic hashing.
\n\nIt was an issue before the reddit mention, likely for around 5 years. It might be more of an issue now, given that identity\nthieves may have seen it widely advertised that plaintext passwords were available on a particular site. It has been over\n2 weeks and LT passwords are still stored as plain text. Additionally, I received no update about that issue in my email,\nhave not seen a blog post about it, have not seen an active bug report, have\nnot seen a tweet, reddit reply, or any other indication that LibraryThing is taking this security concern seriously.
\n\nIf you are a registered LibraryThing user, I suggest that you:
\n\nAs part of reviewing the performance and accessibility suggestions I had made previously, I dug into the front-end code\nof the Library Anywhere product. This isn’t hacking since I just observed code using Firebug\nduring the normal operation of the app.
\n\nIn my analysis (which you can duplicate if you’ve used an inspector like Firebug), I found that most every action at the\nlibrary level — search queries included — in the full-featured version of the app returns much more than just search results.\nIt also returns institutional customer information, such as: contact full name, contact email, billing preference,\nbilling status, etc. I have not found anywhere in the Library Anywhere interface where that information appears, and\nam unsure institutions know that their information is being quietly disclosed every time a patron searches their library\nusing the app.
\n\nI did not get the feeling the LT developer I corresponded with was very concerned with this issue.
\n\nAs you might imagine by the above-mentioned security issue, unnecessary information is sent from the server to the user\nevery time they perform a search. After removing the customer information and some other redundancy, I estimate search\nresults could be less than half the size they are currently. I suggested specific optimizations to their JSON response that\nI’d be happy to further explain if anyone’s interested, but the basic premise here is that reducing the size of that file\nis a win-win.
\n\nThis is particularly important because we’re talking about a mobile app. There is a certain lag that’s necessary in\nLibrary Anywhere; LibraryThing has to search an institution’s catalog, process the data they get, then format it to make\nit useful before sending it along. However, the size of the file sent from LibraryThing to the user can still effect\nnoticeable changes in speed (and tentatively save LT money on bandwidth). This is more true on 3G or EDGE/Cellular connections\nthan broadband/wi-fi, so you’d assume a mobile app would pay extra-close attention to it.
\n\nIn the particular case of the search results, a speed boost multiplies the responsiveness of the app. Search results include\nimages of book jackets, which can’t be loaded until the first file gets returned. So, the faster the results file gets there,\nthe faster a whole bunch more files can arrive, leading to a progressively-faster experience.
\n\nI’m only speculating, but my guess is that many institutions were interested in Library Anywhere because it advertised a\nSection 508-compliant version.\nWith higher-ups mandating compliance and ILS vendors being slow to fulfill, there’s a market for accessible alternative\nsolutions.
\n\nThe “universal version” may be Section 508 compliant, but the bells-and-whistles version is far from it. The disturbing\npart is that they have full control over the interface, so there is zero reason why it couldn’t be. After all, separate\naccessible versions of websites\nare considered a last resort by standards bodies.\nHere’s an example of the lack of Library Anywhere accessibility:
\n\n\n\nThis is how the regular version of Library Anywhere appears in a browser with JavaScript turned off. This may sound like\na red herring at first, but the most recent numbers I’ve heard put non-JavaScript users are around 5%, while blind users,\ntraditionally the standard-bearers of accessibility, at around 0.3% of web users.
\n\nWhat’s particularly messed up here is that a user cannot even get to the “universal version” from this blank screen. They\nare stuck. This is true for other accessibility situations besides JavaScript being off. But it doesn’t have to be this\nway.
\n\nProgressive Enhancement is a principle by which web applications\nare made to work without JavaScript and CSS. Then, style via CSS and advanced/fancy behaviors via JavaScript are added to\nthat interface to make for a nicer experience on more-advanced browsers. Since the underlying version of the app works\nwithout any bells and whistles, it should be accessible to many different sorts of users.\nFurther advancements in HTML and JavaScript can even make the additional and fancy\nfeatures accessible. I provided rather detailed suggestions (which I’m omitting here but would be happy to explain) for\nhow to accomplish such an effect.
\n\nLibraryThing doesn’t have to make Library Anywhere accessible. But, I think prospective customers have a right to know\nthat the advertised Section-508-compliant version is only part of a woefully-inaccessible product.
\n", "id": "/blog/librarything-issues", "url": "/blog/librarything-issues/", "path": "_posts/2010-12-11-librarything-issues.md", "relative_path": "_posts/2010-12-11-librarything-issues.md", "excerpt": "I’ve been weighing whether to blog about some issues I’ve come across with LibraryThing.\nI’ve happily used their flagship product,\nlistened to their founder/owner keynote conferences,\nand have been something of a cheerleader for the LibraryThing for Libraries enhancements.\nSo it follows that I was initially optimistic about their Library Anywhere product.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Early versions of a catalog app were nightmarish"}, "tags": ["Libraries"], "title": "LibraryThing Issues", "date": "2010-12-11 00:00:00 +0000", "slug": "librarything-issues", "ext": ".md" }, { "content": "I owe a debt of gratitude to my former classmate Lane Wilkinson for the discussion about transliteracy we shared via email.\nMore importantly for you, dear reader, is that Lane writes a blog called Sense and Reference\nwith some of the best and most thought-provoking posts in the library world.
\n\nIf you’ve followed the series of posts about transliteracy on this blog, perhaps you’d agree that I’ve approached the topic\nsomewhat backwards:
\n\nIn this post I’d like to illustrate that the issues with the definition are causing problems: namely inconsistent communication\namong transliteracy researchers.
\n\nIn his post, On defining transliteracy, Lane\nasserts that since transliteracy is a young term, it may not be appropriate now (or ever) to define transliteracy intensionally.\nI would absolutely agree with this notion if transliteracy were defined extensionally.
\n\nIn the literature, the PART working definition is not only the current definition of record, but the basis for a functioning\nintensional unit. If we acknowledge that transliteracy is trans- plus literacy without making the necessary pre-assumptions\nof my previous posts, people still naturally use the word to mean “An ability to (do something) across (something).”
\n\nThe first blank, “the ability to (do something)” is much less contentious among transliteracy writers. The PART definition\nfills the blank with “read, write, and interact” while my suggestion instead goes for “encode and decode information.” I\nthink in both instances the intent is largely the same:
\n\nMy review of the literature confirms the agreement on these conditions of the first blank, despite the difference in wording\nI suggest.
\n\nA review of the literature\n(which you’re free to contribute to) shows us what transliterate entities are purportedly doing something across:
\n\n\n\nThe agreement isn’t total, but the clear majority of those discussing transliteracy have latched onto ‘medium’ as the unit\nthat transliterate people are literate across. As such, the “precise necessary and sufficient conditions for being an\ninstance of transliteracy” are asserted overwhelmingly by writers in the field to be met by being able to read, write, and\ninteract across media.
\n\nBut medium is used inconsistently with regard to scope, and often outside of the usage of any other field. As such, the\ncondition-facilitating uncertainty that would otherwise be attached to an extensional ‘transliteracy’ is instead confusing\nthe word ‘medium’.
\n\nFor instance, is facebook a medium? What about twitter? Is there a single “facebook literacy” or “twitteracy”? Is medium\nintended as it is in the field of Communications? Of Art? In a McLuhan sense of the word?
\n\nThere is no agreement in the literature.
\n\nThe word ‘medium’ is being used as a placeholder for an ill-defined unit of literacy. This placeholder isn’t serving anyone\nbecause of the stark variation in usage.
\n\nI’ve made a case for language to be the unit instead,\nclarified what language means, and\nshowed that it can function across all contemporary literacies. What else is\nnecessary to get the discussion away from medium and toward language?
\n", "id": "/blog/further-refining-transliteracy", "url": "/blog/further-refining-transliteracy/", "path": "_posts/2010-12-05-further-refining-transliteracy.md", "relative_path": "_posts/2010-12-05-further-refining-transliteracy.md", "excerpt": "This is a long-ish essay about transliteracy that I’ve been editing for a few months now. I’ve asked for feedback from the\nLibraries and Transliteracy group (full disclosure: you\ncan read the discussion here.\nI come off as arrogant, but luckily, not wrong) and Sue Thomas, and\nhave based this version on their responses. Thank you to everyone who helped in getting this essay ready.
\n\nThe working definition of transliteracy, as defined by PART (Production\nand Research in Transliteracy):
\n\n\n\n\nTransliteracy is the ability to read, write and interact across a range of platforms, tools and media from signing and\norality through handwriting, print, TV, radio and film, to digital social networks.
\n
This definition is both internally and externally inconsistent. The combination of problems requires a re-definition of\nthe term such that transliteracy can be an effective interdisciplinary field of study.
\n\nThe definition mentions signing, orality, handwriting, and other things claimed to be platforms, tools, and media. Questions\nnaturally emerge: Is handwriting a platform, tool, or medium? What about orality? It is unclear whether the things in the\nlist are platforms, tools, or media at all, and if they are it is not clear in which category any one of them belongs.
\n\nA second problem follows. If handwriting is a medium and orality a tool (purely for example), how does one go across them?\nThe trans- prefix of transliteracy means across or between; how does one go across not just different things, but different\ntypes of things?
\n\nAdditionally, “signing and orality through handwriting, print, TV, radio and film, to digital social networks” is\nimprecise. There are ostensibly infinite platforms, tools, and media that fit into the framework. Listing a random, partial\nset of supposedly-included concepts is not how definitions are written.
\n\nThe list also appears to assert a hierarchy, as if signing is somehow primitive compared to online social networks. Since\nthe list is not purely alphabetical or chronological (TV comes before radio and film), it appears haphazard at best and\nliteracy-elitist at worst.
\n\nIt is also unclear why interaction is listed with reading and writing as it is redundant. Interaction is merely a series\nof reading and writing acts.
\n\nThe biggest problem, and the one that leads to a solution, is that literacy is not the ability to read, write, and interact\non a particular platform, tool, or medium. Literacy is the ability to encode and decode (since reading and writing are\nhandwriting-centric activities) information in a particular language. Surely _trans-_literacy should then be
\n\n\n\n\nan ability to encode and decode information between or across languages.
\n
This definition can be shortened to
\n\n\n\n\nan ability to communicate across languages
\n
for most purposes. However, this iteration is less precise since the concept of communication often includes meaning, which\nis addressed later in this essay.
\n\nThe ability to encode and decode information in a particular language is not a definition for literacy in any known dictionary.\nOwing to its precision, it should be in the future.
\n\nThe most common dictionary definition of literacy is concise: “The ability to read and write.” What is it that the literate\nperson reads and writes? Information.
\n\nWhat does the literate person read and write information in? A passer-by on the street, asked if they were literate in\nthe English language but not the Russian language, would be able to confidently answer yes or no to the query.\nLanguages themselves are defined as systems for encoding and decoding information.\nLanguage as the base unit of literacy thus follows inductively from the vernacular and deductively from the definition of\nlanguage.
\n\nLiteracy purists may scoff at switching from reading/writing to decoding/encoding. There is a hearty debate as to whether\nunderstanding a spoken language constitutes a literacy. It is simple enough to agree that it does, with the caveat that\ngeneralizing makes the concept deviate slightly from the vernacular form.
\n\nMust an English-literate person learn English Braille? When someone first learns to understand spoken English, are they\nconclusively literate in English?
\n\nNo. Very few people can be considered completely English literate. Spoken English, written English, and English Braille\nare all different languages. They are different systems of signs and symbols for encoding and decoding information. Surely\nthey share similarities to the point that they can be considered in the same language\nfamily, but each facilitates communication using a different method. A person\nwho understands spoken English is spoken English literate. Even to that point their literacy may not be comprehensive, as\nthe English lexicon is huge and constantly-growing, and various spoken dialects of English exist that differ significantly.
\n\nVisual language works the same way. People can use different visual dialects with\ndifferent visual grammars to communicate the same message. This\nis the terminology that artists and designers use to talk about their crafts. If transliteracy studies seeks to be\ninterdisciplinary, using linguistic terminology is a great start.
\n\nWhen someone communicates, they go through a process of encoding information into a language. The message travels on the\nmedium to its destination. In this sense the medium is synonymous with the term ‘channel’ as it applies to the transmission\nmodel of communication.
\n\nFor the purposes of talking about transliteracy, the important endpoints in a model of communication are where people either\nencode messages onto a medium or decode them from one. However, the medium itself only carries the message and is, as such,\none of the two components of language.
\n\nMultiple messages can be encoded onto the same medium at the same time. A business memo can deliver in written language\none message, while providing another via the typeface.
\n\nIn a similar way, the same message can be delivered via two different media at the same time. A person shrugging while saying\n“I don’t know” illustrates this notion.
\n\nIn both circumstances, two separate communications acts are being performed simultaneously, despite the sharing of a common\ncomponent. Since language comprises both message and medium, a change in either changes the language and its encoding and\ndecoding processes.
\n\nSome models of communication put emphasis on the concept of meaning. The sender intends to attach a certain meaning to the\nmessage and the receiver derives their own meaning upon decoding the message. Often these meanings do not agree. The\nmeaning-making process occurs outside of the\nencoding/decoding process, however.
\n\nThis appears to be a cold notion, that meaning is outside the scope of transliteracy. However, it meshes well with the\noriginal divide between transliteration and translation. A person who transliterates is able to do a literal, meaning-independent\ntask. A person who translates takes meaning into account such that the completed translation is not a literal comparison\nto the original work.
\n\nIt is worth noting, since the examples provided are placed in the context of the transmission model of communication, that\nthe transmission model is often criticized for not explicitly addressing meaning or action. In both cases, such criticisms\nare unwarranted. Since meaning-making occurs before the encoding process or after the decoding process, a separate\nmeaning-making process can be attached to a sender or receiver where applicable. Similarly, action is often a separate\ncommunication act. Communication acts of a common thread may be daisy-chained, ran parallel, and branched using the components\nof the model to illustrate concurrency and causes and effects.
\n\nIt is also worth noting that a general definition of literacy, and by relation transliteracy, should be as compatible with\nother definitions of both general and specific nature as possible. This facilitates interdisciplinary discussion and a useful\npedagogical framework. For instance, a commonly-cited definition like
\n\n\n\n\n(the) ability to identify, understand, interpret, create, communicate, compute and use printed and written materials\nassociated with varying contexts. Literacy involves a continuum of learning in enabling individuals to achieve their\ngoals, to develop their knowledge and potential, and to participate fully in their community and wider society.
\n
as set forth by UNESCO, should be reconcilable with the general notion of the base literacy definition used to define\ntransliteracy. “The ability to communicate in a particular language,” to use the short form, has no prima facie incompatibilities.\nThe UN definition is broad. Likely this is by perceived necessity to include areas where bilingualism is prevalent. It also\ndoes not explicitly group literacy competencies by language, though this characteristic does not make the definitions\nincompatible since “varying contexts” is suitably ambiguous.
\n\nAs previously explained, the vernacular form of literacy is text-centric. This is a necessary consideration for a body\nthat uses its internal definition to measure worldwide literacy rates. However, the concept limits the perception of language\nto a particular sensory set of signs and symbols when such a distinction is unnecessary and potentially-biased. The UN,\nas such, may rank areas with verbal or other communicative emphases lower than print-prevalent areas.
\n\nAll literacies should be treated equally. The printed word should not be considered superior by fiat. The ability for a\nperson to communicate effectively in common cultural contexts to an extent that makes them a functional member of society\ndoes not necessarily mean having native written language literacy. In many cultures illiteracy in the area’s official written\nlanguage may make it difficult for a person to function in society. In other cultures it may not. This functional distinction\nis a necessary lens for measuring base literacy of a country, region, or person.
\n\nMedia Literacy, Multimedia Literacy, Computer Literacy, Digital Literacy, and many others fail the test of being language-based.\nThankfully, the OED steps up to offer a solution:
\n\n\n\n\n\n
\n- competence or knowledge in a specified area
\n
Many of these literacies, as such, can continue to be defined as they are without hurting anything. Without too much effort,\nthough, the situation can improve: by making all of these literacies plural.
\n\nComputer literacies would then be all the language (the cool, system-for-transferring-information kind) abilities involved\nwith using computers. Wine literacies would be the language skills necessary for the theory and practice of\nOenology. This simple semantic change makes the second definition of literacy\nsuperfluous and makes the umbrella term transliteracy easier to wrap around existing literacy models.
\n\nFinally, the term “Information Literacy” must die. Since all literacies are information literacies, the plural form\n“Information Literacies” would encompass the entire namespace of knowledge. Information Literacy cannot be a single literacy,\neither. Information itself is not a language. Information must be encoded into useful forms via language for people\nor other things to use it.
\n\nThe concepts presently under the umbrella of Information Literacy are valid and useful. The practice of teaching the skills\nand abilities currently associated with Information Literacy should continue. Those skills and abilities should just be\ncalled something that makes sense. Information Literacy (or Literacies) is not the right term.
\n\nIf Transliteracy is to be an academically-respectable field of study, it needs precise, discipline-compatible language for\nits core concepts.
\n", "id": "/blog/redefining-transliteracy", "url": "/blog/redefining-transliteracy/", "path": "_posts/2010-11-12-redefining-transliteracy.md", "relative_path": "_posts/2010-11-12-redefining-transliteracy.md", "excerpt": "\n\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Exposition of the correct transliteracy definition"}, "tags": ["Libraries","Transliteracy"], "title": "Redefining Transliteracy", "date": "2010-11-12 00:00:00 +0000", "slug": "redefining-transliteracy", "ext": ".md" }, { "content": "Bobbi Newman and Jason Griffey had a recent\ntweet-versation(?) about mobile devices and broadband access. They ended up agreeing to blog about it instead of debating\n140 characters at a time:
\n\nAs this post’s title implies, both make good points about mobile’s place in internet access among all people. Due to\nsemi-recent poll results, this argument is most apropos to cultural minorities and low-income respondents.
\n\nI’m so glad that Bobbi has written on the topic and Jason has furthered the debate. Information access via broadband connections\nmay very well be a huge social and political issue in our time, so I’m glad to see librarians taking up the cause.
\n", "id": "/blog/both-have-good-points", "url": "/blog/both-have-good-points/", "path": "_posts/2010-09-30-both-have-good-points.md", "relative_path": "_posts/2010-09-30-both-have-good-points.md", "excerpt": "Bobbi Newman and Jason Griffey had a recent\ntweet-versation(?) about mobile devices and broadband access. They ended up agreeing to blog about it instead of debating\n140 characters at a time:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Summarizing a twitter debate about the digital divide"}, "tags": ["Libraries"], "title": "Both Have Good Points", "date": "2010-09-30 00:00:00 +0000", "slug": "both-have-good-points", "ext": ".md" }, { "content": "I made this for my Dad for Father’s Day, but figured other people might like it, too.
\n\n\n\nWhen used as a home screen wallpaper, it looks like this:
\n\n\n\nDad, I hope you like it.
\n", "id": "/blog/ios-4-graph-paper-wallpaper", "url": "/blog/ios-4-graph-paper-wallpaper/", "path": "_posts/2010-06-23-ios-4-graph-paper-wallpaper.md", "relative_path": "_posts/2010-06-23-ios-4-graph-paper-wallpaper.md", "excerpt": "I made this for my Dad for Father’s Day, but figured other people might like it, too.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Free, simple wallpaper"}, "tags": ["General"], "title": "iOS 4 Graph Paper Wallpaper", "date": "2010-06-23 00:00:00 +0000", "slug": "ios-4-graph-paper-wallpaper", "ext": ".md" }, { "content": "Here are the slides and notes from my June 16th presentation for Refresh Detroit.\nI was fortunate enough to be joined by Alex Fisher and\nStephen Colson, who really brought everything together and luckily had all the answers. Thanks\nagain, guys.
\n\n\n\nThe following notes do not reflect the actual presentation. If video evidence comes along to prove this, I will add it to\nthe bottom of the post.
\n\nHey, I’m Brad Czerniak. I’m the web guy at Canton Public Library.
\n\nThank you very much for coming to see this presentation today. And especially thank you to Deborah,\nfor inviting us to speak. I hope that what we’re talking about will be useful.
\n\nMy presentation is decidedly impractical — I’m gonna try to explain what Drupal is and some of how it works.
\n\nI’ll be followed by two really energetic and talented guys:\nAlex Fisher from Commercial Progression, and\nStephen Colson from Switchback CMS. They will put the rest of the puzzle together with real\nworld sites and practical demos.
\n\nBefore moving on, I’d like to thank all the people who contributed to this crowdsourced presentation, and all the\nlocal Drupal user\ngroups for their support and advice.
\n\nDrupal is free and open source. It’s released under the\nGNU Public License, which is the same license used for the Linux kernel\nand around 60% of open source software.
\n\nYou may have heard of LAMP. I love lamp. It stands for
\n\n\n\nWhile Drupal could be considered a typical LAMP application, you should note that only the P is strictly necessary. It can\nrun on Windows or Mac, with various web servers, and with a few different database systems. It is written in the PHP\nprogramming language, so you’re kinda stuck with that requirement.
\n\nIt’s been around for nearly 10 years and a whole new version is set to be released soon.
\n\nI have to admit something now.
\n\nIf I have learned anything in the last two years, it’s that Drupal is not a\nRonco Showtime Rotisserie.
\n\nIt’s not “Set it and forget it.”
\n\nThis out-of-the-box unimpressiveness is by design, though. The use case for Drupal is for a site more sophisticated than\na small personal blog. It’s assumed that you’ll customize the site to some degree before unleashing it on the public. It’s\nnot strictly necessary, but a site based on a basic Drupal install won’t turn any heads.
\n\nDrupal also has a notorious learning curve, partly due to an administrative interface that tends to scare away beginners.\nLuckily, one of the big features for the upcoming version is a big improvement in usability.
\n\nLet’s take a look at what you get out of the box.
\n\nIt’s like this.
\n\nA blue-and-gray theme called “Garland” is set by default, and you have two content types — page and story.
\n\nIf you install Drupal for the first time, this can be an incredibly scary sight.
\n\nContent types are important: They range from “blog post” to page to a form to external content from RSS feeds to whatever\nyou can dream up. Each content type has a bunch of options:
\n\nStuff like that. You can set all of that on your website if you’re an administrator. No coding necessary. Once you get the\nhang of it, It’s really easy and flexible.
\n\nAnd it’s that flexibility and ability to do complex things without code that sets Drupal apart from other solutions.
\n\nHere on the left we have Rails,\nDjango, and\n CodeIgniter. The basic idea behind all three of them is that they’re\nframeworks — tools for building web applications that help you do it quicker than starting from scratch and using some basic\nguidelines to make sure they don’t suck.
\n\nBut, when you install them, you have to write code before you even have a basic webpage.
\n\nOn the right we have Wordpress and MediaWiki.\nWordpress powers almost every personal blog on the web. It has like 200 million installs.
\n\nMediaWiki is the software that powers Wikipedia and a ton of other sites.
\n\nWhen you install them you’re up and running. You don’t need to worry about the particulars — just add content. These\napplications are great if you want a blog or a wiki, but they take a lot of work and aren’t really intended to do much\ncustom stuff with them.
\n\nDrupal sits in the middle. It gives you the flexibility of coding a site yourself and the beginnings of common website use\ncases right when you install it.
\n\nSo that’s sweet, right?
\n\nOne of the scary words that’s really important to understanding Drupal and talking shop with other Drupalistas is ‘node.’
\n\nA node is an individual page or blog post or whatever you’ve dreamed up.
\n\nAll the real content of your site is made up of nodes. Everything is a node.
\n\nNode node node.
\n\nIt might help to think of a node as a note. Or it might not. But a note or a memo has a subject line or title and some\ncontent. All Drupal nodes have those things too.
\n\nIf you want to organize your notes you might put them in folders or attach Post-Its to them. This is kind of how Taxonomy\nworks.
\n\nTaxonomy is another one of the scary words.
\n\nHere’s the skinny. A taxonomy is a list of descriptive terms. Each term is like one tag in a tag cloud. You can stick these\ntags to any node and use them to organize your content.
\n\nDown here we have the tape dispenser, labeled CCK. That stands for Content Construction Kit.\nI’ll talk about Modules in the next slide and Steve will demonstrate CCK specifically, but the general idea is that CCK\nlets you attach all kinds of funky things to your notes — like photos and even whole other notes.
\n\nThere are 5703 total modules. That’s a lot.
\n\nA module extends (extenze, get it?) what Drupal does. In fact, Drupal is made up almost\nentirely of modules. Each one performs some small role.
\n\nSo there’s a module called node that does stuff for the nodes from the last slide.
\n\nThere’s a module called menu. Confusingly, it mostly has to do with URLs, but kinda not really. It’s one of the things you\nonly have to learn at 1:00AM on a weekend while wired on Mountain Dew. So we’ll skip over that for now.
\n\nThose are modules that come pre-packed when you download Drupal core.
\n\nThen there (contributed) modules nicknamed contrib modules. These are written by the community to make Drupal awesomer.
\n\nCCK from the last slide is a contrib module lets you add more stuff to your nodes.
\n\nPathauto lets you make friendly URLs with tons of options
\n\nRules lets make things happen on your site. It’s a good example of the “easy way” of\nworking in Drupal.
\n\nThere are modules to give you fancy calendars, Word-like rich text editors, and 5700 other cool things.
\n\nSo here’s a rich text editor. You can pick which one you want to use from a bunch\nof different cool options, then install the module and set it up.
\n\nBoom! Now you have WYSIWYG capability. And you have options, just like the Drupal gods intended.
\n\nHere in the text box we have some pig latin. If you aren’t fluent, it says “This is a really dumb example.”
\n\nIt’s a dumb example because —
\n\nWell… let’s say you want to make a node and you want that node to appear in pig latin\nto your users.
\n\nYou can type it out in plain English and let Drupal do the translation for you.
\n\nThere are many modules that let you type in wiki syntax or markdown or plain URLs or ISBN numbers and the module turns it\ninto something cool for your users when they view the page. At the library, for instance, we use double square brackets\nand links to books in our catalog to import book cover images and the title and author and stuff. This is a real time saver\nand it’s all automatic.
\n\nAnd you can mix and match these filters. If you want to strip out certain html tags\nfrom the text AND put the text in Pirate-speak, no problem!
\n\nThis particular example is dumb because when you’re creating or editing that node, you’d just see English. So silly.
\n\nDrupal also has non-ridiculous translation built right in. You can put your menus and other site text in other languages\nand switch it for different users and all kinds of stuff. If that’s an important part of your project then you’ll be stumbling\ninto a funky corner of Drupal’s learning curve.
\n\nOne of the most powerful features of Drupal lies with User management.
\n\nOut of the box it handles sessions and cookies and usernames and passwords and all the stuff that’s a big pain in the butt\nto get right yourself.
\n\nOn top of that, you can assign permissions to users in a really common sense way.
\n\nYou can create roles. Roles are containers for much more specific permissions. An example of a permission is “User can edit\ntheir own blog posts.”
\n\nSo an admin is free to do anything on the site. A signed-in user can do some things, but is restricted depending on what\nroles on the site they’ve been assigned.
\n\nA visitor CAN have permissions, but generally can just view stuff through their binoculars.
\n\nWhen you install modules, they often give you new permissions that you can assign, so it’s really easy to make sure that\nthe right people can see and do the right things.
\n\nThis ability for modules to tie into what Drupal does is because of the API.
\n\nAPI stands for Application Programming Interface. It’s the way that programmers can interact with the code and data in an\napplication.
\n\nDrupal’s API is full of these things called hooks. These hooks let you add stuff to Drupal in a standard way.
\n\nFor instance, when writing a module you might want to use hook_user. Your\ncode might say — when a user signs in, redirect them to a different page.
\n\nWhen one things happens, do other stuff.
\n\nOnce you get the hang of it, writing code for Drupal makes a lot of sense.
\n\nAlong with coding modules, you can also code themes.
\n\nYou can hard-code HTML into your theme, or put little bits of PHP in there to display the content from the database exactly\nhow you want it.
\n\nIf you use the default template language, called PHPTemplate, you can specify regions on your page to hold blocks of dynamic\ncontent stored in your database.
\n\nYou can move these blocks around from your browser. Once your theme is coded it’s really easy to put stuff where you want\nit.
\n\nYour theme consists of a bunch of template files. This one is for an entire page.
\n\nThis one is for a single node. A page can have more than one node displayed at a time, and those nodes can be of many\ndifferent content types.
\n\nDoes that make any sense?
\n\nThink of a bag of jelly beans. The page itself is like the bag. It wraps around all the good stuff.
\n\nEach node is like a jelly bean. All the buttered popcorn flavored beans are from the product content type.
\n\nBut the bag also has black licorice beans. These could be wiki entries.
\n\nThe one page could show products and wiki entries in one listing.
\n\nAnd the cool part is that you can make them display however you’d like using template files.
\n\nThis doesn’t speak to how gross a bag of popcorn and licorice jelly beans would be, but this is America so you’re free to\nfill that bag however you’d like.
\n\nNothing’s better than esoteric programming double entendres.
\n\nIf you know jQuery, you know that the shorthand for the base function is the dollar sign.
\n\nBut I also mean that jQuery is money. jQuery is so money and it doesn’t even know it!
\n\njQuery is baked in to Drupal’s core. You can even code up your JavaScript is a very Drupal-ish way using Drupal’s concepts\nof behaviors, settings, and locales.
\n\nBut that’s not all!
\n\nYou can use all the same web standards that everyone else uses, or go your own way.
\n\nIf you want to use a particular CSS Framework, there’s probably a pre-existing theme to do it, or you can roll your own.
\n\nIf you want to do everything in HTML5, Drupal won’t complain.
\n\nIf you want some visitors of your site to view your pages in full size and others to get a mobile page, that’s very doable.
\n\nDrupal lets you do what you already know and gets out of your way.
\n\nWhat else can I say to convince you that Drupal will work for your site at the scale you need?
\n\nArgumentum ad Populum. Translated from the Latin it means “All the\ncool kids are doing it.”
\n\nThere are a lot more prominent sites and organizations using Drupal, but these sites are notable because you’re in Drupal\nwhen you get to the home page and most if not all of the content is in Drupal.
\n\nThat’s a powerful indication of the trust organizations place in Drupal and the ability of it to suit complex needs.
\n\nAnother great selling point is the available support.
\n\nYou can get help directly from the Community via IRC, Forums,\nand other avenues.
\n\nYou can get materials ranging from books to videos and more from Lullabot,\nApress, and other publishers
\n\nThe creator of Drupal has a company called Acquia that also lends support.
\n\nThe documentation for every aspect of Drupal is amazing. If you want a quick\nhow-to for a beginner it’s on the Drupal site. If you need in-depth documentation\nof the API, it’s there too.
\n\nEach module has an issue queue. These are really handy for seeing if the issue you run into is a known bug or a\npicnic error.
\n\nMost any problem you run in to likely has a forum post or page on the Drupal site. The site search is arguably the best\ntool for getting the support you need.
\n\nThere are also plentiful user and developer groups. There are at least three in Metro Detroit.
\n\nYou can also hire a firm to develop, design, consult, or for individual bounties to develop a particular feature.
\n\nOptions. Drupal gives you options.
\n\nOne more thing…
\n\nViews makes a Developer’s life so much easier.
\n\nI’m not ashamed to admit that I frequently take the lazy route. Views is the lazy route in a very real and very cool way.
\n\nRemember the jelly beans? Let’s say all the content on your site is a big tub of jelly beans.
\n\nViews lets you put whichever beans from the tub you want in whichever bag you want.
\n\nIf you want an RSS feed with just the images from your products in order by the date they were last edited, you can do that\nby playing around in Views for a couple minutes.
\n\nIf you want a block in the sidebar with the latest posts from one user’s blog, that’s a cinch.
\n\nIf you want a page of all the posts tagged chicken in reverse-title order, you can do that.
\n\nWith Views. Views is a miracle wrapped in a magic trick.
\n\nViews makes learning Drupal SO worth it.
\n", "id": "/blog/drupal-is-the-answer", "url": "/blog/drupal-is-the-answer/", "path": "_posts/2010-06-23-drupal-is-the-answer.md", "relative_path": "_posts/2010-06-23-drupal-is-the-answer.md", "excerpt": "Here are the slides and notes from my June 16th presentation for Refresh Detroit.\nI was fortunate enough to be joined by Alex Fisher and\nStephen Colson, who really brought everything together and luckily had all the answers. Thanks\nagain, guys.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Presenter notes for a Drupal presentation"}, "tags": ["Web Design"], "title": "Drupal is the Answer", "date": "2010-06-23 00:00:00 +0000", "slug": "drupal-is-the-answer", "ext": ".md" }, { "content": "I appreciate Sue Thomas, the preeminent scholar of\ntransliteracy, taking the time to read and respond to my\nrecent post. Her insight, and especially her question, made me realize\nthat I had fallen into the curse of knowledge and had perhaps\nsacrificed effective communication for the sake of rigor.
\n\nSo, I’d like to be a bit less formal and start from the top.
\n\nThe Universe is made up of information. This is particularly interesting in the context of concepts like\nsimulated reality. A computer simulating a Universe to as detailed an\nextent as the Universe we inhabit would have to account for expressing\nphysical information via\ndigital physics and perhaps would require artificial intelligences for\nsimulated inhabitants.
\n\nWhat’s important here is that the universe is made up of information. That information can then be expressed in ways beyond\nthe literals of existence.
\n\nInformation wouldn’t matter much without senses. We as living beings have an ability to perceive reality via our senses.\nWe then do various stuff with this information.
\n\nCommunication is “…a process of transferring information from one entity\nto another.” While it’s interesting to think of objects like stars communicating with us their message of very bright light\nfrom very far away, I think communication requires intention on the sender’s part.
\n\nA plant of a certain color or emitting a certain scent may be communicating to animals that they do or do not wish to be\neaten, but a rock of a certain color probably didn’t go through any sort of process to convey a message to any recipient.
\n\nWhen I think of “raw data,” I visually see a wall of numbers in Notepad on my computer. This, however, is far from raw data\n(data being used interchangeably with information here). How do we fathom what the pure state of information really is?\nIt’s always expressed in some manner.
\n\nThe method of expression is language. Languages are systems for encoding and decoding\ninformation.
\n\nAs Sue points out, I made no mention of body\nlanguage in my previous post. She is absolutely correct, and has provided an excellent example of how to effectively wrestle\nwith my proposed redefinition of transliteracy.
\n\nTwo people engaging in a face- to-face conversation may use three or more different languages. They’d speak verbally, they\nmay gesture or use other body language, and may have intentionally-or-not decided to express information through scent.
\n\nWhat if this face-to-face conversation was flirtatious? The information expressed verbally might be playful and flattering.\nThe body language could be expressed as a visual language of lines, shapes, colors, etc. The olfactory language could be\npleasing found scents applied to the body or pheromones secreted involuntarily. There could even be touching. But I’m not\nwriting a romance novel here, so let’s leave this example and move elsewhere.
\n\nSomeone transliterate in the languages of a face-to-face conversation is able to decode the information encoded and expressed\nby the sender, then encode and express that information via language (though not necessarily the same language(s) used by\nthe other party). Since the information from one language may conflict with another, it’s important to be able to encode\nand decode the information in order to interpret it. If I say ‘yes’ verbally but shake my head to indicate ‘no,’ what am\nI really communicating? This is a basic example of transliteracy.
\n\nI’m using language explicitly here as systems of encoding and decoding information. Dr. Thomas mentioned other types of\nlanguages as examples that aren’t included in that sense. Cultural Language and Sensory Language as I’m interpreting them\n(though, to be honest, I don’t really understand them) are sets of terminology within a language. This would be like the\n6th definition in Princeton’s wordnet listing for language.
\n\nIf we operate from different definitions of language this communication falls apart, so I’d like to emphasize that I don’t\nmean language in the sense of terminology.
\n\nI contend language is the right unit to use for literacy because it plays well with original definitions of literacy and\ntransliteracy. Since the terminological taxonomy of language is\nironically poorly-defined, this is not as of yet an ideal solution.
\n\nHowever, it has an advantage over the current working definition of transliteracy that the base unit of language can be\ncompared and contrasted. Since media, tools, and platforms are disparate things, you cannot express insights across them,\nwhich is the entire point of the trans- prefix attached to the word. By having one unit, whether you choose to call it\nlanguage or ‘medium’ or ‘channel’ or ‘kwyjibo,’ you can then make comparisons.
\n\nYou can see the comparative ability in the face-to-face conversation example. Different languages are used to express\ninformation; sometimes different information in different ways. One person, instead of blushing, could just say “I’m\nembarrassed.” What strengths and weaknesses do these languages have over one another for expressing information?
\n\nMore importantly for the sake of argument — how would you comparatively express face-to-face conversation in the context\nof media, tools, and platforms?
\n\nBy using language as the base unit, we are also afforded the terminology and theory of linguistics to express and grapple\nwith the communicative concepts. This provides us with an interdisciplinary framework for discussing\nthe implications of transliteracy.
\n\nIt’s also useful for applying transliteracy in a pedagogical sense. If we want to ensure a learner is equipped to use flickr,\nwe just need to teach them the necessary underlying languages - be they written, visual, interface, or otherwise.
\n\nI encourage you to look at some of the great examples of transliteracy on the\ntransliteracy.com site and consider which languages are at work in each\ncommunication. Moreover, consider how you would then teach the necessary literacies such that others could communicate in\nthe same manner.
\n\nI hope this post provides a little more clarity into what I mean by language and why it’s a good choice for a base unit\nof transliteracy. Thank you.
\n", "id": "/blog/speaking-the-same-language", "url": "/blog/speaking-the-same-language/", "path": "_posts/2010-06-18-speaking-the-same-language.md", "relative_path": "_posts/2010-06-18-speaking-the-same-language.md", "excerpt": "I appreciate Sue Thomas, the preeminent scholar of\ntransliteracy, taking the time to read and respond to my\nrecent post. Her insight, and especially her question, made me realize\nthat I had fallen into the curse of knowledge and had perhaps\nsacrificed effective communication for the sake of rigor.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Far more depth into transliteracy"}, "tags": ["General","Transliteracy"], "title": "Speaking the Same Language", "date": "2010-06-18 00:00:00 +0000", "slug": "speaking-the-same-language", "ext": ".md" }, { "content": "Are you interested in mobile devices and how libraries can leverage the mobile surge? You may be interested in the\npresentation I did on May 20th for MCLS, entitled\n“Practically Mobile.”
\n\n\n\nHello. Thank you for sticking around to see me!
\n\nI’m Brad Czerniak, the Digital Resources Developer at\nCanton Public Library in Canton, MI. They let me hack and play\nwith cool technology all day. It’s a pretty sweet gig.
\n\nToday I’ll be talking about some common-sense ways to enter the mobile arena.
\n\nI’d also like to reassure you that if you’re not doing anything mobile yet that you’re probably doing just fine.
\n\nFirst, a little activity:
\n\nNow this is totally optional, but I encourage you to do it. Get out your phone
\n\nAdd me to your address book. Put me under “Brad Czerniak” or “Brad Library” or whatever.
\n\nFeel free to call or text me with your mobile and library-related questions. Like, for instance, if you’re about to go\ninto a meeting with your boss and you need a bleeding-edge new idea and some encouragement. That would be a good time to\ncall me.
\n\nIf you want to text me questions during this presentation, that’s cool too.
\n\nSo this is a pretty broad question.
\n\nMany of us here spent years in classrooms just trying to skim the surface of this question.
\n\nLuckily that’s not really what I’m asking
\n\nWhen you’re watching TV and there’s a song you like in a commercial, where do you go to look it up?
\n\nOf course Google, but how do go about actually doing the search?
\n\nWhere specifically do you enter the search terms?
\n\nFor me, the answer is the browser search bar
\n\nI love the browser search bar
\n\nEvery major browser has some type of search bar. Even Chrome.
\n\nGoogle, Wikipedia, Amazon, and Youtube are all a click and typing your query away.
\n\nSo
\n\nTake a look at your website analytics. If your library is like mine, people use your catalog a lot.
\n\nSo your catalog — it’s basically the search engine for things in your collection, right?
\n\nCan your patrons search your catalog from the browser search bar? If not, why not?
\n\nLet’s take the obligatory code peek at what’s necessary to make this happen.
\n\nAn OpenSearch description is a tiny XML file.\nAll you have to do is link to it in the head of your web pages.
\n\nAutosuggest is trickier, but definitely possible. In the description file it’s just these two lines at the bottom.
\n\nIs OpenSearch just a minor detail?
\n\nOr does the fact that so few libraries offer it speak to something?
\n\nIs there a gap between what we offer and how our users interact with information?
\n\nAre our users searching Amazon when a splash of XML and a pinch of psychology could change their behavior?
\n\nGetting patrons to think of the library when they have an information need isn’t easy.
\n\nSo where do we start?
\n\nWe have to find the points of entry.
\n\nThe browser search bar is a good example of a point of entry.
\n\nOnce we find one, we need to set a path for the user
\n\nSo let’s say you add an OpenSearch XML file to your site.
\n\nThe next step is to advertise your new Browser Search Bar plugin along with installation instructions
\n\nIn this case: “if the arrow is glowing blue or orange, click it” You can also make a\nJavaScript button to do it from\na blog post
\n\nThen add some search behavior examples to the mix
\n\n“Instead of searching Amazon for that new movie, search our catalog and put it on hold. It might take a little longer, but\nyou’ll save $20”
\n\nand you’ve injected your services at the patrons’ point of need.
\n\nBut what about people on the go?
\n\nWhat’s the starting point for information needs on a mobile device?
\n\nWell — It depends.
\n\nYou can’t rely on a patron to have a smartphone.
\n\nIt’s a safer assumption that your patron has a phone, mobile or otherwise.
\n\nWhen a user has a mobile phone you can be almost sure that the device can send and receive text messages, even if its user\ncan’t.
\n\nMobile sites and apps are a few strategic steps ahead. Step 1 in mobile is having a phone number folks can call.
\n\nSo you have this phone number — are as many people calling as you’d think?
\n\nThe worldwide trend is more people with more phones. Are you getting more questions?
\n\nIf people knew they could get questions answered by Master’s Degree-holding local experts via phone (or text message, or\nchat, or email, or in person), would 3-1-1, 4-1-1, KGB, ChaCha, and other services be able to stay in business?
\n\nDo patrons know what they should be asking?
\n\nA good way to increase calls is to make sure your users have your number handy.
\n\nYou can do this by:
\n\nThen you have to sell it. Demonstrate the product, like Ron Popeil or Billy Mays. Your product is free, so all you have\nto do is provide the why and how of using it:
\n\nEver since reading Made to Stick by Chip and Dan Heath
\n\n(I’ll give you a second to write that down)
\n\nEver since reading it I’ve been obliged to mention it in every PowerPoint presentation.
\n\nThe book teaches that ideas with staying power tend to be one or more of the following:
\n\nSo give tangible use case examples that the patron can relate to and be reminded of when a similar situation arises
\n\nLike, when you need a bleeding edge idea to give your boss.
\n\nSo we’ve got the telephone part down. Now let’s look at other ways patrons can ask you things.
\n\nThere are a bunch of solutions out there:
\n\nLibrary Success Wiki Online Reference Page
\n\nHere’s what we’re doing at Canton:
\n\nFor the last 2 years we’ve been using a Gmail for IM reference. You can sign into AIM from Gmail too, so it’s really 2 accounts.
\n\nOn our site we have heavily modified Google Talk chatback badges. After\npicking a Kids or Adult librarian, it pops out a new little window, so the patron can switch pages while continuing to chat.
\n\nHere’s what our Gmail account looks like:
\n\nWe use Multiple Inboxes, plus filters, plus labels to make everything easier.
\n\nThe second inbox down here is for bibliography requests, which we label\n“May We Suggest.” By setting up filters looking for forwards and replies and\napplying labels accordingly, we can automatically track the status of the bib being assigned and created
\n\nThis Gmail account is also a Google Voice account. Text messages sent to a local number Google\nprovided show up in the inbox.
\n\nYou can reply to them just like emails, except 160 characters or less.
\n\nWhen you call the Google Voice number it forwards the call to the library’s main line, so patrons can text and call a single\nnumber.
\n\nFor the price tag of $0 and the ease and convenience of it all, it’s a good investment.
\n\nIf you’re moving toward cloud-based infrastructure to save on IT costs, this is a great test suite for Google Apps. (wink. wink)
\n\nI heartily suggest a\npresentation by David Woodbury and Jason Casden\nat North Carolina State University Libraries entitled “Library in Your Pocket”. They give some really good advice. I do\ntake issue with one of their slides, though — it says “‘Mobile’ is not just shrinking the page”
\n\nSomebody should tell that to the iPhone’s Safari browser!
\n\nWhen I first got my iPhone 2 years ago, I had the choice of starting up my slow, loud, hot 6-year-old desktop computer or\nsurfing the net on my phone.
\n\nSo, by surfing the web on an iPhone exclusively for 6 months, I learned a thing or two about how the mobile web works.
\n\nMy conclusion: The mobile web is a lot like the regular web, but smaller.
\n\nFast forward to now: In the last month, approximately 1% of Canton Public Library’s website visits came from mobile devices,\nwith iPhones, iPods, and iPads making up the majority of those visits.
\n\nAndroid is catching up quickly, too.
\n\nThere are two important things to note about this 1% stat:
\n\nIf you haven’t visited your website on an iPhone, catch me sometime today. I’m confident that a quick demo will make you\nthink “that’s not so bad!”
\n\nThat’s the same thing iPhone owners think. And they’re the ones doing nearly all the mobile web surfing.
\n\nThis slide is intentionally crammed with words.
\n\nI’m going to quickly touch on each of these points, but here’s the gist
\n\nthere are a lot of things you can do when making a “mobile site” that can be worse than not making a mobile site at all.
\n\nAutomatic redirects — If someone clicks a link, like, to a blog post, the worst possible outcome is being redirected to\na mobile homepage without any way to view the intended content.
\n\nIf you can’t get to your mobile site from your full site easily, or vice versa, you’re setting users up for failure.
\n\nIf your website is mobile-fied and perfect but your catalog isn’t mobile and looks totally different, that’s a failure.\nThat’s actually a failure no matter what size screen you use.
\n\nI’m using Progressive Enhancement as an umbrella term for:
\n\nHigh performance mobile sites cache files, reduce file size and compress, and stick to best practices.
\n\nMouseover menus are frustrating, since they rely on mouse hovering. Touchscreen devices don’t have hovering, just touching.\nThis was one of Steve Jobs’ cases against Flash, but it’s not only a Flash problem.
\n\nA late-model device connected to fast wifi is just a computer with a small screen. A crippled mobile site doesn’t match\nuser expectations.
\n\nI’ll talk about apps in the next slide
\n\nNothing on the web is “set it and forget it.” Once you make your mobile interface you have to test it with users and develop\nand design it and continuously improve
\n\nDon’t make a mobile site just because everybody else is doing it (poorly).
\n\nApps
\n\nHere’s the deal with apps:
\n\nYou most likely shouldn’t make one.
\n\nPlatform apps require a significant investment of learning, time, and money.
\n\nThe two biggest platforms at present have totally different programming languages and APIs.
\n\nSo, creating apps for both means keeping up with upgrades and bugs and general quirks across two platforms and two languages\nand multiple device versions.
\n\nWeb apps, when properly designed OTOH, are cross-platform and standardized.
\n\nPlatform apps allow for more hardware integration, like GPS, camera, and other features.
\n\nIf you don’t need to use those features, a platform app is probably a huge waste.
\n\nPlatform apps do have the advantage, though, of being in an app store or marketplace, which is great for generalized apps,\nand was great for all apps when there were fewer competing, but is now rather crowded out.
\n\nI think many app developers hope that more people will use a platform app as opposed to a web app. There are certainly\ncircumstances where this is true, but is it true for libraries? How do your users get to your site? How are they expected\nto know you have an app? iPhone owners: ever searched the app store for your city on a whim?
\n\nKeep in mind Apple’s inconsistent and harsh app approval policies. You could spend months making an app and then have it\nget rejected.
\n\nWeb apps, besides being cross-platform, can also mimic platform apps with a little ingenuity. Google Buzz has a little\nbubble that pops up when you first use it on an iPhone that prompts you to add it to your home screen. At this point it\nlooks more or less like a platform app.
\n\nHere’s what a home screen bookmark for CantonPL looks like on an iPhone. Do you have apple-touch-icon.png in your server\nroot, along with your favicon?
\n\nWhat if —
\n\nYou only had to maintain one site with one set of content
\n\nAnd
\n\nNo matter which device accessed the site, the URLs were always the same
\n\nAnd
\n\nThat site was optimized for whichever device was using it?
\n\nThat would be ideal, right?
\n\nWell, that’s the idea behind a general philosophy and a few technologies.
\n\nAt first it was called “browser sniffing” and it didn’t work where it counted. It required JavaScript and the devices that\ncould have benefited didn’t HAVE JavaScript.
\n\nNowadays, you can keep a separation of content, style, and behavior and pull off something similar. An emerging standard\ncalled CSS3 media queries along with similar JavaScript means that one site can\nlook a bunch of different ways, depending on the size of the screen.
\n\nYes, it still takes work, but the end result is consistent and more maintainable. If you have the ability to tweak the CSS\nand JavaScript of your catalog, you can have a unified interface!
\n\nReal quickly, I’d like to talk about vendor apps.
\n\nWhy not (exclusively) use a vendor solution, like LibraryThing’s upcoming Library Anywhere, or Boopsie, or any of the other\ncool stuff out there?
\n\nCustomization.
\n\nGetting a generalized vendor solution to provide exactly what we provide but in their mobile app would end up costing as\nmuch or more as doing it in house. Vendors have the habit of charging you annually, and justifying new expenses is getting\nkinda hard.
\n\nThat’s not to say that the vendor products I’ve tested aren’t good. Boopsie’s app for Seattle Public Library is quite nice.\nLibrary Anywhere is a great multi-library catalog interface. It’s still in beta, too, so it could get even better.
\n\nIn my not so humble opinion, suiting one site to multiple devices is the best bet.
\n\nThat doesn’t mean you shouldn’t reach out to other apps, though.
\n\nThese three apps are used to a disturbing amount on mobile devices.
\n\nIf you have a facebook page and push out updates, mobile users can see them.
\n\nIf you tweet, mobile users might see it.
\n\nIt your library is a foursqure venue, your patrons can check in. People might compete to be your mayor.
\n\nThese tools let you promote services, give timely reminders of events, and generally foster good will.
\n\nSo that’s cool, right?
\n\nBefore closing (and going improv in the remaining time) I’d like to touch on other implications for the mobile device\nrevolution. Here’s one scary example:
\n\nNot too long ago, curious hackers would print out paper booklets full of barcodes called fuzzers.
\n\nThey’d do this because barcode scanners are a lot like keyboards, except different.
\n\nWhen someone writing software expects input to come from a barcode scanner, they’re less likely to ‘validate’ the input\nto make sure it’s barcode-like.
\n\nSo, someone with a lot of time on their hands and some custom-made barcodes could often do some damage.
\n\nSomeone with an iPhone and basic web design skills can now do the same thing, but without having to print the barcodes.\nOh, and much faster.
\n\nAre your self-check stations secure? How do you know?
\n\nDo they validate input to make sure they’re getting numeric barcodes?
\n\nDo they only allow a few bad scans before timing out for a while?
\n\nDo they require a secondary piece of information, like a user’s name?
\n", "id": "/blog/practically-mobile", "url": "/blog/practically-mobile/", "path": "_posts/2010-06-12-practically-mobile.md", "relative_path": "_posts/2010-06-12-practically-mobile.md", "excerpt": "Are you interested in mobile devices and how libraries can leverage the mobile surge? You may be interested in the\npresentation I did on May 20th for MCLS, entitled\n“Practically Mobile.”
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Check out this early RWD post!"}, "tags": ["General"], "title": "Practically Mobile", "date": "2010-06-12 00:00:00 +0000", "slug": "practically-mobile", "ext": ".md" }, { "content": "For all you LOST fans. These have been around for a while, but I figured they were worth putting up:
\n\n\n\n\n\n", "id": "/blog/his-name-is-miles-get-it", "url": "/blog/his-name-is-miles-get-it/", "path": "_posts/2010-06-12-his-name-is-miles-get-it.md", "relative_path": "_posts/2010-06-12-his-name-is-miles-get-it.md", "excerpt": "For all you LOST fans. These have been around for a while, but I figured they were worth putting up:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Memes! Get your memes here!"}, "tags": ["General"], "title": "His name is Miles, get it?", "date": "2010-06-12 00:00:00 +0000", "slug": "his-name-is-miles-get-it", "ext": ".md" }, { "content": "Transliteracy defined as a cross-media ability misuses the word literacy, since the base competency of literacy is language\nrather than medium.
\n\nFirst — I regret my approach to the subject of transliteracy via twitter. As librarianbyday\nclaimed, my initial criticisms were vague and perhaps unjust. Before proceeding I would first like to apologize if my meanings\nwere unclear or personally hurtful. That was not my intention.
\n\nI insinuated transliteracy was “a bullshit made-up term for the same old\nstuff.” This isn’t entirely or necessarily my stance, given that my qualms with transliteracy stem from a poor common definition\nof literacy. The application of the term literacy across media, as such, was hasty since I myself had not defined literacy\nas pertinent to my argument. I apologize for this basic error.
\n\nBefore proceeding to the meat-and-potatoes of my argument I would like to take this opportunity to point any readers to\ntwo blogs which I quite admire:
\n\nOr more correctly, “Define your terms, you will permit me again to say, or we shall never understand one another” as Voltaire\nwrote in Dictionnaire philosophique. It is in\nthe transliteracy.com ‘working’ definition of transliteracy that vague terminology originates\napropos to this discussion.
\n\n\n\n\nTransliteracy is the ability to read, write and interact across a range of platforms, tools and media from signing and\norality through handwriting, print, TV, radio and film, to digital social networks.
\n
This definition is hasty because transliteracy is not an arbitrarily-coined word. As the authors of\nTransliteracy: Crossing Divides\npoint out, transliteracy is an existing term stemming from the verb ‘to transliterate.’ Both they and Sue Thomas in her\nreport on the Transliteracies conference\nquickly jump from talking about language to mentioning media, tools, and platforms.
\n\nTransliteracy in its original definition is well-defined and valid.\nIt is the prefix trans- added to the word literacy, which has a strong denotation. Literacy here is the ability to read\n(and often write) in a given language. The test of whether one is literate as such is language-dependent. In practice,\ntransliteracy would then be the ability to transliterate — commonly referring to a process by which one language with\ndifferent character-to-phone rules is converted to another.
\n\nIt’s important to treat the “same language” with different sensory and communicative characteristics as a different language.\nFor instance, the “English language” can be represented via touch in braille. Someone who can interpret input (interpret\nbeing defined loosely here) in the form of raised dots is said to be literate in that given language’s Braille. English\nin Braille and common written English are not a 1:1 comparison; since Braille characters are larger than written characters\nfor tactile purposes, contractions unfamiliar to readers of written English are used. While fluency in ‘English’ is implicit\nto one literate in English Braille, the change of format necessitates many real differences and presents real barriers that\nmake these different language literacies and fluencies.
\n\nYou may have noticed that I’m playing faster and looser with the word language than you may be accustomed. Straight from Wikipedia:
\n\n\n\n\nA language is a system of signs (indices, icons, symbols) for encoding and decoding information.
\n
In the introductory paragraphs of that same article, distinction is made between spoken language and written language. I\nthink this distinction is necessary, and grant that a permeable umbrella term “language family” can be used to refer both\nto historically-linked different languages of written or verbal form, but also to contemporary languages that are closely\nrelated across those barriers. For the purposes of this article I’d like to grant that spoken English, written English,\nEnglish Braille, American Sign Language (to a less-clear extent), and others are part of the English language family.\nAs a further look at language families will attest, there is a certain lack of taxonomic clarity to how language families\nare described.
\n\nNow we’re getting somewhere! Visual language has structural units, like any other language.\nVia Wikipedia:
\n\n\n\n\nIts structural units include line, shape, color, form, motion, texture, pattern, direction, orientation, scale, angle,\nspace and proportion.
\n
I contend that medium, if not directly a part of this list, is at least strongly intertwined with the other structural units.\nAs such, medium is most connected to the visual language of a piece compared to other languages.
\n\nThis is an important distinction because there is so much communicative variation within and across media. An LCD screen\ncan be used for almost anything, and a huge range of information and emotion can be expressed as sound over air.
\n\nThere is a dependency, as such, on the visual language for expressive purposes. Two artists could express the same concept\nwith different visual languages in much the same way that a fluid column of text on a computer screen could communicate\nthe same information as a fixed column on a printout. Visual literacy, then, is the ability to decode and encode information\nfrom visual language. Visual fluency is the ability to derive meaning from that visual information.
\n\nThe signs, symbols, analogies, literals, and physical attributes of a given piece as they convey information pertaining\nto the usage of said piece.
\n\nIn many instances the interface is rather passive. A painting on a wall is only interacted with in the sense that it is\nviewed. One could make the case that an ornate frame informs the user not to touch the piece. Not touching is an interaction\nvector.
\n\nA book’s binding, in conjunction with elements of written and visual language, inform the user on the method of turning\npages. By interface convention, a book user may also naturally assume to find certain interface elements in commonly-found\nplaces: jacket, title page, verso, contents, index, etc.
\n\nA computer has a literal, physical interface language at the first layer. An ‘on’ button, a keyboard in a likely-familiar\nlayout, a pointing device of some sort.
\n\nThe on-screen interface prior to the GUI was essentially a programming language in the form of shell scripting.
\n\nDifferent GUIs have different interface languages. While Mac, Windows, and the common Linux windowing systems are the\nstand-out examples of this principle, it’s worth noting that different versions of an OS often contain striking differences\nin interface language.
\n\nLanguages evolve.
\n\nThe web is a curious sea of interface languages. At the very core, it’s a “frame story” of interfaces, in that the browser’s\ncues aren’t necessarily those of the base OS’s GUI (that was fun to write, btw). The ever-changing elements of hypertext\nare another layer on top of that. Then, site-and-or-page-specific styling via CSS enable a web designer (that designation\nused loosely here) to change the interface language much further.
\n\nI’ve already placed media in the spectrum of language scopes where I believe it fits — that of visual language (or perhaps\naural). Platforms and tools can be found much higher up the chain.
\n\nA platform — let’s use Windows XP as an example — is a combination of many languages, some not elaborated upon in this\narticle. A user of the platform must learn certain interface language elements, many of which are composed of visual\nlanguage elements that the user should also likely know. The interface is loaded with written language and various sound-based\nlanguages. What’s so interesting about this from a ‘transliteracy’ perspective is that there are degrees of iteration,\ninclusivity, and exclusivity to the necessary competencies.
\n\nA tool could really be anything, but let’s use Facebook as an example. It fulfills the laughable “digital social network”\ncomponent of the original re-definition, which is a plus in my book. Sure, Facebook has very much become a platform as of\nrecent, but since tools and platforms fall out of what I’m asserting is the scope of transliteracy’s definition, let’s just\nmove forward with Facebook as a tool. It’s part of the previously-explained frame story. It can use its own interface language\nand interchange written languages, but abides by common web interface language conventions in order to promote usability.
\n\nThe important part here is that platforms and tools are combinations of languages, while a medium is only part of a language.
\n\nTransliteracy is the ability to encode and decode information between or across languages.
\n\nI believe this definition meshes well with the original definition and works with the contemporary work done under the\numbrella of transliteracy. It is perhaps necessary to better define the different types of languages and create a more-holistic\nmodel for their interaction, though.
\n\nSorry Andy, I’m going to pick on\nyour latest post\na little bit. On his blog, he wrote regarding the future of libraries:
\n\n\n\n\nPersonally, in the future, I think that the main focus of librarianship will rest on two areas: transliteracy and customer\nservice. For me, transliteracy is the best umbrella concept to the multi-disciplinary knowledges that the future of information\nwill require. With information storage occurring in a multiple of mediums (sic) (audio, video, and written recordings,\nfor example), the ability to navigate the formats will become a necessity.
\n
Personally, in the present, this doesn’t mean much. It’s essentially saying “I think the main focus of librarianship in\nthe future will be knowledge.”
\n\nWithout specificity when using the term (ie. “This is apropos to transliteracy because the user must be able to go across\nthese specific languages in order to interpret the end-goal information”), it could conceivably refer to the entirety of\nhuman perception. That’s a huge umbrella that contains the past, present, and future of libraries, as well as the rest of\nthe perceived and readily-perceptible universe.
\n\nGreat care should be taken to convey scope as it pertains to transliteracy.
\n\nI’m no linguist, psychologist, philosopher, or artist. I know I’ve left out certain context for brevity (ha!) and have\nundoubtedly made unintentional mistakes. There’s been a ton of work that applies to this one term, of which I personally\nhave only skimmed the surface. Here is a list of Wikipedia articles that I think will be useful for yours and my further study:
\n\nHTML is a pretty straightforward markup language. It has tags, each of which has optional attributes and sometimes required\nones as well. Content goes between the opening and closing tags. Sometimes you can even self-close tags (but not <script>
\n! For the love of all things holy not script!). That’s about it — there are comments and a doctype (which is just a special\ncomment in the scheme of things), and some quirks relating mostly to form element attributes, but the gist of html is tags\nwith attributes.
JavaScript has been to hell and back in attempting to handle this object model, but is getting there. If you want to be\nthere now, the extendability of js allows you to use a library like JQuery to play with the tags, attributes, and their\nassociated behaviors.
\n\nHow, then, can a more recently-updated language like CSS be going so off course?
\n\nTake, for example, this checkbox:
\n\n <input type=\"checkbox\" name=\"receivenewsletter\" class=\"register-input\" id=\"receivenewsletter\" checked />\n
Here are some ways to target it using CSS:
\n\ninput[type=\"checkbox\"] {}
input[name=\"receivenewsletter\"] {}
input.register-input {}
input#receivenewsletter {}
input:checked {}
Some of the “<input>
”s in the list are superfluous, but I left them for illustrative purposes. Otherwise, it would be difficult\nto see that #receivenewsletter
is really preceded by the universal selector for all intents and purposes.
I can sort of buy the full stop being shorthand for [class=\"\"]
and similarly the hash for an id (though in the development\nof CSS as a language, that’s not really wha happened), but the last example really bugs me.
CSS pseudo-classes are generally relegated to default browser styles/behaviors that can reasonably take CSS declarations.\n:hover
is a good example. If you’ve ever tried to apply :hover
to an element other than an anchor, you know that IE6-\nwill not take the directive. I agree with this — <a>
has a default behavior on hover while most other elements do not.\nThe :hover
pseudo-class is therefore taking over behavioral duties from JavaScript. Just so you know, I also think that\nthe quirks mode box model makes more sense and would allow for better liquid layouts and cleaner markup had it been the\nstandard.
Getting back to :checked
— As far as I know, hovering does not create, destroy, or change attributes by default in a browser.\nOn the other hand, checking a checkbox via an interface does create or remove a checked attribute. Therefore :checked
should\nbe treated as an attribute using an attribute selector. Having the pseudo-class just muddies the issue.
HTML is a pretty straightforward markup language. It has tags, each of which has optional attributes and sometimes required\nones as well. Content goes between the opening and closing tags. Sometimes you can even self-close tags (but not <script>
\n! For the love of all things holy not script!). That’s about it — there are comments and a doctype (which is just a special\ncomment in the scheme of things), and some quirks relating mostly to form element attributes, but the gist of html is tags\nwith attributes.
You’re like me: you use your iPhone as an alarm clock. You even cued up\nSonny & Cher’s “I Got You Babe”\nto play just like in Groundhog Day (to remind yourself every morning that\nthe only way to beat the futility of day-to-day life is to strive for what you really want).
\n\nYeah, you’re like me. So I’m going to assume these things are true too:
\n\nWhat am I getting at here? The iPhone alarm clock is really usable — it’s easy to set, fairly customizable, can schedule\nalarms really well, and is reliable as it gets. The only time that the usability sucks is when you’re just waking up. Here’s\nwhat it looks like when the alarm goes off:
\n\n\n\nHere are the problems with this in my opinion:
\n\nSo I propose an interface more like this:
\n\n\n\nAn Apple designer could make it prettier, but the basic ideas are there. The background is black, all elements are — at\nbrightest — 74% gray, the Snooze button is about twice as large, and it says Sleep instead of Snooze. Also, it doesn’t\nreally break from the core iPhone UI; the same slider bar, clock, top bar, and dialog colors are all present (though I\nused black text in the button for contrast’s sake).
\n\nIf you’d like to know more about human vision in low-light conditions, check out these Wikipedia articles for starters:
\n\nAlso, for some User Interface advice, knowing about Fitts’ law could be\nreally handy.
\n\nIt would also be great if there were an easy indicator to know when it’s in Snooze mode. I often set a second alarm because\nI’m not sure, so then there are two alarms going concurrently. Then, as I finish checking my email and Facebook, a little\ndialog shows up and I hear that damned song again. How about putting the number of Snooze minutes left inside of the alarm\nindicator in the top bar? Thanks.
\n", "id": "/blog/iphone-alarm-clock-improvements", "url": "/blog/iphone-alarm-clock-improvements/", "path": "_posts/2009-01-17-iphone-alarm-clock-improvements.md", "relative_path": "_posts/2009-01-17-iphone-alarm-clock-improvements.md", "excerpt": "You’re like me: you use your iPhone as an alarm clock. You even cued up\nSonny & Cher’s “I Got You Babe”\nto play just like in Groundhog Day (to remind yourself every morning that\nthe only way to beat the futility of day-to-day life is to strive for what you really want).
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Perhaps my best idea"}, "tags": ["alarm clock","apple","iPhone","Web Design"], "title": "iPhone alarm clock improvements", "date": "2009-01-17 00:00:00 +0000", "slug": "iphone-alarm-clock-improvements", "ext": ".md" }, { "content": "Google Chatback badges are great for adding the ability to chat to with your visitors to your sites — Google even offers\na couple of formats that you can copy and paste straight from their site.\nIt couldn’t be easier! However, if you’d like the coolness of the iframe version (javascript popup, etc.) and the themability\nof the simple link, here’s a little code for you:
\n\n <a class=\"ask-item\" title=\"Chat with Brad instantly\"\n onclick=\"window.open('http://www.google.com/talk/service/badge/Start?tk=z01q6amlq1do7r41j2498um28pp81ungnf86ajqk6cj1kqrk8htll2t43us1gk2aua89v8akkuuagor6inh581hoqpskhbkb4s9rlur1brtcqen9al2c0gqkj2auj7q0pp25321osdbr2khk7l3ee7msrjvfto918t6v9u15a','Window','menubar=no,width=300,height=500,toolbar=no,resizable=yes');\"\n href=\"#\"\n >\n <script type=\"text/javascript\">\n if (location.protocol.toLowerCase() == 'http:') {\n document.write(unescape(\"%3Cimg src='http://www.google.com/talk/service/badge/Show?tk=z01q6amlqb9e8ste4je59hoj5t9ngb9evhed9couk6fd7lli6i4s1lkuujp02g0mkd9e3b6cm3s9d5uab3ud8et6m2raheov3ugl8r5golbc75mmoi4uol4uhj17kife84ecn2i1rbsikfnkglac5lmh6ooed3sv9d82idslh&w=9&h=9' alt='' /%3E\"));\n }\n </script>\n <span>Chat with Brad</span>\n </a>\n
Notes:
\n\nGoogle Chatback badges are great for adding the ability to chat to with your visitors to your sites — Google even offers\na couple of formats that you can copy and paste straight from their site.\nIt couldn’t be easier! However, if you’d like the coolness of the iframe version (javascript popup, etc.) and the themability\nof the simple link, here’s a little code for you:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Deprecated chat widget"}, "tags": ["General"], "title": "Google Chatback Badge Improvements", "date": "2009-01-14 00:00:00 +0000", "slug": "google-chatback-badge-improvements", "ext": ".md" }, { "content": "Today’s circulating single-volume wonder was the barely-tolerable\nEncyclopedia of Strange and Unexplained Physical Phenomena\n(Jerome Clark, Gale, 1993).
\n\n\n\nIt must be tough to put together such a work, as most such phenomena have no evidence whatsoever, though many readers may\nhave beliefs. Clark ranged between absolute denial of claims and a believing awe of others. This editorializing wrecked\nthe book’s credibility for me.
\n\nProbably the most heinous offense was the repeated use of quotations and testimony from\nIvan T. Sanderson, who either ended up wrong (In the case of Jacko), or\nsputtered gibberish (as in his ‘penguin’ theory of the White River Monster). While Sanderson is likely a respected name in\ncryptozoology et cetera, the frequent mentions detracted from the authority of the encyclopedia.
\n", "id": "/blog/skeptical-about-this-one", "url": "/blog/skeptical-about-this-one/", "path": "_posts/2009-01-07-skeptical-about-this-one.md", "relative_path": "_posts/2009-01-07-skeptical-about-this-one.md", "excerpt": "Today’s circulating single-volume wonder was the barely-tolerable\nEncyclopedia of Strange and Unexplained Physical Phenomena\n(Jerome Clark, Gale, 1993).
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"An encyclopedia beyond belief"}, "tags": ["52for2009","cryptozoology","encyclopedia","skepticism"], "title": "Skeptical about this one", "date": "2009-01-07 00:00:00 +0000", "slug": "skeptical-about-this-one", "ext": ".md" }, { "content": "Today’s Encyclopedia in the series is\nThe Encyclopedia of Censorship, edited\nby Jonathon Green. Here are some Pros right off the bat:
\n\nTo the learning!
\n\nThe entry on Hugh Hefner was particularly entertaining; though I think I found more bad puns than the author had intended.\nAltogether, this encyclopedia was unimpressive. The articles were pithy to the point of uselessness, and there were many\nspelling and grammatical errors. Perhaps this is one of those books that’s really a dictionary but was entitled with\nEncyclopedia to sound more official.
\n", "id": "/blog/encyclopedia-of-censorship", "url": "/blog/encyclopedia-of-censorship/", "path": "_posts/2009-01-07-encyclopedia-of-censorship.md", "relative_path": "_posts/2009-01-07-encyclopedia-of-censorship.md", "excerpt": "Today’s Encyclopedia in the series is\nThe Encyclopedia of Censorship, edited\nby Jonathon Green. Here are some Pros right off the bat:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"[Redacted]"}, "tags": ["52for2009","censorship","encyclopedia"], "title": "Encyclopedia of Censorship", "date": "2009-01-07 00:00:00 +0000", "slug": "encyclopedia-of-censorship", "ext": ".md" }, { "content": "This week I’m reading an entry from each letter of the alphabet (26 entries if you’re keeping score) from a different\nEncyclopedia every day.
\n\nToday was Encyclopedia of the Great Depression, and here’s what\nI read about:
\n\nThe impression I got from Jonathan Alter’s The Defining Moment\n(or maybe it was a PBS special) was that FDR remained isolationist as late as his 1940 campaign. Even so, it seems people\nwere derided for being isolationist and/or pacifist earlier than that. The things you learn! BTW, did you know Charles\nLindbergh was born in Detroit?
\n\nAltogether, it’s a neat little two-volume set.
\n\nWeek 1 note: I had a Turk-free weekend. When I’ve completed 8 hours, I’ll post the final tally.
\n", "id": "/blog/week-2-encyclopedia-by-letters", "url": "/blog/week-2-encyclopedia-by-letters/", "path": "_posts/2009-01-05-week-2-encyclopedia-by-letters.md", "relative_path": "_posts/2009-01-05-week-2-encyclopedia-by-letters.md", "excerpt": "This week I’m reading an entry from each letter of the alphabet (26 entries if you’re keeping score) from a different\nEncyclopedia every day.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Reading a bunch of articles and listing them"}, "tags": ["52for2009","encyclopedia","great depression"], "title": "Week 2 — Encyclopedia by Letters", "date": "2009-01-05 00:00:00 +0000", "slug": "week-2-encyclopedia-by-letters", "ext": ".md" }, { "content": "This year I’m doing something new every week. Sometimes it’ll be accomplishing a particular thing (like writing all my\nrepresentative legislators), but more often it will be a daily activity for the week, like watching a Woody Allen film\nnightly. As you may have guessed, I’ll be blogging these experiences.
\n\nThis week I’m spending 2 hours a day doing HITs (Human Intelligence Tasks) on Amazon’s Mechanical Turk.\nAt the end of the week I hope to have earned enough to buy something (from Amazon of course).
\n\nI clicked the ads I preferred. It took about 15 minutes for 55 pages of the same thing, bringing me a few cents.
\n\nYou could try Mahalo Answers, where the best answer to a question can bring some money your way.
\n", "id": "/blog/52for2009-1-turk-for-2-hours-a-day", "url": "/blog/52for2009-1-turk-for-2-hours-a-day/", "path": "_posts/2009-01-02-52for2009-1-turk-for-2-hours-a-day.md", "relative_path": "_posts/2009-01-02-52for2009-1-turk-for-2-hours-a-day.md", "excerpt": "This year I’m doing something new every week. Sometimes it’ll be accomplishing a particular thing (like writing all my\nrepresentative legislators), but more often it will be a daily activity for the week, like watching a Woody Allen film\nnightly. As you may have guessed, I’ll be blogging these experiences.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"This was a fun idea for a new years resolution"}, "tags": ["52for2009","Amazon","HITs","Mahalo Answers","Mechanical","Turk"], "title": "52for2009 #1 — Turk for 2 hours a day", "date": "2009-01-02 00:00:00 +0000", "slug": "52for2009-1-turk-for-2-hours-a-day", "ext": ".md" }, { "content": "Part 1 in a continuing series where I think up a recipe, post it, then make it. I will post later as to whether it’s\nworth making/eating.
\n\nI will try to be elaborate with the actual procedural recipes; but right now I’m quite hungry, so here’s the menu description:
\n\nA 1/4 lb patty, covered with shredded Mexican cheeses, Black beans, and Jalapenos, all on a Bruschetta-like bread bun.
\n", "id": "/blog/recipe-before-i-make-it-1-mexitalian-burger", "url": "/blog/recipe-before-i-make-it-1-mexitalian-burger/", "path": "_posts/2008-05-24-recipe-before-i-make-it-1-mexitalian-burger.md", "relative_path": "_posts/2008-05-24-recipe-before-i-make-it-1-mexitalian-burger.md", "excerpt": "Part 1 in a continuing series where I think up a recipe, post it, then make it. I will post later as to whether it’s\nworth making/eating.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"This turned out great! Red Robin eat your heart out"}, "tags": ["burgers","Food","mexitalian","recipes"], "title": "Recipe before I make it #1- MexItalian Burger", "date": "2008-05-24 00:00:00 +0000", "slug": "recipe-before-i-make-it-1-mexitalian-burger", "ext": ".md" }, { "content": "Since I feel shafted that “rocket surgery” took off unattributed, I propose the following terms:
\n\nSince I feel shafted that “rocket surgery” took off unattributed, I propose the following terms:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"I starchive my gmail all the time. Inbox zero, baby!"}, "tags": ["General","TV"], "title": "For the Cultural Lexicon", "date": "2008-04-24 00:00:00 +0000", "slug": "for-the-cultural-lexicon", "ext": ".md" }, { "content": "\n\nmeta rock Originally uploaded by\nbradeuchre
\n\nThis is my entry into Color War 2008’s first battle — Flickr RoShamBo! Things you should\nknow: I’m throwing rock, for the Orange Team.
\n", "id": "/blog/meta-rock", "url": "/blog/meta-rock/", "path": "_posts/2008-03-22-meta-rock.md", "relative_path": "_posts/2008-03-22-meta-rock.md", "excerpt": "\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"I miss old-school ze frank"}, "tags": ["Meta"], "title": "meta rock", "date": "2008-03-22 00:00:00 +0000", "slug": "meta-rock", "ext": ".md" }, { "content": "It appears that the Canadians are experimenting with protomatter. Just look\nat this video:
\n\n\n\nIt’s obvious now that they are trying to create a Genesis Device in an\nattempt to terraform the moon.
\n\nSchematics to follow…
\n", "id": "/blog/those-canadians", "url": "/blog/those-canadians/", "path": "_posts/2008-03-18-those-canadians.md", "relative_path": "_posts/2008-03-18-those-canadians.md", "excerpt": "It appears that the Canadians are experimenting with protomatter. Just look\nat this video:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Please let me become a citizen, Canada."}, "tags": ["canadian","commercial","Genesis Device","molson","molson canadian","protomatter","television","terraforming","TV"], "title": "Those Canadians!", "date": "2008-03-18 00:00:00 +0000", "slug": "those-canadians", "ext": ".md" }, { "content": "My resume is finally ready for the web. However, I’m interested in your opinion and\ncriticism, so please contact me with your thoughts.
\n\nAlso, for your time-wasting pleasure, I give you: Faker Baker BS3. Anyone’s who’s ever used B&T knows this screen all too\nwell. Now, all you have to do is point your browser to the page and you’ll instantly look busy! For you pros out there,\nthe color is #47768e.
My resume is finally ready for the web. However, I’m interested in your opinion and\ncriticism, so please contact me with your thoughts.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"First draft of my online resume. It had wood grain."}, "tags": ["General","Web Design"], "title": "Help me with my resume", "date": "2008-03-09 00:00:00 +0000", "slug": "help-me-with-my-resume", "ext": ".md" }, { "content": "The strongest argument for a centralized personal account that is device-decentralized is the elimination of redundancy.\nRead that again.
\n\nI’m claiming (without prior research) that holistic web services are most efficiently disbursed through a monopolistic provider.
\n\nFuture media solutions will know a user’s background knowledge — and leave out redundant information.
\n\nThe strongest argument for a centralized personal account that is device-decentralized is the elimination of redundancy.\nRead that again.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Desiring siloes right before siloes became pervasive"}, "tags": ["Predictions"], "title": "Context in the Future", "date": "2008-03-06 00:00:00 +0000", "slug": "context-in-the-future", "ext": ".md" }, { "content": "First, caffeine withdrawal feels like angry jetleg with headaches.
\n\nSecond, and this is a very local thing. One of my dreams last night had a creepy fictional wild-west amusement park south\nof Temple on Cass. There was a saloon, an arcade, and trains going everywhere. It was AWESOME. Just my opinion, but I\nthink Detroit should build “Wild west town” just north of Foxtown.
\n", "id": "/blog/stuff-about-sleep", "url": "/blog/stuff-about-sleep/", "path": "_posts/2008-03-02-stuff-about-sleep.md", "relative_path": "_posts/2008-03-02-stuff-about-sleep.md", "excerpt": "First, caffeine withdrawal feels like angry jetleg with headaches.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Instead of Westworld we got Little Caesars Arena"}, "tags": ["Meta"], "title": "Stuff about sleep", "date": "2008-03-02 00:00:00 +0000", "slug": "stuff-about-sleep", "ext": ".md" }, { "content": "\n\n\nIf you put a ridiculous prop mustache on Justin Timberlake, he unexpectedly looks a whole hell of a lot like Orlando Bloom.\nThis is not surprising — Orlando Bloom looks ridiculous all the time, with or without a mustache.
\n", "id": "/blog/observations", "url": "/blog/observations/", "path": "_posts/2008-02-29-observations.md", "relative_path": "_posts/2008-02-29-observations.md", "excerpt": "\n\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Took an unexpected swipe at Orlando Bloom"}, "tags": ["Movies","TV"], "title": "Observations", "date": "2008-02-29 00:00:00 +0000", "slug": "observations", "ext": ".md" }, { "content": "Chat reference should be easy, instantaneous, and pervasive. It’s good to also be accessible, usable,\nopen, and attractive.
\n\nIt’s the first three reasons that I liked MeeboMe widgets
\n\nIt’s the last four reasons why I now prefer libraryh3lp\nor Google chatback badges.
\n", "id": "/blog/lose-the-meebome-gadget", "url": "/blog/lose-the-meebome-gadget/", "path": "_posts/2008-02-26-lose-the-meebome-gadget.md", "relative_path": "_posts/2008-02-26-lose-the-meebome-gadget.md", "excerpt": "Chat reference should be easy, instantaneous, and pervasive. It’s good to also be accessible, usable,\nopen, and attractive.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Strong opinion from the age of Flash."}, "tags": ["chat","chatback","gmail","Google","google talk","Libraries","libraryh3lp","meebome","meebo"], "title": "Lose the MeeboMe Gadget", "date": "2008-02-26 00:00:00 +0000", "slug": "lose-the-meebome-gadget", "ext": ".md" }, { "content": "\n\nMy parody of the famous http://www.isitchristmas.com/ website.
\n\nIS it Opposite Day? Think about it.
\n", "id": "/blog/is-it-opposite-day", "url": "/blog/is-it-opposite-day/", "path": "_posts/2008-02-15-is-it-opposite-day.md", "relative_path": "_posts/2008-02-15-is-it-opposite-day.md", "excerpt": "\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Gimmick site I ran for a while"}, "tags": ["opposite day","christmas","awesome","Web Design"], "title": "Is it Opposite Day?", "date": "2008-02-15 00:00:00 +0000", "slug": "is-it-opposite-day", "ext": ".md" }, { "content": "Anodizing consumer electronics varying shades of pink does not make them any more romantic as gifts. This is even true for iPods.
\n\nHere’s the range:
\n\nNote the lack of cell phones and other gizmos on the list. There may be instances when the above guidelines do not apply,\nbut giving a Magenta Blackberry Pearl seems a little messed-up on such an occasion.
\n", "id": "/blog/valentine-commercialism", "url": "/blog/valentine-commercialism/", "path": "_posts/2008-02-09-valentine-commercialism.md", "relative_path": "_posts/2008-02-09-valentine-commercialism.md", "excerpt": "Anodizing consumer electronics varying shades of pink does not make them any more romantic as gifts. This is even true for iPods.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Pink electronics are for people who like the color pink."}, "tags": ["General"], "title": "Valentine Commercialism", "date": "2008-02-09 00:00:00 +0000", "slug": "valentine-commercialism", "ext": ".md" }, { "content": "I guess I’m just perpetuating the sensationalism, but…
\n\nThe salesgenie.com ads during the Super Bowl were incredibly racist.\nThey actually reminded me of spots I’d seen from the 50s and 60s, prior to political correctness.
\n\nAnd they were intentionally bad!\nIf it wasn’t so brilliant, I’d be really angry!
\n\nBut they were still racist (even considering that they could be considered self-deprecating), so it’s tough to know how\nto feel. All I know is that I’m not gonna go to salesgenie.
\n", "id": "/blog/oh-dear", "url": "/blog/oh-dear/", "path": "_posts/2008-02-04-oh-dear.md", "relative_path": "_posts/2008-02-04-oh-dear.md", "excerpt": "I guess I’m just perpetuating the sensationalism, but…
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Racism is racism."}, "tags": ["TV"], "title": "Oh Dear", "date": "2008-02-04 00:00:00 +0000", "slug": "oh-dear", "ext": ".md" }, { "content": "A Reddit Comment Thread of a DumbFunny Pic of a Thread Comment.
\n\nEverything about this is brilliant.
\n", "id": "/blog/patrons-in-their-natural-habitat", "url": "/blog/patrons-in-their-natural-habitat/", "path": "_posts/2008-01-29-patrons-in-their-natural-habitat.md", "relative_path": "_posts/2008-01-29-patrons-in-their-natural-habitat.md", "excerpt": "A Reddit Comment Thread of a DumbFunny Pic of a Thread Comment.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Library meta humor."}, "tags": ["Libraries"], "title": "Patrons in their Natural Habitat", "date": "2008-01-29 00:00:00 +0000", "slug": "patrons-in-their-natural-habitat", "ext": ".md" }, { "content": "Google Reader has a new favicon!
\n", "id": "/blog/only-upgrade", "url": "/blog/only-upgrade/", "path": "_posts/2008-01-28-only-upgrade.md", "relative_path": "_posts/2008-01-28-only-upgrade.md", "excerpt": "Google Reader has a new favicon!
\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"I think this counts as a tweet."}, "tags": ["Google"], "title": "Only Upgrade?", "date": "2008-01-28 00:00:00 +0000", "slug": "only-upgrade", "ext": ".md" }, { "content": "Before I launch the gallery feature (which I want to get right the first time, given that many people have made\ndefault-identical themes just to test out the app), I’m the only person who’s had an easy look at all the themes people\nhave been making. It’s quite exciting! For instance:
\n\n\n\nFrom a recent Finnish visitor. Keep up the good work, everyone!
\n", "id": "/blog/people-are-making-pretty-themes", "url": "/blog/people-are-making-pretty-themes/", "path": "_posts/2008-01-22-people-are-making-pretty-themes.md", "relative_path": "_posts/2008-01-22-people-are-making-pretty-themes.md", "excerpt": "Before I launch the gallery feature (which I want to get right the first time, given that many people have made\ndefault-identical themes just to test out the app), I’m the only person who’s had an easy look at all the themes people\nhave been making. It’s quite exciting! For instance:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Gone themes from defunct tools."}, "tags": ["Meta"], "title": "People are making pretty themes!", "date": "2008-01-22 00:00:00 +0000", "slug": "people-are-making-pretty-themes", "ext": ".md" }, { "content": "Are intellectual pursuits sexy? I contend the answer is ‘yes,’ and my super-strong argument is “because John Lennon sang so.”
\n\nIn the song “A Day in the Life,” the phrase “I’d love to turn you on” is first preceded by a reference to reading (“having\nread the book”) and then by a witticism (that whole Albert Hall thing). The juxtaposition is good enough for me!
\n\nRefs:
\n\n\n", "id": "/blog/an-alternative-interpretation", "url": "/blog/an-alternative-interpretation/", "path": "_posts/2008-01-22-an-alternative-interpretation.md", "relative_path": "_posts/2008-01-22-an-alternative-interpretation.md", "excerpt": "Are intellectual pursuits sexy? I contend the answer is ‘yes,’ and my super-strong argument is “because John Lennon sang so.”
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Silly Beatles thing."}, "tags": ["Meta"], "title": "An Alternative Interpretation", "date": "2008-01-22 00:00:00 +0000", "slug": "an-alternative-interpretation", "ext": ".md" }, { "content": "You might ask — which theme does the creator of the (currently) largest iGoogle theme creation tool use for his\nhomepage?
The Answer, my friend, is this one.
\n", "id": "/blog/more-theme-y-stuff", "url": "/blog/more-theme-y-stuff/", "path": "_posts/2008-01-20-more-theme-y-stuff.md", "relative_path": "_posts/2008-01-20-more-theme-y-stuff.md", "excerpt": "You might ask — which theme does the creator of the (currently) largest iGoogle theme creation tool use for his\nhomepage?
This iswas a useful app — It let you create and host an iGoogle theme, which you could then use\nimmediately (or, y’know, attempt submit to the Google Theme Directory). I made it. It was awesome. Let me know if you\nrun into any problems with it. Thanks.
This iswas a useful app — It let you create and host an iGoogle theme, which you could then use\nimmediately (or, y’know, attempt submit to the Google Theme Directory). I made it. It was awesome. Let me know if you\nrun into any problems with it. Thanks.
I’ve seen some similar articles to this one — about how\nthe super-rich are electing to donate their fortunes rather than give the money to their heirs.
\n\nI’m torn on this issue: not that I care if the children of the super-rich are only somewhat-rich, but rather the outflow\nof all the money.
\n\nIn the short term, charitable donations sent to third-world nations are actually more bang-for-your-philanthropic-buck.\nIt costs less to affect dramatic change for more people. In the long term, though, developing nations creates international\ncompetition. In that sense, donating abroad will make it tougher for a rich person’s child to amass the same wealth as\nhis/her parents.
\n\nThe alternative would be to donate domestically. Given that our standard of living is currently higher than much of the\nworld, charity can often be ‘inefficient’. It is patriotic, though, there certainly are noble causes, and it is less\nlikely to harm our economy.
\n\nSo, to all my super-rich readers: please give your charitable donations some serious consideration. Thanks.
\n", "id": "/blog/the-trouble-with-charity", "url": "/blog/the-trouble-with-charity/", "path": "_posts/2008-01-17-the-trouble-with-charity.md", "relative_path": "_posts/2008-01-17-the-trouble-with-charity.md", "excerpt": "I’ve seen some similar articles to this one — about how\nthe super-rich are electing to donate their fortunes rather than give the money to their heirs.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"An opinion I've since outgrown."}, "title": "The Trouble with Charity", "date": "2008-01-17 00:00:00 +0000", "slug": "the-trouble-with-charity", "ext": ".md", "tags": [] }, { "content": "\n\nImportant: It is just as possible for a book to have incorrect or misleading information as it is for a website; just\nread The Cult of the Amateur and you’ll know what I’m talking about.
\n\nA recent article supports\nAndrew Keen’s “People are reading print sources less, and that means the end of civilization\n(paraphrased)” argument.
\n\nNow, I happen to have some anonymous circulation statistics from a public library: after crunching the numbers, I found\nthat among the people who currently have a book checked out, the average number out for people born before 1980 was 4.47,\nwhile those after 1980 is 3.75. Not exactly a huge generation gap (albeit the numbers are a tad skewed).
\n\nIn the library world, we call finding and assessing information of any format\n“Information Literacy.” The ultimate responsibility for the dissemination\nof information rests with the reader, bottom line.
\n", "id": "/blog/keep-reading", "url": "/blog/keep-reading/", "path": "_posts/2008-01-17-keep-reading.md", "relative_path": "_posts/2008-01-17-keep-reading.md", "excerpt": "\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Andrew Keen's arguments become weaker over time."}, "tags": ["andrew keen","information literacy","internet","Libraries","wikipedia"], "title": "Keep Reading!", "date": "2008-01-17 00:00:00 +0000", "slug": "keep-reading", "ext": ".md" }, { "content": "\n\n\n\n\n‘Classic’ — A book which people praise and don’t read.\n -Mark Twain
\n
My uncle wanted How to talk about books you haven’t read\nby Pierre Bayard, so I checked it out for the semester through school. Gave it a lil skim before sending it off to him.\nIt’s actually really interesting (not the content of the book itself (rather dry) but the overarching concept) to think\nabout the sheer volume of content that will go unread. How many times have you checked out a book only to return it with\nnary a skim-through? How many cocktail party conversations are a biblio-centric whose-is-bigger competition based on lies?
\n\nYou’re skimming this article right now. AREN’T YOU!?!?
\n\nThis principle can influence your own behavior, how your librarian finds information for you, and especially how a writer\neffectively sends his/her message. BTW, skimming is an art form\nthat you should have mastered early in high school, but can continually practice; especially for books written by Frenchies\n(damned frenchmen!).
\n\nIt’s one of the most shielded non-secrets in everyday life: everyone discussing books and citing papers, though everyone\nknows that not a lot of reading is really occuring. It almost makes me feel better about being a\nnon-reading librarian. Can we all just agree\nthat being really well-read is a lot like being really buff: there’s a certain point where it’s no longer useful, and you’re\njust showing off.
\n\nThis is a call to all the writers out there —\nwrite for your audience.
\n", "id": "/blog/stop-reading", "url": "/blog/stop-reading/", "path": "_posts/2008-01-14-stop-reading.md", "relative_path": "_posts/2008-01-14-stop-reading.md", "excerpt": "\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Why read when you can skim and pretend?"}, "tags": ["General"], "title": "Stop Reading!", "date": "2008-01-14 00:00:00 +0000", "slug": "stop-reading", "ext": ".md" }, { "content": "\n\nI only have 108 days! For more information, check out\nthis facebook group
\n", "id": "/blog/six-pack", "url": "/blog/six-pack/", "path": "_posts/2008-01-13-six-pack.md", "relative_path": "_posts/2008-01-13-six-pack.md", "excerpt": "\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Peyton Manning telling it like it is."}, "tags": ["General"], "title": "Six Pack", "date": "2008-01-13 00:00:00 +0000", "slug": "six-pack", "ext": ".md" }, { "content": "Philosophies to live by:
\n\nPhilosophies to live by:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Simple two-step process."}, "tags": ["Meta"], "title": "How to Live", "date": "2008-01-12 00:00:00 +0000", "slug": "how-to-live", "ext": ".md" }, { "content": "Gmail is good.
\n\nIt has a ton of storage. WSU Webmail does not. It’s easy to forward your WSU webmail to a gmail account. Here’s how, in order:
\n\nApplying filters is the most important part of this equation. Experts generally agree that you should\nkick the email-checking habit.\nBy reducing the amount of stuff-you-don’t-wanna-read from your inbox, you can save tons of time! Here are a few of my favorite\nfilters (specific to the WSU LISP Listserv):
\n\n##Reduces the number of textbook-selling emails
\n\nTo: LISPINF
\n\nHas the Words: (sale OR selling OR wanted OR needed OR Looking) AND (book OR textbook OR texts OR text)
\n\nDoesn’t Have: “Job Posting” OR “REMINDER”
\n\nDo this: Skip Inbox, Apply label “Textbooks”
\n\n##Unsuccessful unsubscribe attempts can get annoying!
\n\nHas the Words: signoff lispinf Do this: Skip Inbox, Apply label “idiot”
\n\n##Lets me browse the Job Postings when it’s occasionally useful to me
\n\nSubject:(JOB POSTING) Do this: Skip Inbox, Apply label “Job Posting”
\n\n##Tip
\n\nOne thing you can do with filters is forward your emails — so using mailbucket you can make\nRSS feeds for certain threads.
\n", "id": "/blog/gmail-hacks", "url": "/blog/gmail-hacks/", "path": "_posts/2008-01-12-gmail-hacks.md", "relative_path": "_posts/2008-01-12-gmail-hacks.md", "excerpt": "Gmail is good.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Forwarding and send as instructions for Wayne State LIS students in 2008."}, "tags": ["Google"], "title": "Gmail hacks", "date": "2008-01-12 00:00:00 +0000", "slug": "gmail-hacks", "ext": ".md" }, { "content": "If you Google yourself often (and we all do)\n(and we should), you can\nactually save yourself a bit of time by mashing together two simple and free web services:
\n\nAll you gotta do is set up Google Alerts to send searches for your name (or anything you care about for that matter) to\n(darn near anything)@mailbucket.org . Then, subscribe to the feed located at http://www.mailbucket.org/(darn near anything).xml .\nPersonally, I send the alerts to my gmail, filter them, then forward them to mailbucket, but that’s a personal preference.
\n\nHints: Daily is annoying. Weekly seems just about right. If you don’t have a huge online presence, you might get a lot of repeats.
\n\nWhy not just read them as an email, you ask? Well, it’s mashing two things together, so it doesn’t have to make sense! In\nmy mind, my email and my aggregator are the same darn thing, except that I choose what I want to show up in my\nGoogle Reader.
\n\nSpecial thanks to David Cross for the idea. You’re funny.
\n\nIf you want to keep tabs on me, you can subscribe to\nhttp://www.mailbucket.org/bradczerniak.xml
\n", "id": "/blog/simple-productivity-hack", "url": "/blog/simple-productivity-hack/", "path": "_posts/2008-01-09-simple-productivity-hack.md", "relative_path": "_posts/2008-01-09-simple-productivity-hack.md", "excerpt": "If you Google yourself often (and we all do)\n(and we should), you can\nactually save yourself a bit of time by mashing together two simple and free web services:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"A Google Alerts trick from back in the day."}, "tags": ["Meta"], "title": "Simple Productivity Hack", "date": "2008-01-09 00:00:00 +0000", "slug": "simple-productivity-hack", "ext": ".md" }, { "content": "Is it just me, or are you more likely to get requests and app invites from people you don’t care about/don’t like?
\n\nIt makes sense, really. I don’t want to waste my REAL friends’ time while I try out crummy apps that always default to an\ninvite page.
\n\nActually, it’s kind of a neat mechanism for weeding out non-friends. “Who’s (Your name here)? Whoever they are, they’ve\njust invited me to Werewolves one time too many!”
\n", "id": "/blog/is-this-a-coincidence", "url": "/blog/is-this-a-coincidence/", "path": "_posts/2008-01-08-is-this-a-coincidence.md", "relative_path": "_posts/2008-01-08-is-this-a-coincidence.md", "excerpt": "Is it just me, or are you more likely to get requests and app invites from people you don’t care about/don’t like?
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Sometimes we don't hurt just the ones we love."}, "tags": ["Facebook"], "title": "Is this a coincidence?", "date": "2008-01-08 00:00:00 +0000", "slug": "is-this-a-coincidence", "ext": ".md" }, { "content": "I got the DVD Box set for\nSports Night\nfor Christmas about four years ago. Every Winter (and sometimes throughout the year) I revisit the DVDs. Here are a few\nquotes — ones I thought either funny or meaningful enough to write down:
\n\n\n\nNeil Finn - She Will Have Her Way; Featured in the second season as a theme\nelement for Casey’s love of Dana
\n\n\n\n\nDANA: This is the craziest thing I’ve ever experienced in my life!\nISAAC: Well, then you gotta live more, Dana, ‘cause there’s some crazy-ass stuff out there.
\n
\n\n\nJEREMY: Because women don’t have special powers! Let’s dispense with that theory right now. Women don’t have a sixth sense.\nWomen don’t have intuition. Women don’t have special powers!
\n
\n\n\n\nDan: You don’t have a rep. You don’t have street cred. Your last date was 14 years ago and you ended up with a marriage and a divorce.
\n
\n\n\n\nCASEY: You have a crush on Hilary Clinton.\nDAN: I carry a torch for her, yes.
\n
\n\n\n\nCASEY: Hey, you’re talkin’ about the woman whose first date with me I’m planning. (Pause.) That was some pretty interesting grammar
\n
\n\n\n\nNATALIE: Is there a number?\nCASEY: What?\nNATALIE: Is there a set number of women?\nCASEY: I don’t know.\nNATALIE: ‘Cause if there’s a set number of women, maybe you could just get ‘em out of the way, bing bam boom.\nCASEY: Bing bam boom?\nNATALIE: That was me getting women out of the way really fast.
\n
\n\n\n\nDAN: Boned and de-boned mean the same thing. There’s such a word as disheveled, but “sheveled” is nowhere to be found in the dictionary.
\n
\n\n\n\nCASEY: The show’s important, but first things first: There are bagels on that table.
\n
\n\n\n\nSAM: Do you guys know who Philo Farnsworth was? He invented television. I don’t mean he invented television like Uncle Milty,\nI mean he invented the television. In a little house in Provo, Utah. At a time when the idea of transmitting moving pictures\nthrough the air would be like me saying I’ve figured out a way to beam us aboard the Starship Enterprise. He was a visionary\nand he died broke and without fanfare. The guy I really like though was his brother-in-law, Cliff Gardner. He said to Philo,\n“I know everyone thinks you’re crazy, but I want to be a part of this. I don’t have your head for science, so I’m not\ngonna be much help with the design and mechanics of the invention. But it sounds like in order to do your testing, you’re\ngonna need glass tubes.” See Philo was inventing a cathode receptor, and even though Cliff didn’t know what that meant\nor how it worked, he’d seen Philo’s drawing and he knew they were gonna need glass tubes and since television hadn’t been\ninvented yet, it’s not like you could get ‘em at the local TV repair shop. “I want to be a part of this”, Cliff said,\n“and I don’t have your head for science. How would it be if I taught myself to be a glassblower? And I could set up a\nlittle shop in the backyard. And I could make all the tubes you’ll need for testing.” There oughta be Congressional medals\nfor people like that.
\n
\n\n\n\nJEREMY: We will run a test.\nNATALIE: Listen to this.\nDANA: What kind of test?\nNATALIE: A KY test.\nJEREMY: Y2K.
\n
\n\n\n\nDAN: Don’t you think she’s wrong if she thinks that?\nCASEY: Listen, McMurphy, if it were up to me I’d let you and the big Indian out of the hospital, but…
\n
\n\n\n\n\n", "id": "/blog/sports-night", "url": "/blog/sports-night/", "path": "_posts/2008-01-01-sports-night.md", "relative_path": "_posts/2008-01-01-sports-night.md", "excerpt": "DAN: Hey, let’s just hold on to our horses here. I may not be a framed picture of mental health, but Doctor Girl’s got\nanother thing coming if she think I’m gonna go lie on her couch and, you know, talk to her.
\n
I got the DVD Box set for\nSports Night\nfor Christmas about four years ago. Every Winter (and sometimes throughout the year) I revisit the DVDs. Here are a few\nquotes — ones I thought either funny or meaningful enough to write down:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Quotes from one of my favorite shows."}, "tags": ["TV"], "title": "Sports Night", "date": "2008-01-01 00:00:00 +0000", "slug": "sports-night", "ext": ".md" }, { "content": "General Update (salutes)
\n\n^How I Met Your Mother reference.
\n\nAnYwAy, it seems like the main purpose of this blog is to update the status of this blog. Kinda weird, but I’ve got twenty\nindex cards with super-cool posts that I want to write. It’s not a resolution, but I can totally see myself posting more\nin 2008.
\n\nI guess the real purpose of THIS post is to let you know about some of the changes to hawidu.com. I’ve done more extensive\ndamage to the Wordpress theme, so now it’s two-column and much cleaner. Also, the menu structure is cleaner (though still\nnot as intuitive and accessible as I want). Finally, my pride and joy: the 404 error page.\nYeah.
\n\nHave a Happy New Year! You’ll be hearing more from hawidu.com soon.
\n", "id": "/blog/general-update", "url": "/blog/general-update/", "path": "_posts/2007-12-29-general-update.md", "relative_path": "_posts/2007-12-29-general-update.md", "excerpt": "General Update (salutes)
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"A Brad post, going into 2008."}, "title": "General Update", "date": "2007-12-29 00:00:00 +0000", "slug": "general-update", "ext": ".md", "tags": [] }, { "content": "Hey everybody. I hope that my relentless testing this afternoon didn’t bog down your aggregator. Anyways, I made a little\ngadget that communicates to independently-hosted blogs via xml-rpc. Hope SOMEBODY besides me finds it useful. Oh, and all\nthe source is available at that link too. Enjoy!
\n", "id": "/blog/post-to-blog-gadget", "url": "/blog/post-to-blog-gadget/", "path": "_posts/2007-12-24-post-to-blog-gadget.md", "relative_path": "_posts/2007-12-24-post-to-blog-gadget.md", "excerpt": "Hey everybody. I hope that my relentless testing this afternoon didn’t bog down your aggregator. Anyways, I made a little\ngadget that communicates to independently-hosted blogs via xml-rpc. Hope SOMEBODY besides me finds it useful. Oh, and all\nthe source is available at that link too. Enjoy!
\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"For all the iGoogle users out there."}, "tags": ["Web Design"], "title": "Post To Blog Gadget", "date": "2007-12-24 00:00:00 +0000", "slug": "post-to-blog-gadget", "ext": ".md" }, { "content": "Let’s start where any good history begins — in the pre-historic.
\n\nBefore around 10,000 BCE — animals would find and eat fermented fruits, thereby becoming mildly intoxicated. It is believed\nthat early man observed this animal behavior, leading to the discovery of fermentation.
\n\nAfter 10,000 BCE, until around 100 BC — Early man (in civilization sprung up from Egypt to China, to Pre-Columbian America)\n — Began brewing beer and fermenting wine. In many cases these concoctions were based in their religions, though they were\n also crude medicines and drank for varying purposes. After around 100 BC, at least in the Arabian Peninsular area, scientists\n had discovered distillation — leading to new ways to get crunk.
\n\n1336-1364 AD — Giovanni De Dondi constructs the first astronomical clocks documented to have measured time in units as small\nas minutes, creating the first reliable means for partitioning an hour into sub-units.
\n\n1963 — Phillips introduces the compact audio cassette, allowing widespread and simple “dubbing” and mixing of audio for\nconsumer purposes.
\n\nOk, so I’ve skipped a few other milestones — but the point is, the power hour cannot be any older than around 700 years —\nthough it is much more likely a phenomenon of the last century (facts courtesy of Wikipedia).
\n\nLet’s digress here with some etiquette: Encouraging people to drink large quantities never ends well. Neither does drinking\nlarge numbers of shots (of liquor) in short quantities of time. In my mind, the purpose of the power hour rests in communal\nenjoyment of good or interesting music, and “pre-gaming” for the ensuing evening in the process. Here’s a way to keep it\nfun — don’t use shot glasses. Sippy-sip from a can or bottle, and it’s no longer any sort of competition. You drink what\nyou want, and if you can’t take it any longer, just enjoy the scenery! C’mon people, safety first! Oh, and NEVER use liquor\n — even mixed drinks are almost always stronger than a comparable volume of beer, so anything besides beer could get you\n into real trouble. Besides, the segmentation of the small volumes of carbonated beverage actually has a throttling ability\n for the novice power-hourer.
\n\nTip: Focus on burping throughout the hour — singing along is always fun, but you gotta get the CO2 out!
\n\nOkay, so I’ve been complimented a number of times on my video power hour mix — let me give you the low-down on the schools\nof thought, and how their combination can create a memorable experience.
\n\nThe W. Silver school of video power hour wisdom — Mr. Silver was a regional pioneer of video power hour majesty. He began\nwith a 1980s-themed hour, then 90s, then a mix. Unfortunately, rampant theft and wear-and-tear has lost these non-DVD gems\nto history.
\n\nSilver’s principles:
\n\nTransitions cannot be overstated: If you have the ability to do outlandish transitions, by all means… The cheesier the better.\nStar wipe? Better use two!
\n\nMy earliest attempts used many of Mr. Silver’s videos, and focused almost entirely on his techniques. Despite the primitive\nnature, I still produced enjoyable hours.
\n\nThe A.J.I. school: After viewing one of my early attempts, AJI was quite smitten with the concept, and began immediate work\ncrafting his own personal style. His influence led to a renaissance of crafting artful means outside of the video itself\nand the snappy transitions. He added a textual counter (up and down), as well as humorous text interspersed throughout the\nfilm. His videos reached 80% recognizable by even the most inept audience.
\n\nBy mixing the videos I had collected from both auteurs, and finding my own, I was ready to create the infamous Fall 2005\nhour. Since then, I created a limited-release “Heure de Puissance,” that was created in one day, premiered the same night,\nand was never seen again. That was a learning experience.
\n\nSo, here’s what you need to know:
\n\nFor instance — from the B-52’s Love Shack “Sign says stay away fools”, cut it off at Sign, and begin the Ace of Base video.\nPeople will not catch this unless you point it out, but if they know these cues are hidden from the get-go, they will look\nfor them. Match beats if you can, switch between the obvious and subtle. Fill in the blanks with prolonged transitions.
\n\nThe first attempt at making an hour might be tough, as it isn’t always easy to find a good collection of videos to grab\nfrom. However, after that it’s tough to narrow DOWN your selection. I don’t like decade-or-artist focused hours, as a\nmish-mash gives something for everyone. Don’t mix it up too much, though — it may be tempting to include a bunch of memes\nand youtube videos (which can be difficult to format for the television sometimes) — but don’t water down the sing-along-ability\nof the experience. I’d recommend songs like Numa Numa, but videos that are merely “inside jokes” might sink quickly.
\n\nRandomness in mixing is a subtle grace. Going from Country to Rap to Ballad is way awesomer than two rap songs in a row.\nAlso, believe it or not, but going from one version of the same song to another really is just kind of annoying. “You can’t\npick 60 different songs? I just heard that!” To err on the side of caution — always show the obscure version. Find the original\nOzone video instead of showing the numa numa guy. (Hint: The George Michael version of “Faith” is now the obscure version.\nThanks a lot Limp Bizkit)
\n\nOn the other hand, think chemically about it. The start of the hour should rock out pretty hard. The video can’t be boring,\nand the song should be at least mildly sing-along-able. Videos 2-20 should be the classiest and most well-thought-out. They\ncan also be marginally under 60 seconds. Videos 20-35 should be a little more than a minute to balance it out. This is the\n“sickness window.” People start feeling pretty good after the halfway point, so going back to exact minutes is no problem.\nThe sing-alongest of the songs should be from 35-60 (duh!).
\n\nMake ‘em laugh — crude captions always kill.
\n\nProduction Values — don’t rush it! Youtube has made it insanely easy to grab videos, but pulling them and reformatting them\ncan leave you with poor quality. Likewise, multiple formats can make editing difficult unless you have a powerful computer\nwith equally powerful software.
\n\nThings that work: Nostalgia, sex, cheesiness, surprises, and any combination of these
\n\nMap it out — got paper? Write the order, take requests, and take notes while watching videos for good transitory properties.
\n\nA note to taking it further — split edits are fine, but purists will avoid them. Sometimes you can find a movie clip that\njust goes so darn well with a song, but don’t frickin’ over-do it!
\n\nNEVER, EVER pause between all the videos! Let’s review — pausing between videos = awful. Don’t do it. This is not an arguable\npoint. Use this rule if you’re confused: If you’re making a power hour, you should have between 2-4 reprieves in the rocking\n — the beginning, end, and possibly the 30-minute mark, and/or possibly before or after a lightning round. Any more than\n four breaks in the action, and something is wrong.
\n\nIt is permissable to play the entirety of the 60th song, especially under these two circumstances — a. You display credits\nover the video, and b. the 60th song is White Snake’s “Here I go Again.”
\n\nMost of these are approximations, so do what you think is right. If it doesn’t turn out quite the way you planned, return\nto these ABSOLUTE LAWS of POWER HOUR MAKING to find where you messed up. If it’s too late to do anything about it (“I only\nhave a 4x burner!”), then heck — it’s all about having fun anyways, and 1/16th the fun is in making the darn thing in the\nfirst place!
\n\nHope you found this informative for future attempts. Likewise, please let me know if you have any other golden rules to\nadd to future editions. Always obey copyright laws when creating derivative works — thanks! I will give a runthrough (and\nmaybe an ISO) of the F’05 video in the future, so you can get a better idea of what the heck I’m talkin’ bout.
\n", "id": "/blog/the-history-and-art-of-the-video-power-hour", "url": "/blog/the-history-and-art-of-the-video-power-hour/", "path": "_posts/2007-11-23-the-history-and-art-of-the-video-power-hour.md", "relative_path": "_posts/2007-11-23-the-history-and-art-of-the-video-power-hour.md", "excerpt": "Let’s start where any good history begins — in the pre-historic.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Notes on an obscure hobby."}, "tags": ["Music"], "title": "The History and Art of the Video Power Hour", "date": "2007-11-23 00:00:00 +0000", "slug": "the-history-and-art-of-the-video-power-hour", "ext": ".md" }, { "content": "Click here for printer-friendly Google Doc
\n\nIf you (and possibly your friends and/or family) like to watch the show House, M.D. and guess the diagnosis, then you might\nenjoy the House home game. Check it out!
\n", "id": "/blog/play-the-house-home-game", "url": "/blog/play-the-house-home-game/", "path": "_posts/2007-11-01-play-the-house-home-game.md", "relative_path": "_posts/2007-11-01-play-the-house-home-game.md", "excerpt": "Click here for printer-friendly Google Doc
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"The best in 2007-Google-Doc-based entertainment."}, "tags": ["TV"], "title": "Play the 'House' Home game!", "date": "2007-11-01 00:00:00 +0000", "slug": "play-the-house-home-game", "ext": ".md" }, { "content": "At work today, I was sent an email regarding futurists, and views of how technology, politics, and global change may influence\nmajor decisions. Since I mostly disagree with the\noriginal\narticles, I figured this would be a good place\nto make my predictions, for the benefit of all.
\n\nLet’s start with the improbable, which the articles do not give note to: Flying cars and jetpacks. These are promises from\nour forefathers, that by now we should have such devices. This is more attributable to the limitations of their imagination,\nrather than the practicalities of such devices. NASA has a actually developed the computer navigation and tracking systems\nfor large numbers of personal airborne vehicles. The propulsion via jets or propellers is possible, but highly impractical\n(considering the inefficiency of fossil fuels from their use). Perhaps the biggest hurdle is the risk management of such\nendeavors. A small, light vehicle that fits in a driveway or garage would be unsafe; conversely, a rather safe vehicle would\nbe too large for the average property owner. Also, the features to make such a vehicle useful via current propulsion are\nalso bulky. New propulsion and safety technologies would be required to make such a pipe dream a useful reality.
\n\nWith regard to climate change — While many of the last few years have been uncharacteristically hot, no correlation\nhas come my way that directly shows human involvement in such change. Also,\n[some climate records](http://liberalslovetaxes.com/environment/nasas-climate-data-corrected-liberals-hypocrisy-not/) used\nby environmentalists have been proven to be incorrect. In fact,\nlivestock have been shown to contribute nearly 20% to the greenhouse gas emissions worldwide.\nThis, along with evidence of a “little ice age” throughout many of the preceding centuries, characterizes such climactic\nfluctuations as a possibly naturally-occurring phenomenon. The plants and animals of Earth have been spewing gases (including\nCarbon Dioxide!) into the atmosphere for hundreds of millions of years. Did you know, the most\nall-encompassing ice age on Earth occurred as the result of\ncyanobacteria photosynthesizing\ncarbon dioxide (of which the earth’s atmosphere was primarily composed) into the oxygen we all appreciate today? This is\nwhere I digress — this does not mean that humans can be irresponsible about their waste, and their effect on the planet.\nReducing, reusing, renewing, and recycling are positive things, but the direct incentive has not proven great enough for\npeople to follow it. This is because playing with garbage is gross.
An economic incentive program wherein waste disposal, as a cost to a taxpayer, can be relieved when measurable per-household\nefforts are made to recycle, may cause a change (this is an extrapolation of programs already in use throughout industry).\nOur fiat money system is traded in exchange for goods and services, including government services through taxation — hence,\nsuch tradeoffs in the field of waste management would be legal.
\n\nSpeaking of our fiat money system(!)… we will NOT revert back to the “gold standard,” no matter how crummy the American\ndollar becomes. Basing currency on Gold makes no sense — and even basing money on the triggers or measures of inflation\ndoes not solve anything. Let’s stop talking about this.
\n\nThe number of consumer electronics that would be fun to have in my pocket(s) is disproportionate to the volume of my pockets\n(Since ‘nam!). The iPhone, as a combination\nof numerous devices (even if Apple’s measure of such things is silly), shows that such pocketry is a logical concept for\nthe near future. It is therefore a gross mis-estimation to believe that people will carry dedicated ebook readers or digital-ink\nnewspapers. It is increasingly more likely that consumers will carry a single device that stores their media, interprets\nit, and communicates with larger external networks of data. The form factor is shrinking for laptops (at least thinner,\nif not with smaller screens), and the ideal form factor given the iPhone’s browser as a consideration for easy zooming may\nshrink down to a very pocketable size.
\n\nIn the near future, expect very holistic devices: Key features that show progress:
\nOf course, a person can only be digital on a tiny device for so long. Home systems are also evolving. 42-to-60-inch screens,\ncoupled with multiple media boxes, seem to be the status quo for current consumers. This WILL change. Screen size and\nshape appears to be a stagnant part of this equation (though do not discount those display-makers. Your living room window\nmay be your television in the not-to- distant future. Heck, why not ‘nano’-paint a display on your wall?) The box(es) connected\nto the monitor, though, will be shaped by the same open, combined approach as that of mobile devices. Proprietary gaming\nconsoles hurt consumers and game makers, as well as being sold below costs by box manufacturers. This model is silly,\nespecially as more and more games are internet-based, and the sale of discs and cartridges are to be curtailed. Micropayments\nand per-play services are possible outcomes of opening systems — but I would not be surprised to find more, smaller game\ncompanies, especially homebrew game-makers like in the 1980s. A single system by which video games are created and distributed\nwould make it more feasible for people to learn a single system. Nevertheless, the\nMedia Center PC/DVR/HD-DVD/Blu- Ray/Webcam/Game console/Everything is going to be a reality. It will be more and more\ncommonplace to use a “television” as a desktop pc, and more congruent to use and create for such a system.
\n\nThe OS is a futile thing to spend billions of dollars developing. The basic function of the operating system hasn’t REALLY\nchanged since the mid-1990s. People buy the latest-and-greatest system because of illusions of compatibility and advanced\noperation. However, what does a user need, and what things does XP or Tiger or Feisty Fawn lack that Vista or Leopard or\nGutsy Gibbon are likely to remedy? If you don’t spend most of your time in a browser, you’re probably in the minority. Web\napps are the logically-better mousetrap that will make most desktop applications obsolete. The transitional pieces such as\nSilverlight, Prism, and AIR will only take us to a browser that operates differently.
\n\nExpect browsers to be more cross-compatible and standards-based, with cookies and other locally-stored values transportable\nfrom terminal to terminal. This includes mobile browsers. Expect the very systems of navigation and “language of the web”\nto change to accommodate our turing-test-passing partners.
\n\nWill the book survive these changes? Sure, but the romance one may have of writing a book on a typewriter now is foreign\neven to generations born since the 1970s, so the idea that the book is an ideal format for a trip to a park or other excursion\nis wishful thinking. After all, people think that\nthe web is killing our culture,\ndespite our culture showing strong support for such changes. Let’s face the economics of change — people want more and more\nfrom less and less, and they want it THEIR WAY.
\n\nAs a librarian, I’m tempted to think that services will be more tailored to mobile devices, whether it be reference or\ncirculation. But as books become less and less important to people in the future, even those roles could be in jeopardy.
\n\nIf you’ve made it this far, then you probably think I’m crazy and rambling (guilty on both counts!), but I will continue\nto elucidate these views further into the future, and to include scathing commentary regarding politics and religion in the future.
\n", "id": "/blog/the-future", "url": "/blog/the-future/", "path": "_posts/2007-10-29-the-future.md", "relative_path": "_posts/2007-10-29-the-future.md", "excerpt": "At work today, I was sent an email regarding futurists, and views of how technology, politics, and global change may influence\nmajor decisions. Since I mostly disagree with the\noriginal\narticles, I figured this would be a good place\nto make my predictions, for the benefit of all.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Postdictions about the first iPhone."}, "tags": ["Predictions"], "title": "The Future", "date": "2007-10-29 00:00:00 +0000", "slug": "the-future", "ext": ".md" }, { "content": "Some costumes I expect to see either in person or on the interwebs:
\n\nAm I missing something?
\n", "id": "/blog/useless-halloween-predictions", "url": "/blog/useless-halloween-predictions/", "path": "_posts/2007-09-22-useless-halloween-predictions.md", "relative_path": "_posts/2007-09-22-useless-halloween-predictions.md", "excerpt": "Some costumes I expect to see either in person or on the interwebs:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Made one of these costume predictions a reality."}, "title": "Useless Halloween Predictions", "date": "2007-09-22 00:00:00 +0000", "slug": "useless-halloween-predictions", "ext": ".md", "tags": [] }, { "content": "I’m hesitant to call it “Librarian 2.0 beta” quite yet (I’m still working on the most-requested feature update), but today\nI launched a widget gallery and the new facebook invite system, so maybe things will pick up.
\n\nBe on the lookout, librarians — In the near future I will likely be launching “subject specialist” features that will allow\nmultiple librarians in one network, as well as volunteer selection based on subject specialty. I’m hoping this doesn’t lead\nto crude volunteer vandalism (ie. experts in “the ladies” and so forth (don’t take it, that’s mine! jk)), but otherwise am\noptimistic that librarians will be actually connecting to patrons in worthwhile ways (which I’m not sure has happened up\nto this point).
\n", "id": "/blog/librarian-updates", "url": "/blog/librarian-updates/", "path": "_posts/2007-09-08-librarian-updates.md", "relative_path": "_posts/2007-09-08-librarian-updates.md", "excerpt": "I’m hesitant to call it “Librarian 2.0 beta” quite yet (I’m still working on the most-requested feature update), but today\nI launched a widget gallery and the new facebook invite system, so maybe things will pick up.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Progress on the Facebook Librarian app."}, "tags": ["Facebook"], "title": "Librarian updates", "date": "2007-09-08 00:00:00 +0000", "slug": "librarian-updates", "ext": ".md" }, { "content": "I don’t know if you’ve heard, but\nthe new Speed Racer movie from the Wachowski brothers is going\nto be shot using special cameras from which perfectly in-focus images are derived.
\n\nI’m skeptical about this. Not that they can’t do it, but rather that it will be some significantly cool thing.
\n\nAfter all, our eyes have a natural focus that has some part in depth perception. Likewise, a normal camera does the same\nthing.
\n\nSo how does their camera put everything in focus? My guess: Each frame is a digital composite of multiple frames taken\nconcurrently or in very rapid succession, put together by a computer’s idea of focus, or relative distance. The end result:\nevery frame looks cartoonish. Is this good, even for a film based on a cartoon?
\n\nNo. It is novel, and people will say that the effect is cool, if nothing else. The combination of millions of other cool\nspecial effects based on the action of the movie and the whim of the Wachowskis will most likely stand out more in conveying\nanything thematic. Like the rotoscopy of A Scanner Darkly or similar films, the humans-to-cartoons distracts from the\nactual storytelling. One reason for this is the inability to judge distances or importance. If everything is as emphasized\nin the frame (size aside), then what are you supposed to be looking at?
\n\nTherefore, the filmmakers’ biggest task is to give emphasis to subjects via sizing, as well as other cues. Expect for more\n“background action” gags to stand out in carrying the plot. One minute, you’re watching close-ups of a person — the next,\nan explosion or other event in the background. This is prevalent in many films — however, it will be most effective and\ntherefore most used in Speed Racer.
\n\nThese are all predictions based on some vague comments Susan Sarandon made at an interview, so I could be way off-base.\nBut I don’t think I am. I’d almost prefer the rotoscopy…
\n", "id": "/blog/something-to-consider", "url": "/blog/something-to-consider/", "path": "_posts/2007-08-31-something-to-consider.md", "relative_path": "_posts/2007-08-31-something-to-consider.md", "excerpt": "I don’t know if you’ve heard, but\nthe new Speed Racer movie from the Wachowski brothers is going\nto be shot using special cameras from which perfectly in-focus images are derived.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Prejudging the visuals for Speed Racer."}, "tags": ["Movies"], "title": "Something to consider", "date": "2007-08-31 00:00:00 +0000", "slug": "something-to-consider", "ext": ".md" }, { "content": "Osama Bin Laden will be either killed or captured in September 2008. It will happen, and I’ve got $5 riding on it. Any other\ntakers?
\n", "id": "/blog/a-no-brainer", "url": "/blog/a-no-brainer/", "path": "_posts/2007-08-24-a-no-brainer.md", "relative_path": "_posts/2007-08-24-a-no-brainer.md", "excerpt": "Osama Bin Laden will be either killed or captured in September 2008. It will happen, and I’ve got $5 riding on it. Any other\ntakers?
\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Brad being wrong about OBL."}, "tags": ["Predictions"], "title": "A No-brainer", "date": "2007-08-24 00:00:00 +0000", "slug": "a-no-brainer", "ext": ".md" }, { "content": "The browser wars are no fun. Looking at a site like del.icio.us or the software features of Google’s search and web histories,\nit’s safe to say that features once relegated strictly to browsers are being taken up by web apps. In the same way that I\nwant to predict everything else, I would like to give an idea of the direction browsing is going.
\n\nAt home, I prefer Mozilla Firefox and browser tabs. But at work, we run IE6 (soon to be upgraded to 7), and have to settle\nwith learning different applications and interfaces. In the course of a given week, I may use ten different computer workstations\nbetween home, school, and work, each with its own Favorites(Bookmarks), Histories, Cookies, Autofills, and all the other\nstuff stored in a typical browser. Some of that stuff is mine, while the other users contribute to the same lists. Not really\nan efficient model, is it? If my assumption of the white-collar workplace is correct, then I am certainly not alone in the\nnumber of computers I use.
\n\nIf all my information could be stored securely on the web and accessed from anywhere, then I would save a lot of time and\neffort when it comes to logging in to sites, autofilling forms, and generally the simple tasks of browsing.
\n\nI see a future of the web where the browser is much less involved in the overall web experience. A web-based browser-within-a-browser\n(likely using html frames and an ajax backing) would store and manipulate all of the data commonly stored locally by the\nbrowser — www.palary.org is an example of such a browser, but without some of the features I’m\nlooking for.
\n\nSuch a web-based browser could store Cookies, Bookmarks (to and from del.icio.us, Google Bookmarks, or otherwise), History\n(once again, Google services could be integrated), Greasemonkey scripts, Bookmarklets (oh how I want a digg button everywhere\nI go), and a host of other things that you might be accustomed to only accessing locally from a single workstation.
\n\nThese browsers will pop up all over the web, and a new browser war will start, all while the actual browser programs are\nrelied on for less and less functionality. Microsoft and the collaborators of Mozilla will instead focus on standards-based\nrendering of documents, and providing services that are most useful from a single, local workstation (like local files, usw.)\nThe address bar and other interface elements would only be useful once per session (and the web-based browser could be styled\nto the user’s preference).
\n\nThe alternative to this vision is that all the browser companies and developers work to develop a standard for all the\nnon-local user-specific data that can be transferred between browsers and computers, preferably securely via the web. Since\nit would be easier to make a browser-within-a-browser, I’d say this latter solution is much less likely.
\n\nFor further reading, I suggest\nhttp://fortuito.us/2007/04/living_online_with_web_apps which\nindicates that you can run your life on the web, except for the pesky browser functions — Google Browser sync readily handles\nthis, but who has install and customization privileges on all the computers they use? Browser Sync, likewise, does not\nhandle all the browser functions that would be most useful to all users. Plus, I inherently want the option to not give\nGoogle all of my data.
\n", "id": "/blog/what-browsers-do-that-they-shouldnt", "url": "/blog/what-browsers-do-that-they-shouldnt/", "path": "_posts/2007-08-13-what-browsers-do-that-they-shouldnt.md", "relative_path": "_posts/2007-08-13-what-browsers-do-that-they-shouldnt.md", "excerpt": "The browser wars are no fun. Looking at a site like del.icio.us or the software features of Google’s search and web histories,\nit’s safe to say that features once relegated strictly to browsers are being taken up by web apps. In the same way that I\nwant to predict everything else, I would like to give an idea of the direction browsing is going.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"A slice of browser history."}, "tags": ["Predictions"], "title": "What Browsers do (that they shouldn't)", "date": "2007-08-13 00:00:00 +0000", "slug": "what-browsers-do-that-they-shouldnt", "ext": ".md" }, { "content": "Okay, so now that we know energy is, like, super-important — and let me emphasize if it’s not already apparent — I am NOT\ntalking about the kind of hippie energy that makes us, like, hold hands and love nature. I hate hippies. No, this is the\nenergy that allows us to exist, and can be measured and predicted via science. This is how it will come into play in the\nfuture:
\n\nAs stated previously, scientists (the kind that get money for making money) are working on making useful and marketable\nsolar energy solutions for all manner of electrical and other needs. This work will continue.
\n\nAt the same time, scientists (the kind that get money for doing bona fide research) are working on manipulating both matter\nand electromagnetic radiation in ways that you may find surprising. For instance, scientists claim to have slowed or even\nstopped light. They purport to have ‘transported’ the building blocks of matter over great distances and reassembled them\nin a new location. These are just two examples of the crazy sort of stuff that’s happening right now. And no, you shouldn’t\nbe worried about particle accelerators accidentally creating black holes — it could happen, but some smart people assert\nthat it wouldn’t delete us from existence. Besides, another smart guy says that a paradox exists wherein matter in blacks\nholes is detroyed, but its accompanying information remains. So you wouldn’t be all lost.
\n\nLook at me getting sidetracked again. Here’s how it’s going down. From a Star Trek perspective, the two useful technologies\nwould be the matter transporter and the matter replicator. I assume that if one were to become practical, the other would\nquickly follow. These have implications far beyond particle beam weapons, and easily pave the way to ‘holodecks.’
\n\nThe other assumption is that Star Trek put artifical constraints on these technologies for plot purposes. Why couldn’t a\nhuman be replicated? If Scotty can be stored in a “pattern buffer” for many years, why can’t we make an army of Scottys?\nAlso, in getting back to the thing about energy — if matter and energy become interchangeable with such precision, then\non Earth the scarcity would not be energy (we get that from a big yellow ball\n@see: Energy), but rather matter. The first person to harness one type of\nmatter, turn it into “building blocks,” then put it together into something else, like an alchemist, would have control\nover all the matter on the planet, and therefore be the “ruler of the world.” This probably won’t happen. Thank you social\ncontract!
\n\nOkay, so I didn’t necessarily predict anything, but rather gave incoherent ramblings about tv shows, but it will all come\ntogether in the end. Stick with me, and I’ll give you a practical vision of the future (and it’s almost utopian!).
\n", "id": "/blog/some-predictions", "url": "/blog/some-predictions/", "path": "_posts/2007-08-04-some-predictions.md", "relative_path": "_posts/2007-08-04-some-predictions.md", "excerpt": "Okay, so now that we know energy is, like, super-important — and let me emphasize if it’s not already apparent — I am NOT\ntalking about the kind of hippie energy that makes us, like, hold hands and love nature. I hate hippies. No, this is the\nenergy that allows us to exist, and can be measured and predicted via science. This is how it will come into play in the\nfuture:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Young Brad being stupid about energy"}, "tags": ["Predictions"], "title": "Some Predictions", "date": "2007-08-04 00:00:00 +0000", "slug": "some-predictions", "ext": ".md" }, { "content": "Usually, when somebody talks to me about energy in a context that gives it near-religious importance, I start to doubt that\nperson’s sanity. However, as you will see in my multi-post upcoming series regarding my predictions of the future of humankind,\nenergy is the most important point to ponder.
\n\nHere’s the preview: There’s a big yellow ball in the sky. It sends electromagnetic radiation (and some streams of matter\nas well) toward our smaller-yet-still-large blue ball. Our blue ball goes around the yellow ball in a slightly elliptical\norbit, held on its path by a pulling force called “gravity.”
\n\nI digress — the important thing here is the energy given off by the Sun. It comes to the Earth, and manifests itself in\npotential and kinetic energy of the matter on the planet.
\n\nMuch of the energy of the planet (and especially the energy that humans use) comes directly or indirectly from the Sun.\nThe neat thing about the stored energy found in carbon compounds (the fuels you’re familiar with) is that it can exist\ndeep below the surface, then be used on demand by humans. It’s just limited, and doesn’t renew nearly fast enough.
\n\nAs you can see by the current drive toward ethanol fuel, corn gets energy fairly directly from the Sun, and grows back\nreliably with human intervention — so it’s a reasonable alternative to fossil fuels.
\n\nThe next step, it then follows, would be to harvest energy from the Sun in even more direct and efficient ways.
\n\nSolar panels and other technologies are being developed to make this a reality — but there are problems:
\n…but there have been recent breakthroughs. The sun is also responsible for things like wind and the motion of bodies of\nwater — which can also be used by humans for our own purposes.
\n\nIt’s all about efficiency, and mills from many centuries ago that were powered by rivers and streams were, in a way, better\nat efficiency than some of the things we’ve come up with since. I guess convenience might be important too.
\n\nIn the twentieth century, we found a way to harvest energy that uses the very properties of matter to derive energy — nuclear\nfission and (in a currently impractical sense) fusion. A white-haired gentleman gave some sort of theoretical formula relating\nenergy and matter, but for the life of me I can’t think of it off-hand. This framework shows that matter itself could very\nwell be interchangeable with energy in some sort of meaningful way. Perhaps us humans should look into this a little more…
\n\nThat’s the premise — I’m leaving out a lot — but I’m stressing that energy is important, and there’s a source for it that\nwe thrive by.
\n\nDisclaimer: I’m writing in layman’s terms because I am a layman — if there are glaring errors, I’d like to know, but let’s\nnot pick nits.
\n", "id": "/blog/energy", "url": "/blog/energy/", "path": "_posts/2007-08-04-energy.md", "relative_path": "_posts/2007-08-04-energy.md", "excerpt": "Usually, when somebody talks to me about energy in a context that gives it near-religious importance, I start to doubt that\nperson’s sanity. However, as you will see in my multi-post upcoming series regarding my predictions of the future of humankind,\nenergy is the most important point to ponder.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"The most important point to ponder."}, "tags": ["Predictions"], "title": "Energy", "date": "2007-08-04 00:00:00 +0000", "slug": "energy", "ext": ".md" }, { "content": "I think Freeman Dyson was dead wrong. Why would we search for infrared-heavy emissions from so-called advanced societies\nin other systems if the theory behind the whole idea is bogus?
\n\nStructurally, Dyson Spheres just doesn’t make sense — it would take a high-density\nmaterial to construct something that would need to be constantly stabilized, using more matter than exists in our solar\nsystem, for purposes that don’t make sense. And the fact that it’s assumed to be 1 AU from the Sun is strange — Earth has\na tall atmosphere that blocks varying forms of radiation — so you’d probably want the energy-gathering elements closer and\nthe habitations farther — completely wrecking any sphere-ish shapes.
\n\nBesides… getting back to energy here for a minute. Just think of what you’d be doing in creating a Dyson Sphere — using\nenormous amounts of energy to move and shape matter — into a structure designed to collect energy so that people can use\nit. On a small scale, this works, but we’re talking about an effort larger than any civilization would want to undertake.
\n\nThe two assumptions that are required in order to start thinking about a Dyson Sphere:
\n\nIt would be foolhardy mostly from a return-on-investment perspective — I guess a civilization advanced enough to collect\nall the matter from a system and build a huge structure may have the ability to keep a star up and running reliably, but\nthe progression of technology doesn’t logically dictate such a thing.
\n\nDoesn’t it make more sense that humans with sufficient technology to build even the most rudimentary Dyson structure would\nprobably find solutions to travel between star systems (after all, many systems closest to Sol are also second-generation\nstars, meaning that there is likely cooled dense material near the stars, even if not in planetary form), master the use\nof atomic power (such as, for example, controlling nuclear fusion), and find an equilibrium of survivability on their home\nplanet based on resources?
\n\nI think we were taught in middle school about an island with bunnies, or how viruses and bacteria could easily take over\nthe world, if not for the scarcity of resources. You can argue that technological change is constantly changing what the\ndefinition of human overpopulation on planet Earth is, but I’d think that with the rate of technological progress that\ninterstellar travel would be feasible well before we reach that point. Besides, even if that’s not the case, humans and\nthe earth will have to reach an equilibrium eventually.
\n\nSo even if you take the simpler Dyson structures, which would relatively be more likely — what would the true differential\nbe between a system with or without those structures in terms of infrared radiation? If he was not arguing for an\nall-encompassing shell, then why search for infrared as a sign of life in the first place?
\n\nIt would be a big let-down if SETI found something — because we’d only be hearing or seeing a society many light-years away.\nIt may not be “We are not alone” when that day comes, but rather “We were not alone.”
\n", "id": "/blog/an-implication-for-geeks", "url": "/blog/an-implication-for-geeks/", "path": "_posts/2007-08-04-an-implication-for-geeks.md", "relative_path": "_posts/2007-08-04-an-implication-for-geeks.md", "excerpt": "I think Freeman Dyson was dead wrong. Why would we search for infrared-heavy emissions from so-called advanced societies\nin other systems if the theory behind the whole idea is bogus?
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"I think Freeman Dyson was dead wrong"}, "tags": ["Predictions"], "title": "An implication for geeks", "date": "2007-08-04 00:00:00 +0000", "slug": "an-implication-for-geeks", "ext": ".md" }, { "content": "I don’t want to be one of those sporadic bloggers that apologize whenever they go a while without posting. So I’m not apologizing.
\n\nI would like to start from the very lowest common denominator while working up to the release of my latest project.
\n\n“A Picture is worth a thousand words” — this means more to indexers than others (as any indexer is obligated by cliche to\ntell you).
\n\nThose words, to describe the picture, fall into the basics of the language. The majority of words may be nouns, to describe\nthe things, places, and people featured in the still. Likewise, verbs to describe the action of the objects in the picture,\nwhether it be the immediate action depicted, or the general event that was taking place over a wider timeframe. A still\nlife has more action involved than at first glance. Even the camera-based data has an ability to describe the picture\n(btw, I would love to parse some of the Flickr metadata about camera settings — this idea came from reading Everything is\nMiscellaneous by David Weinberger. More about that in another post)
\n\nMetadata must be varied enough to describe Persons, places, things (of animal, vegetable, and mineral bases), events, locations,\nand whatever else requires description, emanating from whatever object it is that you are describing.
\n\nIn looking around at schema, rdf seems to give the ability to encapsulate multiple vocabularies to describe any of these\nthings. It seems versatile, more-so than sticking to a single format and relying on cross-compatibility. I like the idea\nthat I can upload a picture, describe it with Dublin Core within the framework, then focus on the person in focus on the\nprint, and describe him using FOAF, including biographical information, clubs and associations of belonging, close friends,\nand a host of other information. Then, heck, to round it out I will give precise latitude and longitude for the picture\nin question — the URIs for the person should also hint at geographic data.
\n\nAlong those lines, I will be presenting a demo of Semantic MediaWiki being used as a Digital Archive for school, then putting\nthe demo into practice in the future for an actual project at work. This has ignited my thinking bone — and I hope to launch\nan ambitious new project for all to enjoy.
\n\nI want to create a FOAF-based social network, with a focus on creating networks mostly for dead people. If this seems like\na waste of time, then isn’t all historical research? FOAF can be used to describe the relationships between people who are\nboth alive and dead, what they do/did, what they liked, and how they’re described. The important features for this network\nwould be the ability for users to edit the entries in a scholarly and democratic way (think Wikipedia), as well as Authoritative\nFOAF files for those people — so future projects can draw the data from a centralized location, and add their own data to\nthe master project. Wikipedia has a lot of biographical information, but formatting it in a way that is useful for searching,\nbrowsing, and sorting entirely by a computer is another story.
\n\nAs I deploy the Digital Archive project, the usefulness of Authority-based FOAF file project, I believe, will become more\napparent.
\n", "id": "/blog/a-hint-at-the-future", "url": "/blog/a-hint-at-the-future/", "path": "_posts/2007-07-24-a-hint-at-the-future.md", "relative_path": "_posts/2007-07-24-a-hint-at-the-future.md", "excerpt": "I don’t want to be one of those sporadic bloggers that apologize whenever they go a while without posting. So I’m not apologizing.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"I don't want to be one of those sporadic bloggers that apologize whenever they go a while without posting"}, "tags": ["Meta"], "title": "A Hint at the Future", "date": "2007-07-24 00:00:00 +0000", "slug": "a-hint-at-the-future", "ext": ".md" }, { "content": "Herstory — The words “history” and “his” are not related in any way, yet herstory\nis still a common term.
\n\nThe Tenure system: Since hearing Dr. Steven Levitt (author of Freakonomics) speak at WSU earlier this year, I have been\nquite interested in the tenure system. Don’t be surprised to see something about it in his forthcoming book.
\n", "id": "/blog/things-that-interest-me", "url": "/blog/things-that-interest-me/", "path": "_posts/2007-07-12-things-that-interest-me.md", "relative_path": "_posts/2007-07-12-things-that-interest-me.md", "excerpt": "Herstory — The words “history” and “his” are not related in any way, yet herstory\nis still a common term.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Two seemingly-small concepts that caught my eye."}, "tags": ["General"], "title": "Things that interest me", "date": "2007-07-12 00:00:00 +0000", "slug": "things-that-interest-me", "ext": ".md" }, { "content": "Okay, so it’s been about four days since the application launched (btw, I swear there will be non-application blog posts\nsomeday!), and things are going overwhelmingly well. I’ve gotten a lot of feedback, mostly positive. My upgrade schedule\nis pretty-well set, but I’m looking to see if people would do things in a different order:
\n\nNote: I get off work today at 9:00PM, and will be burning some hardcore midnight oil to get these launched as quickly as\npossible. Please be patient as things come into operation over the weekend. Thanks!
\n\nYou can see what I’m up to by adding the alpha app.
Also, look out for the open Application Data, and eventually the open source.
\n\n(Lastly, on a personal note — My packrat mentality makes it insanely difficult to weed “my” collection. Just wanted to get\nthat off my chest.)
\n", "id": "/blog/the-best-thing-since-a-better-mousetrap", "url": "/blog/the-best-thing-since-a-better-mousetrap/", "path": "_posts/2007-07-05-the-best-thing-since-a-better-mousetrap.md", "relative_path": "_posts/2007-07-05-the-best-thing-since-a-better-mousetrap.md", "excerpt": "Okay, so it’s been about four days since the application launched (btw, I swear there will be non-application blog posts\nsomeday!), and things are going overwhelmingly well. I’ve gotten a lot of feedback, mostly positive. My upgrade schedule\nis pretty-well set, but I’m looking to see if people would do things in a different order:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Four days into the app, and the plans are coming together."}, "tags": ["Facebook","Web Design"], "title": "The Best Thing since a Better Mousetrap", "date": "2007-07-05 00:00:00 +0000", "slug": "the-best-thing-since-a-better-mousetrap", "ext": ".md" }, { "content": "Okay, so it’s been a little more than 24 hours since I launched Facebook Librarian into the application directory. As of\nnow, there’s 160 users, with 33 librarians. Only two have used the widget feature, one of those being me. So, my first and\nbiggest goal is improving that stat. The registration form will be clearer about the widget and more encouraging, and any\npage that doesn’t have a widget will display the sample widget that directs you to my homepage. This will hopefully make\nthe usefulness of the widgets more apparent.
\n\nOther things I plan to do in the next 24 hours:
\n\nOne final note: Thank you to everyone who’s been so supportive today! Especially Gerry\nand Ken, who have done an incredible amount of PR in the preceding 24 hours. It feels really\ngood that the community is taking so much ownership and giving feedback.
\n\nThe objective over the next few days is to turn the proof-of-concept into something that facebook-based research students\nwill want to use, considering there’s almost a librarian for every four non- librarians at this point.
\n\nHey, and let me know if you start getting reference questions. That would be really cool.
\n\nThanks again everybody – this experiment has been a real blast up to this point.
\n", "id": "/blog/una-dia", "url": "/blog/una-dia/", "path": "_posts/2007-07-04-una-dia.md", "relative_path": "_posts/2007-07-04-una-dia.md", "excerpt": "Okay, so it’s been a little more than 24 hours since I launched Facebook Librarian into the application directory. As of\nnow, there’s 160 users, with 33 librarians. Only two have used the widget feature, one of those being me. So, my first and\nbiggest goal is improving that stat. The registration form will be clearer about the widget and more encouraging, and any\npage that doesn’t have a widget will display the sample widget that directs you to my homepage. This will hopefully make\nthe usefulness of the widgets more apparent.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Reflections on the first day of the librarian facebook app."}, "tags": ["Facebook"], "title": "Una Dia", "date": "2007-07-04 00:00:00 +0000", "slug": "una-dia", "ext": ".md" }, { "content": "Okay, so instead of working forever to add features and tweak the thing for all of eternity, I’ve decided to release the\napp, see how things mess up, then fix them on the fly. Sounds like a great idea, right? Well… I’ve been sitting on this\nidea for so long that it has to be a diamond. Okay, so try it out and let me know what you think. And keep coming back to\nhawidu.com, more cool stuff is on the way.
\n", "id": "/blog/facebook-librarian-beta-release", "url": "/blog/facebook-librarian-beta-release/", "path": "_posts/2007-07-02-facebook-librarian-beta-release.md", "relative_path": "_posts/2007-07-02-facebook-librarian-beta-release.md", "excerpt": "Okay, so instead of working forever to add features and tweak the thing for all of eternity, I’ve decided to release the\napp, see how things mess up, then fix them on the fly. Sounds like a great idea, right? Well… I’ve been sitting on this\nidea for so long that it has to be a diamond. Okay, so try it out and let me know what you think. And keep coming back to\nhawidu.com, more cool stuff is on the way.
\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"This app no longer exists, btw. It was a cool old thing that did not steal your personal info."}, "tags": ["Facebook"], "title": "Facebook Librarian Beta Release", "date": "2007-07-02 00:00:00 +0000", "slug": "facebook-librarian-beta-release", "ext": ".md" }, { "content": "Let me start with the bottom line: You should make a widget for your site. It should:
\n\nWhat!? XHTML? The common view of widgets and gadgets are the XML + AJAX + web 2.0 whatevers that you find all over the place.\nI know Google supports URL-specific gadgets — not to mention that the code you copy and paste into the XML is HTML for the\nformatting anyway.
\n\nIt should be XHTML because the gadget can then easily double as a site for mobile users — a growing segment of the online\npopulation. Pish-posh to iPhone Safari and Opera 4 Mobile — The screens are still small — so the content should be as well.
\n\nOutside users can embed it in an iframe, and the basic structure can be ported into almost any site that uses gadgets natively.\nThis opens up the possibilities to a much wider range of web publishers — including novice users.
\n\nThe thing that appeals to me the most about widgets is that they consolidate content even more than websites have in the\npast. A well-made widget puts the best dynamic content from a given site in a format that can be splattered all over the\ninternet like leaflets.
\n\nOh, and geniuses — why hasn’t anyone put AdSense in the minimessages library of GooGads yet?
\n", "id": "/blog/widgetgadget-rant-2", "url": "/blog/widgetgadget-rant-2/", "path": "_posts/2007-06-21-widgetgadget-rant-2.md", "relative_path": "_posts/2007-06-21-widgetgadget-rant-2.md", "excerpt": "Let me start with the bottom line: You should make a widget for your site. It should:
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Let me start with the bottom line: You should make a widget for your site."}, "tags": ["Web Design"], "title": "Widget/Gadget rant #2", "date": "2007-06-21 00:00:00 +0000", "slug": "widgetgadget-rant-2", "ext": ".md" }, { "content": "Widgets and Gadgets are a pervasive phenomenon. As such, it’s strange that they’re so under-developed. That’s my complaint.
\n\nThe solution: widgetize based on use. This is how I lay out my iGoogle, and it makes sense:
\n\nThe gist of what I’m trying to say: widgets and gadgets should be developed with daily or even up-to-the-minute use in mind.\nA Google Calendar should be that day’s agenda.
\n", "id": "/blog/widgetgadget-rant-1", "url": "/blog/widgetgadget-rant-1/", "path": "_posts/2007-06-21-widgetgadget-rant-1.md", "relative_path": "_posts/2007-06-21-widgetgadget-rant-1.md", "excerpt": "Widgets and Gadgets are a pervasive phenomenon. As such, it’s strange that they’re so under-developed. That’s my complaint.
\n\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Widgets and Gadgets are a pervasive phenomenon. As such, it's strange that they're so under-developed."}, "tags": ["Web Design"], "title": "Widget/Gadget rant #1", "date": "2007-06-21 00:00:00 +0000", "slug": "widgetgadget-rant-1", "ext": ".md" }, { "content": "Don’t really want a blog. Gonna make it very Brad-like soon.
\n", "id": "/blog/okay-so-i-almost-have-a-site", "url": "/blog/okay-so-i-almost-have-a-site/", "path": "_posts/2007-06-14-okay-so-i-almost-have-a-site.md", "relative_path": "_posts/2007-06-14-okay-so-i-almost-have-a-site.md", "excerpt": "Don’t really want a blog. Gonna make it very Brad-like soon.
\n", "collection": "posts", "draft": false, "categories": [], "classes": "", "layout": "post", "schema": {"type":"Article"}, "authors": ["brad-czerniak"], "meta": {"description":"Don't really want a blog. Gonna make it very Brad-like soon."}, "title": "Okay, so I almost have a site", "date": "2007-06-14 00:00:00 +0000", "slug": "okay-so-i-almost-have-a-site", "ext": ".md", "tags": [] }, { "content": "Lorem markdownum avita mulcebat virtute. Similemque membra Ismenis ne visa\nserpentis populis? Cum omnia, et nec aethere aetas cui patria pacisci. Muneris\nfertur resistit me pariter sanguine: poteram\nmodo secum, oderat marmoreamque quis; per.
\n\nif (packDay(num_cpa_surface, 73, worm_address_dbms) == noc_ivr) {\n wheel.nameWhoisUp -= whitelist_controller;\n}\nvar mirroredGigahertz = 5;\nif (5 - ipProxyMenu) {\n technology_ics_pda(compatible, troubleshooting_zero_party);\n itunes_swipe = zip;\n}\nmode.upMicrophone += direct_clean_shift(suffix_multi_multi, bitmap(\n nic_deprecated_waveform) + 3);\n
Fruticosa ipsa; qui quae praelate, aderat, Tyria pedibus, et clavam faciem nec\nadpositi ignibus. Iste que mentis sanguine generis: amittere montibus quidem\nadlabimur ardua respicit. Cessent funda est arbore revocare et increpor confinia\nligamina et siqua extenuat, puppis. Sine deus domos formosa et obicit Proximus\nOpem digna de, sed. Poscit vultus nares, quo oculis altaria servatae, nostro,\niram longis et iaculo tulerunt?
\n\nDi Neptunus plausis quoque, separat insolida propago hoc linguae dixit\nsolvit. Qui quas animo quod filius carpat vindicet illos, matre vehebat sis.\nCuncti opprimere ferebam?
\n\nEst paelice diversorum iaculum segetis virque has erat, nunc. Et Macareus\nilla, aut cornua quantam manu animasse ignibus reppulit nascentia freti multa.\nCum hunc, turpes!
\n\nServantis id Procne erat levi fatetur, apium potes loco canes positus\nvituli, non sedit et audierit, Phoebus. Iam Iapygis, rutilum Mygdoniusque\nveniente, aras ab linguae volucrumque nobis proicit algae.
\n\nOrtus citraque horum dis ululasse labor si, membris nec potius pectora sub nemo\nmovit consensu. Per ante, gerit, prospiciunt fortunata per vallibus Osiris\ncommune crines, prius actis tellure sed quam\nneque.
\n\nLorem markdownum auras. In quaque hoc loqui, si tamen dea additus; perque.
\n\nAulidaque nomina fixa oracla Hector et quid quod exhalantem, artus flores\nmagnorum relevasse postquam. Ceperat auribus, tramite iure subita esse\nnostris, secum et parentem ignis attraxerat pedibusque incola vix.
\n\nAltera tenebrosa tu flores virginibus frangitur crevit iactatibus\nhoc silentia! Quod massa fontis faticano, da cum huc sensi tum?
\n\nLucifero dici biiugum est novissimus caret virtus qui quoque ecce? Quam quid\nnemorum undis mira medio ministerio deorum quoque, pestiferaque nulla me\npectora consule vibrata, ab. Illa in vernos, commendat mediocris mors attollite\nadhuc natusque capillis labens.
\n\nNamque tellus silentia dabat loquerentur, aras deus feremus corpora. Vir salutat\nIamque. Certa rustica vigilans nisi vestem taurum. Echo in\nnoctis vellera te Pelides aestu; sed ora equorum arbore formamque aethera e\ntamen Acrisio. Vultus seductas saepe in serta vocat ostentare iaculabile\ncustodemque aquis, aura ope.
\n\nPer ter, ante tua. Quoque venientem quae. Flet exstabant Inachus\ntruncum praeferrer magnosque pudici vacca rogat; Oileos sine\nsecantes et.
\n\nHabebat nil vosne quod, ait in Pergama arces fessos quidem, erat temerarius\nappellantque nescio clarus. Aliis nocituraque illa et virgo hoc est virgamque\naureus iam iam tanta subsedit proxima nostro gerentes exanimis Haemonio eundo?\nEt me ineo longius. Nereidum ut murmure infans dolorque disces tamen mariti.
\n", "id": "/blog/example-post", "url": "/blog/example-post/", "path": "_posts/1970-01-01-example-post.md", "relative_path": "_posts/1970-01-01-example-post.md", "excerpt": "