Sunday, September 30, 2007

Coming soon to paperpools...

harrumph.

Hello, hello? Is anyone there? *posts blog entry, checks if it's there, goes back to edit it* Haha, this is so cool! I'm actually writing a blog on paperpools! One of my very own! Which will be read by countless individuals, upon which a virulent swarm of memes will be unleashed from my sentences, infecting readers worldwide with my thoughts. Soon enough, everyone will be doing my bidding. And then finally... an end to undotted fretboards on classical guitars! *shakes raised fist*

Ahem. (But this is still so cool!)

So, where were we... Yes, right, I might as well start off by introducing myself. I'm Hassan, a recent graduate from an over-rated west coast university (well actually, it wasn't so bad but it suffers from the general malaise that probably all brand-name universities have but that's another story), and I'm trying to think through how best to solve the problem of secondhand sales through some sort of an online platform.

How to find a system that involves readers and writers in a mutually beneficial system of exchange outside of the publishing norm isn't a trivial problem, and it is something that I think will be solved after many iterations of refinement. So, I set out to write what I thought would be a fairly straightforward version 1.0, and realized that doing so wasn't quite as trivial as I thought.

What this piece of software will do:

It's a little webpage interface where you can see a little goggle map at the top of the screen, and a webform at the bottom, where you fill in some information in fields. Not sure what exactly, but the basics would be name, e-mail address, and physical address. On the google map there will be a pointer that you can slide around, and after placing the pointer at where you live in the world and filling in the form, you click the save button.

Then, that saves your info into a database, after which you're taken to a page with another google map, where you can see the locations of all the readers of The Last Samurai/paperpools readers (sorta one in the same, right?) yourself included as multicolored pointers, with associated info, perhaps name and address alone at this point, not sure. Feel free to put in a fake name and/or a partially complete address if you're anxious about that, specifics aren't really essential.

Why:

First off, Helen and I think it'd be kinda cool to see where all the readers of the blog and the book come from, like for instance, I myself read the book back when I was in Ghana before leaving for college, and I'd be curious to see if there any other readers of that British Council Library copy that ended up here as well, not to mention a wonder of where else The Last Samurai has managed to find itself. But apart from that, since I'll have e-mails stored in a database, via me, users could potentially get in touch with one another for things like asking questions, setting up secondhand exchanges of books, or just whatever, who knows. I mean after all, we all read the book and liked it enough to either find our way here or just be the one that plain wrote it, so chances are we are a collection of similar-minded individuals, and this application should lend us probably welcome extended possibilities of interaction.

I guess what would happen is, if you want to get in touch with someone you see in an interesting part of the globe, e.g. say you're Helen, and you're, I dunno, wondering whether the Italian translation of the book used italics for the parts that are actually in Italian or some such thing, I'd shoot the Milanese user an e-mail, ask if they don't mind me giving their e-mail address to her, and they'd hopefully be like naturalmente. This is of course not a very graceful way of doing things, and ideally, I'd like an instant messaging system so people could self-regulate their privacy, but my current coding skills would make a mountain out of the activation energy required to do that. Hold that thought, because we're coming to why we haven't seen anything yet. So yeah, if people in general are uncomfortable about handing over their e-mail address over to human eyes, do let me know and I can figure something else out. Of course I'd say so, but rest assured I'd have no bad designs upon your e-mail addresses. If this does turn out to be a concern, along with the instruction manual on the page, I'll give you a dummy or proxy e-mail address you can use, because I'm using e-mail addresses as the unique identifiers for people. I guess I could log your IP address instead, but then what about a situation where two people use the same computer or internet router, I guess I could be clever and use an encrypted hash of IP + e-mail address, I dunno, we'll see.

So, you said something earlier about this being straightforward, right? So what gives? Where is this webpage?(!!):

As it turns out, I'm actually not technically a computer scientist by training. I did something called symbolic systems, which is essentially the approaching of cognitive science from all directions. These include philosophy of both the logical atomatism and white Greek-robe variety, psychology, linguistics, statistics, in my particular focus music cognition, as well as several others. Because we now like to think of the mind as of a computer that gets input from the senses, processes it, and outputs in the form of information, those several others would be artificial intelligence theory, computer science in the pure sense, and last but not least, three mandatory computer programming classes.

These three classes are not your average programming classes. Apart from the fact that OK, well, fine, the school is Stanford, where software development is pretty much how we got where we are, these three classes are designed to cover everything, in fact, even the Computer Science majors themselves don't take much more than those 3 in terms of purely programming classes. But that's just it. They're programming classes, not programming language classes. So while I can come up with algorithms for most problems, I was too busy doing random other things to bother learning web development languages not covered in class. Like PHP/mySQL. The precise tools needed for the job, it turns out, for what will come out is actually more of a version 1.1 than a 1.0.

PHP/mySQL at this level really isn't hard. It's just that learning a new language is such an effort. I'm mostly done with understanding how it works, and now it's actually time to write it. Which again. Is such an effort. Each time you test it and it doesn't run it's like a mini-heartbreak, and the average day can see maybe 200 failed test-runs... sigh.

Don't get me wrong, no, I'm dying to see this thing up and running. It's just that coding for me on a given day is a matter of having the right sort of chi*. And being in the post-graduation ether all caught up with things like finishing up the last bits of paperwork, wondering where to move, move at all?, working at my fake job, applying for real ones and interviewing but then should I just stop all that and apply to grad school like I originally planned, etc. etc., so when one does get free time, it's hard to decide to use it up on coding, never an easy choice at the best of times. But I'll definitely get around to it, though. Sooner still if perhaps I heard from you guys with questions, comments, suggestions that sort of thing. Anything that makes the coding seem less of a solitary activity. So yeah, please do give me some feedback. Google maps thing, good idea, bad idea? Ideas for improvement either in the short-term/long-term, what is secondhand sales exactly?, etc.

But yeah, that's what I've been kinda up to, and also what there will be to look forward to on paperpools.


* The right sort of chi: Many things contribute. For instance, on the days when I'm being productive, if I manage to seize the moments before the point where I become self-congratulatory after which I stop doing any work, I may code then. Coding is also likely after a good game of chess. There are others. But most predictably, I will have all the right sorts of energy to code when there is a fire underneath me, such as a good old-fashioned hard deadline. Oh, see me go! I've turned unviewed homework handouts into limping bits of submittable code in record time when told on a Friday that the submission date was moved forward to next week Tuesday, before the 5-day Thanksgiving break instead of after it. I tried to make this work for me; I would have liked to have unveiled the working webapp in time for Helen's birthday, alas, all the best intentions didn't get me past merely setting up a database, maybe a table as well. So I guess that's that for deadlines... Although if I do move from Palo Alto, I'd like to finish it while I'm sure where all the internet is. We'll see...

ps: What a long post!

6 comments:

Anonymous said...

Sounds great! Looking forward to seeing it working.

I think you should add something in the form (with the adresses and all that stuff) for special bookstores, companies or internet shops. I dunno, but in future some may come out. Appear.

Kweku said...

Ahhh! Gotcha... Never thought of classifying the sort of user of the widget, I was simplistically assuming everyone's just a personal copy owner like me. Perhaps I might have a drop box for the class of TLS reader, and color code the markers on the map for the different types. Excellent suggestion, thanks very much for it.

Lee said...

Yet another database?

Kweku said...

re lee: Not sure what you mean, but if you're talking about all the info not being able to fit onto one database, that shouldn't be a problem. Just an extra field, probably stored as numerical constants, a little google maps code to turn the markers into different colour (or even better, different shades of colour - maybe assorted different shades of red for all bookstores listed).

If you mean a DB to store some other info, what sort of info do you have in mind? Or if it's rather, 'oh no, not another database!', well, what can I say - yeah, another database. But it is a first for the site. Paranthetically, I was thinking of just putting up a webform that e-mails me the data and I manually fill it in as a proxy, so that was almost not a database. But then, that doesn't scale particularly well when I would eventually need not to be doing this manually. So yeah, DBs were the way to go. Woot woot.

Anonymous said...

I think you should also place a person's photo there and a module for the list of books. For example, you click on some link in the pers. inf. and a list of books that a person reads opens. It is also useful if we would need/like to share some special books. It would be great!

Lee said...

'Oh no, not another database!'