Aside from the obvious adding of more photos… Wait: Adding more photos is the problem.
Vanessa remarked “Finally some organization for the photos…”, but I don’t see that at all. I see my folder of ~3500 photos, and I don’t think of organization. But, there are an astronomical number of different ways such a collection could be organized. I won’t consider them all, it’s a waste of time.
I’ve also been looking at a lot of photographer’s sites on the web for inspiration - both in the taking of photographs and in the presentation. A lot of these sites are flash-heavy, which is always a bit discouraging to me. If you’ve got the resources, then hey - knock yourself out - but, that kind of excitement is probably just going to overheat my computer.
This is one of my favorites so far: Zeynep Ă–ztayinci - I’m a fan of the print textures there in particular, whereas I might expect to find them annoying in other images.
I wouldn’t look for such a total solution, since I’m not only a photographer - but it might not be so bad under a different domain name to call more attention the photos specifically.
XML
Although I abandoned an attempt at using XML the first time around, I can see it out there on the horizon, beckoning me. And, this is why: Hierarchy, plain and simple. There are going to be themed sets. As I add more photos, I am going to benefit from having a sensible framework.
The XML option serves two masters well: The Interface and the Database. What you see today on the gallery page was simply an expedient. I simply haven’t prepared very many photos yet for that format. I need a system to annotate the photos, perhaps with category tags - that suggests a database. I’m tired of naming the image files, but I don’t want to leave them with the original filenames the camera assigns - that also suggests a database.
I knew why I wanted to index the pictures in an XML file - because I can write scripts to dump the database to an XML file, and with a small collection I can write the file by hand as I pin down the finer points of the design. Unfortunately, the Javascript code to read the little file I wrote wasn’t working - and I couldn’t see why not.
So the current direction is to rewrite what I have and pin down that XML format. Books on my shelf like “Document Design” or “Service Oriented Architecture” might help. We’ll see…
Posted in web-craft, photography, databases | no comments | no trackbacksPosted by Evan Bittner
Sun, 26 Oct 2008 23:19:00 GMT
Before I go to Dupont to fiddle with the label printer again (stage whisper: It turned out that I used the wrong cable, so I’m going to string some Cat-5 today. However, there were other interesting problems that also prevented it from working…), and get home too late to start laundry again, I thought I’d prepare for the imminent disaster of dropping the partner site at the end of the month…
I have to write my own event schedule system, and here it is so far.
All my complaints about the current system can now be addressed in the new one. On the other hand, I have to work fast if I want it to work at all. So far so good.
I keyed in some of the data to the mySQL database at the web host, then I had to pull teeth to get my PHP script to connect properly. Part of the problem was my choice to set it up as a separate database. I used a new schema name, login and password. Then I forgot that I was copying code with an old IP address. That had me stumped for a few days. I considered every problem, but I didn’t get every solution in the proper combination until today.
One really embarrassing thing about the current setup is the hand-typed dates. For some reason, they would not convert the date fields into human-readable form. I know how to do that in mySQL, so I no longer have to deal with things like “Wednesday, September 11, 2008”. Inevitably, someone asks if we mean Wed 10 or Thu 11. But of course, the data entry person sees the day of the month they just specified in a drop-down menu, and is then personally responsible for figuring out the day of the week. Just have the computer do it!
Since I should know how to do it both ways, I wrote the front end in PHP - it makes for a simpler URL anyway. My wish list includes a bunch of stuff I think I’m going to implement in JavaScript - I thought about abbreviated listings that expand with a plus-sign button. The back end I plan to do all in Perl. Since it needs to be in a password-protected directory, and I already have that set up for some data export chores I had been doing, I have a perfect place to put it. The back end needs to be somewhat user-friendly for the data entry people. And, I need to be able to manage artwork and locations. I decided to use a table of locations where I could store related information that I can use for image tags, directions to the place, and hyperlinks. If you notice, the schedule - old and new versions - include a “Metro accessible” image for the closest Metro station. Since that doesn’t change much, I don’t want to make someone responsible for reproducing it themselves every time we key in a new event.
That means I get to write some awesome INNER JOINs in SQL.
Oh, and I guess I skipped over my story about how the database allowed me to name tables with reserved words that broke the syntax of the SQL statements. Why would it allow me to do that? Without a warning or anything. Who knew “EVENT” was a reserved word in mySQL 5.0? So then I had to use some ‘variable decoration’ for my table and field names.
Posted in databases, web-craft, olssons | no comments | no trackbacksPosted by Evan Bittner
Wed, 20 Aug 2008 19:19:00 GMT
There must be an election coming up soon. Or maybe every summer is like this: Whenever I pass through commuter nodes, there are fresh-faced, enthusiastic youths with identical t-shirts and clipboards. And they say things like “Do you have a minute for Barrack Obama and the Democratic Party?”
I’ve got an answer - but I don’t ever say it out loud, I just smile and keep walking , perhaps convincing them that I’m a foreigner who doesn’t want to struggle with English - “Yeah. I’ve got a minute for him in November.”
Okay, so obviously, I’m left-leaning. And if I want to risk having the guy I vote for win, Obama is probably my guy. As a registered voter in the District of Columbia, there probably isn’t anything I can do to prevent a Democrat from winning. I would have to go campaign in Virginia, Ohio, or Florida… Wherever some electoral votes can be swung. But you might have figured out by now that I’m not going to do that.
I’m going to steer clear of conspiracy theory in the following analysis. But, now that I mention it, what I want to say is probably the rational core of what could be spun out into a conspiracy theory.
I hate a world where showing a little interest gets you put on a list. Machinery kicks in, and suddenly you start getting junk mail and more phone calls. I want to be able to flirt with ideas and not have it come back to haunt me. I’m very adventurous in my mind. Less so in life. In my mind, I am less often sucked in; less often shackled to an idea. In life, that is a palpable fear. I actually like to discuss things without coming to any conclusion. People hate that when they have an agenda; when all they care about is brainwashing you. It is so pervasive that I have come to expect it from the very ideas I identify with. Just because I identify doesn’t make me an ideologue. I’m not about to go to war for a platform of ideas just because I agree with a few.
People are desperate to tag you with metadata. We used to say “pigeonhole you”. Getting pigeonholed, or tagged with inappropriate labels is promptly entered into a database somewhere, and you’ll never hear the end of it. It’s “going on you permanent record”. That is a real turn-off for me.
Is it the databases that are to blame? More likely, it’s the particular way we have come to rely on them. Blind faith in the power of machines.
I almost want to engage one of the DNC kids. But oddly, it wouldn’t shut them up. They would still try to accost me every time, a practically unlimited supply of interchangeable exuberance to find me outside the subway stop downtown. I’m not serious. I will feel guilty for wasting their time. And, that’s when I’m going to cave in and agree to something I won’t want to do later. Persuasion works on me. But, it ‘works’ only to produce utterances - and maybe actions - I will recant. I will distort myself that much to get around you.
Posted in databases, ontology | no comments | no trackbacksPosted by Evan Bittner
Sun, 17 Aug 2008 15:22:00 GMT
I found an amusing document on my desk when I arrived this morning. We place a lot of book orders with a certain wholesaler which shall remain nameless. We have about seven active accounts. I place orders for every account on a more-or-less daily basis through an electronic data interchange (EDI) system.
For those of you who haven’t encountered the concept, much of what I order ships right away, but some of it is ‘backordered’. In a world of suppliers in competition to supply your stock, there is no need for backorders. You simply move to the next supplier and place an order there. Backordering is like a codependent relationship: You can probably get what you want faster by going somewhere else.
In the book business, one publisher owns the rights to a book, and wholesalers are like a convenience store. I one order, I can get books from multiple publishers. It saves a lot of time. Especially for a small store.
Years ago, there were several people in my department, dealing with any number of inefficient processes: We would often search reference books for publishers we had never dealt with before, only to discover that they needed us to mail a check in advance. Often they wouldn’t sell a single copy of a book, and we had one customer willing to place a special order.
Now, the department is me. And if a supplier doesn’t have it, we have to turn the customer away. Or tell them to be patient… Because I have no idea if the supplier will really come through, or give up months later.
So let’s talk about the amusing document: It is a report for a single store listing all the books that are backordered. It doesn’t seem to be sorted by any criteria that I know. Not ISBN, not purchase order number, not order date (almost the same as order number)… Oh, look at this: It’s in alphabetical order by title. And to make matters worse, it looks like they ignore the cancellation date I submit on some items. One book on the report is from December ‘06, with a cancellation date of February ‘09. Apparently, that item was postponed. So if I order before the publication date, it stays on backorder until that date? Who can say.
Reports are useless to me. I’m not a consumer of data - I’m a processor of data. There’s a difference. Dead tree reports are almost always sorted the wrong way. Somebody here is going to be interested in a particular title, and someone is going to ask why some items from a particular order haven’t arrived. There is, in fact, a web site I can visit to see this same information, but it doesn’t have that resort-on-the-fly capability that I want either. I’m forced to go down the rabbit hole. It would seem that we do not share the same object schema: I can get a list of orders, and I can get a list of books on a particular order, but there doesn’t seem to be any way to get a summary of orders for an item. On the POS system, I do have that capability. As you might imagine, checking the two side by side can be a little tedious.
The thing is: I can’t bring myself to through this report away. It’s a page full of data, and it ought to be useful. I just know the moment I get rid of it, I will have to check it for something.
Posted in databases, computer-interface, olssons | no comments | no trackbacksPosted by Evan Bittner
Sun, 10 Aug 2008 23:30:00 GMT
I’m at Mayogra Coffee in Silver Spring this morning. I think work may be driving me insane: Or, I mean that office. For the same reasons I’ve talked about for years. Moving the office to Silver Spring was a bad idea. It went against my instincts. It also wasn’t my decision.
I can get a lot of work stuff done over the Internet these days, but it can only be for an hour or two - soon I’m going to have to go occupy the office. There is some weird sales reporting problem happening this week: We’re selling too much. Can you imagine? It’s the sheer number of units being sold at the Penn Quarter Clearance Sale. It can’t be analyzed by the book buyer in the usual amount of time. So they’re not finished. (The old guy and the new guy are sharing the task for a little while - there is usually just one guy.)
I just read something where “Abroad” was used not to mean some other country - or “Overseas”, but just away from home. I thought that was funny. I don’t know why.
I would love to be able to explain this sales reporting problem to you, but I don’t think anyone I work with understands it either. It calls to mind the Donald Norman books: In “The Design of Future Things”, and “The Design of Everyday Things”, he talks about the natural ways a design can assist the user. With computer software, the problem is even more important - software is under no obligation to act in any fashion. It can just execute a command in batch mode and go back to the command line prompt. What happened? Did the program even run at all?
Over the years, book buyers have developed some intuition about the computer side of their jobs. The music department is separate, with other buyers, and different versions of the same programs are in use there. Some of that is the different attributes, reflected in different database fields. But the software has been gradually altered to encourage and discourage different actions. Not even I can explain how it all works. The programmer tends to work in batch mode too: We ask hin to alter something, and he comes back to say “It’s done”. All of this is fabulous until something else goes wrong. At that point, it can be hard to even explain the problem. We don’t have much of a mental model to work with. The most condescending part for me is that the programs interrogate the user for lots of parameters, brandishing terms we don’t really understand without that mental model. So of course, people develop their own - largely correct - models, that tend to be erroneous at the edges. So when something goes wrong, it’s not particularly reliable.
One of the ways you can be wrong - and I apologize if this is hard to grasp: Request a report including certain dates(!) Or, some stores and not others(!)
Here comes my flawed mental model again: I know that the Point Of Sales system (POS, or the cash registers) inserts a record in the database for every line of every sale. This is the “Daily File”. The designers assumed that in the course of analyzing sales, you would naturally want to purchase more items to replace what sold, so that’s called the “Recommended Purchasing Report”. It reads the daily file (a database “table”) and creates a “report”. You get to suggest dates, but that’s actually meaningless: It can only read the lines of the daily file. As you might imagine, the daily file could get big - and it’s not necessarily a convenient format for further processing. So a “Sales Batch Update” is also run, which empties the daily file and inserts that data into the “weekly file”. Our week ends Sunday night. Monday morning I start running other reports that require a complete weekly file. So the first thing I want to do in Monday morning is run those Sales Batch Updates. This is usually done when the new RPR chain-executes the Sales Batch when it finishes. That makes sense in the normal course: Ideally, this means that every sale appears on one and only one report.
Today I want to run those Sales Batches, but the buyer isn’t ready to run an RPR and delete the previous report. It was huge and he isn’t finished with it. One store is swamping the rest - the important stores we actually need to reorder for.
Posted in databases, olssons | no comments | no trackbacksPosted by Evan Bittner
Mon, 23 Jun 2008 12:25:00 GMT
Today is the day I discovered a problem with the MySQL Upgrade I did at Network Solutions. But wow, was it subtle!
I knew all about changing the MySQL IP address in all the relevant Perl scripts. The big two build a file to export to our two partner sites, respectively. The first one worked just fine. The second one I only run on Sundays. That script ran without complaint… but produced a blank file. It was clearly using the right IP address. The database name and table name and field names are all the same. I called up queries from the MySQL browser, so all the data is exactly where I expect it… And yet it still doesn’t work from the script.
At this point, I’m sure the script is broken. But how can that be? I have to refine my test. I can’t do a “SELECT *” query: That just means “Give me what you’ve got.” I decide that I have to be superstitious if this problem is going to get solved. The script asks for certain fields from the table. Without actually solving the puzzle yet, I decide my next move is to take the exact text of the query that the script sends, and paste that into the browser.
SELECT AUTHOR, TITLE, CATEGORY, COVER, PRICE, CONDITION, DESCRIPT FROM $table (for you nit-pickers out there, I don’t need the semi-colon in this context…)
You see the blue text? The program paints syntax: reserved words in blue, string literals in pink, etc.
Since when is “CONDITION” a reserved word?
Since version 5, no doubt. Let’s go to the online manual (now that I’ve got shell access…)
mysql> help condition
Name: 'DECLARE CONDITION'
Description:
Syntax:
DECLARE condition_name CONDITION FOR condition_value
condition_value:
SQLSTATE [VALUE] sqlstate_value
| mysql_error_code
This statement specifies conditions that need specific handling. It
associates a name with a specified error condition. The name can
subsequently be used in a DECLARE HANDLER statement. See [HELP DECLARE
HANDLER].
A condition_value can be an SQLSTATE value or a MySQL error code.
URL: http://dev.mysql.com/doc/refman/5.0/en/declare-conditions.html
Well, if you’re going to be that way…
How come during this upgrade it couldn’t have done an audit on my table names and field names to ensure none of them were reserved words in the new version? Huh? Maybe e-mail me a warning? Imagine if the thing were really BIG?
Nevertheless. My Kung Fu saved the day once again.
Posted in databases, olssons, programming | no comments | no trackbacksPosted by Evan Bittner
Sun, 11 May 2008 20:40:00 GMT
A major feature of my Mondays at Olsson’s is the Bestseller Reports. Since the earliest days of the website, we had a page of bestsellers for books and music.
Outside of Christmas, our CD sales have been dismal lately. It seems like everybody I know has an iPod, so CD stores are going the way of the dinosaur. Sales reps and publicists are still hungry for the data, but the less we sell the more futile it is to spend time working on it. Specifically, rankings are nonsense. You can’t always find a sensible place to cut off the list. More data would help - so I recommend lots of customers come to the store and buy CDs, but that’s not likely.
A few weeks ago, I skipped the music report. Nobody complained. And I think that was the big week for R.E.M. - so it seems like a shame to skip, since I don’t hear about the new releases that we will actually sell a serious quantity of.
This week, I’m determined to change the format. It’s going to be a “What’s Hot” page. Not always the top ten items in each category. For that I need to attach the sales quantities so the PHP script can judge.
My five-year-old solution still essentially works: I run bestseller reports on the point-of-sales system, open up my Access database with the routines to parse the data into tables, a succession of forms to guide me (I originally thought somebody else would be doing this part, otherwise, I wouldn’t have bothered to make it user friendly - but it’s nice to have some automation to channel me away from easy mistakes…). The data is held in intermediate tables, which can be copied into the web server at the click of a button. There is also a report that I export to Word.
I go in to Access to trace the dependencies and carry sales quantities all the way from the initial report to the final pasting of records into the MySQL server. It all went quite smoothly: I didn’t make any mistakes. Until I get to a form with a sub-form that shows you the final preview of the database records to copy onto the server. I start getting a really weird mismatch.
The subform exists as an object in the Access forms list. It has the right data, and all the same properties that I used before, except it now includes a column of sales numbers. I update the link, save the outer form, and I get… One record. Instead of 78. Huh?
I already knew that I hated the Access form editor. It’s unforgiving with clicks - you wind up with some other object selected, the editing modes aren’t intuitive to me, the select handles for objects don’t do what I expect them to do…
So I click “show subform in separate window”. It pops up in the correct view, with 78 records. Awesome. I put that away, save the main form, click form view, and it shows me one record. This doesn’t make any sense to me. Clearly these two views are not the same, even though it looks like they purport to be the same. I figure I must be going insane. I go around in circles double-checking what I’ve done - looking for evidence of the contradiction - and I can’t find any. I delete the subform and start over with a new one - I’ll play along and let the wizard guide me. I click everything that always made sense before, pull the boundaries of the subform back into shape, save the main form, toggle back to form view, and…
No it still doesn’t work. Very frustrating. I have apparently exhausted my avenues of attack.
Philosophically, I know something is askew: I don’t like the idea of embedding one form inside another. I suspect there is some way to attach buttons to a datasheet, but I never learned how. I’m just using what I know, and I have proof that it worked well for years.
This is the point at which I question the interface. Because, you know, maybe I’m not getting the objects I think I’m selecting in the form editor. If that were true, then all the edits I’ve made are to some object I do not subsequently see in the form view. And yet, somehow I managed to damage what I could see when I added the quantity field to the data.
I should have figured this out by now: Maybe all that mess with the ADSL modem actually helped me. Maybe I’m not stubborn for as long in the face of this kind of problem now.
These ‘forms’ I’m using to enforce the process flow are not benign: Access assumes they are all linked to some data set. And when you include a subform, Access wants to enforce a relationship between the ‘inner’ and ‘outer’ data sets. Since I know I’m not using any data in the outer form, it doesn’t occur to me to check this relationship. The inner form, shown in table format, is being filtered based on some criteria that I still cannot actually explain. But that’s why it shows only one record as a subform, while showing all 78 records in a separate window. I can’t even remember how I hit upon this as an issue. I was ready to give up. My eyes hurt from staring at the screen. And yet, somehow I tried the subform wizard again from scratch. It’s the assumption of a relationship between the datasets, and the non-option I missed every other time: “none”.
None is the correct answer. It is an afterthought in the list, but in this context it is the only choice that would make sense, since the data set of the outer form has no records. I still can’t figure out why the thing showed one record, and not zero records. That would have probably tipped me off sooner. One record makes even less sense to me now in retrospect.
So, A Graphical Interface Actually Made Things Harder?
Yeah, how about that. There were long lists of properties for the form objects. Those don’t actually require graphics, but so what. When clicking on the right object is one pixel away from trouble, I think I’d rather just take it form the list. The only trouble with the list is that there are lots of auto-generated items like form labels with really generic names.
Okay, I’d better stop complaining and write the new PHP scripts…
UPDATE: I Helped A Stranger
You might not see the comments in your current view, but ‘Svendson’ got some use out of my rambling explanation.
When I got a spare copy of MS Office, I took it seriously. I taught myself everything I could. O’Reily has a good book on Access [I’ll find the link…], taking you from the basics of relational tables, through the quirks of Access’s SQL version, the Jet DB Engine, and some API flavors like ADO - It really helped me understand how code pages functioned in the Office suite. I thought I knew how macros worked - they didn’t seem mysterious, but practical matters can be a little different. Some VBA tricks in hand and I was off, linking up tables, queries, (hardly ever reports - doing all that with web server scripting), forms, macros and code.
And then I had to take a class… I naively thought I would learn something. This was over-priced adult education with an emphasis on following the workbooks. I might have taught the professor a few things he didn’t know. I got as far as I did on the humility of assuming I could always learn more. I showed off my O’Reily book to some of my classmates.
I never saw anything in a textbook about how hard it is to select the right objects. I couldn’t figure out who these people were, writing as if there could be no misunderstanding. For all the user-friendly features of the interface, it’s often deviantly wrong. I was already interested in user interfaces, and now I’m completely hooked.
For a lot of jobs, you can’t beat the convenience of Access… But that makes these little problems even more galling.
Creating and editing forms is the most painful part, and when I am not inflicting the design on anybody else, I will happily skip it. To me, table view *IS* a kind of form.
Let’s hear it for helping anonymous strangers out on the Internet!
Posted in databases, computer-interface, web-craft, olssons | 1 comment | no trackbacksPosted by Evan Bittner
Tue, 06 May 2008 16:38:00 GMT
I’m still trying to decide how strange this was…
Yesterday afternoon I was posting adds and deletes to the used book database from MS Access. I opened the linked table and got a failure message. Nothing special there - something’s not perfect in the ODBC settings and a remote table will ‘time out’ sometimes. If I work fast enough, I can avoid the problem altogether. It’s been like this ever since we changed servers in 2006 - everything is nominally the same, but I can’t vouch for every last setting.
But this failure message showed up the moment I tried to open the linked table. And it gave a new reason I’ve never encountered: “ODBC Call Failed – #{some error code} – Too many MySQL connections” Or, something like that.
Too many connections? What is this, some kind of Denial of Service attack on my database server? I tried the MySQL Query Browser - a handy tool when I tire of Access - and I got the same error message. Curses!
For a minute, I was stumped. I tried to think of an approach to this problem that would work in reasonable time. We don’t have shell access to the Network Solutions machine like I do at Site5. And their admin website is always curiously unhelpful… But I figure that’s my next move before calling somebody - I know there’s a ‘database configuration’ page on there somewhere, and maybe it will let a helpful clue slip.
Ah ha! On one page, they’re trying to sell me shell access (something which I know from experience I would only need in an emergency - and in my opinion a strange thing to charge extra for), but on the database config page, they describe what I should do to SSH to the MySQL server (runs on a different IP address). So I try it - key in the details to PuTTY, get the login, but then… Trouble with the password. The same login/password combination that gets me in everywhere else. It’s the Site 5 shell all over again! There must be a combination that works, but how am I supposed to know it?
While thrashing around, I hit upon a solution. As was the case with PHP, I noticed there was a button that said “Upgrade”. We were running MySQL version 4, and now version 5 is available. Aside from breaking every script running a database query (and come on, how different is the interface going to be?), what could it hurt? And, causing an upgrade would bump all open connections - at least giving me a window to get in. So I clicked the button.
And that worked. For a while it said ‘processing’ as the status, but soon enough, I could open the linked tables and get on with my life.
Apparently It’s Not Over
This morning, since I’m thinking about it, I decided I ought to log in to the database server again. Both the phpMyAdmin web interface and the MySQL Query Browser are telling me simply “Cannot log in”. What kind of nonsense have we got going here? Some completely different problem? It did work for me yesterday afternoon, so the very plausible explanation that I broke the server has some evidence against it.
Big News
I’m in.
The IP address seems to have changed - I’ll have to update that in the two server scripts I broke. That’s five minutes of work, no sweat.
I’ve got this copy of “Open Source Development with LAMP” lying around, and it has a chapter on MySQL command line. (MySQL is the ‘M’ in LAMP, after all.) It’s nice to have a book about a place when I go exploring. Even if that place is a database server. Especially if that place is a database server.
Funny thing is: If I try the “SHOW DATABSES;” command, I get the message “ERROR 1227 (42000): Access denied; you need the SHOW DATABASES privilege for this operation”. Well, can somebody please tell me how I get that privilege? I am that administrator, after all. We’re not going to trust anybody else but me.
Hey! - My PuTTY session just died. I can see it’s going to be a fun day. I guess I’ll do some other stuff that seems urgent.
Posted in computer-interface, web-craft, databases | no comments | no trackbacksPosted by Evan Bittner
Mon, 05 May 2008 13:07:00 GMT
At some point I was holding “The Geography Of Nowhere” in my hands, getting off a bus or something, when I noticed that the back cover has the word “Sociology” in the upper left corner. I was startled.
Subject, Category, Section
Maybe this indicates something wrong with me, and maybe it indicates something wrong with our need to classify ideas using the same tired old categories. Maybe I’ve gone from library-like systems that map one category on to one book and moved on to Web 2.0 data where categories are in a one to many relationship to a book… i.e. Every book can be about more than one subject.
This, naturally, effects how books are edited and published - the breakdown of books into subjects. While some subjects feel natural and have a solid precedent, others are recent additions. At Olsson’s I learned early on that books get put in inappropriate sections because we believe someone searching for a book will find it there faster than in a more literally true assignment. There are some ghetto sections that collect many books that didn’t fit anywhere else - which seems weird until you remember that giving them their own micro-fine sections would complicate the book store. A library might be happier with the Dewey Decimals out to four significant places, but at the bookstore many books are in “Cultural Studies” or “Travel Literature” when they belong somewhere else.
In a store, books can’t float in some multidimensional idea-space. They have to go on a shelf somewhere. They have to be categorized by one label. The publisher suggests “Sociology”. We have that book in “Urban Studies”.
Think really hard about the need to put books in one section only, and you realize that the sections of a book store are not necessarily all of the same conceptual level - by this I mean that some sections denote exclusive forms. Poetry. Foreign Language Dictionaries. You aren’t tempted to wonder if a poetry book would better reside in - say - politics because it seems critical of the current state of the world. Or that a Russian-English dictionary might belong in Science because there are also scientific terms defined. But other sections are more attributive. As in History, Science, or Arts. It just so happens that most authors are careful to write their books in such a way that these categorizations are easy, but that doesn’t mean we won’t see a rash of genre-bending authors come in and muck everything up…
Like Jim Kunstler writing about American history, car culture, zoning laws, land use patterns, the building trade, economic indicators, and architectural styles all in one breath.
Posted in books, databases, olssons | no comments | no trackbacksPosted by Evan Bittner
Wed, 23 Apr 2008 20:12:00 GMT