Monday, December 13, 2010

A PhillyCarShare API

Do you have a PhillyCarShare account? Do you know (or want to know) Python? For the past few months I have been working on a public API to PhillyCarShare's reservation and account management system. However, I have only had opportunity to test it on single-member, personal accounts (since that's the only kind I have). So now I'm reaching out for some assistance. I'm open-sourcing the interface and encouraging (or imploring) folks to tinker with it.

Developers

The source is available on github at github.com/mjumbewu/pcs-api. It's written in Python to run on top of AppEngine (though it could theoretically be ported to Django with minimal effort). I have an instance up and running at phillycarshare-api-kwawatu.appspot.com/. The app name is purposefully gargantuan, as appengine names are permanent for now, and I didn't want to create any problems for the future.

I know everyone is tight on time, so if there's anything I could do that would make contributing easier, please let me know. I realize the documentation is a bit lacking right now, and I'm working on it :). If you have any questions at all, let me know in the comments, or shoot me a message by email or on twitter @mjumbewu

Non-developers

If you're not a developer but still want to help test the API or stuff developed with the API, or have any other questions, contact me as well.

Sunday, December 12, 2010

Beguiling Events — A Poem About Systems!

Beguiling Events
A system is a big black box
Of which we can't unlock the locks,
And all we can find out about
Is what goes in and what comes out.
Perceiving input-output pairs,
Related by parameters,
Permits us, sometimes, to relate
An input, output and a state.
If this relation's good and stable
Then to predict we may be able,
But if this fails us—heaven forbid!
We'll be compelled to force the lid!
—Kenneth Boulding, economist 

Sunday, November 14, 2010

Whoo, BarCamp Philly!

#bcphilly I had a great time at BarCamp Philly 2010 yesterday. BIG ups to the organizers, JP Toto, Roz Duffy, Kelani Nichole, and Sarah Feidt. I had the opportunity to sit and pontificate with some of the most awesome folks from the city, the region, and beyond...and picked up a couple t-shirts to boot!

In the morning there was the session on Weaving a Regional Mesh For Open Innovation. I think the content of the session could be summed up in a statement made by the presenter, Joe Raimondo: "The World needs R&D". It was more or less an open discussion on ways to foster and encourage innovation around real-world local problems. We touched on early education, higher education, mobilizing community [human] resources, traditional hierarchical organizational structures, and a host of other topics. Most of it wasn't terribly specific to this region, outside of the examples raised (as most people in the room were from the region). It was an awesome way to start off the day.

Then there was an OpenDataPhilly talk featuring Paul Wright, Mike Jewsbury, Mark Headd, and Stuart Alter (not much of a tweeter) from the DoT. There were some good questions brought up by the audience here, such as how Philly is addressing the issue of 2-way data streams (as opposed to just from government to citizens), and how they (we?) are approaching data and digital tool access with respect to the digital access divide in Philly. Not all the questions were answered in ways that were yet satisfactory to me, but these are hard problems and only recently starting to get worked out anywhere, so I'll cut the panelists some slack.

After that I chatted and mulled around for a while, and eventually ended up in Kris Walker's presentation, Internet as Platform. It was an apt refresher on open-web principles, showcasing the current state and trajectory of web [browser-based] platforms. If I can recall where his slides are hosted, I'll post it here. Update: Here's those slides

After a nice lunch at Good Dog with Corey Latislaw, Jason Cox, and Pam Selle, I intended to attend a talk entitled "JavaScript is Real Code" with Len Smith, but for whatever reason it was moved to a later time slot. Instead, I and a couple other folks stayed around for an impromptu session on jQTouch with Wil Doane, who shared samples and explanations from code that he uses to teach a class at Hudson Valley Community College. I wanna do that!

After a bit of shuffling around, deciding on my next session, I settled into Riot URLs: Gender Feminism and Tech with Maria Sciarrino and a room full of folks discussing women and men (and boys and girls) in tech. On one level, I enjoy sitting around talking about bias in tech (takes me back to my college days), but there's something weird about it too. Maybe because I feel it's too important an issue to be touched on in an hour-long discussion, which is often as far as people go with it. Maria did express a desire/make a suggestion that the discussion continue in some form. Update: Maybe a regular brunch?

Lastly, I sat for a few in Corey's last-minute addition to the schedule, a disscussion around coding for good. I wish I could have stayed for the entirety of this session, but I had my partner's birthday celebration to get to (trade one good time for another).

Still have some thoughts to digest, and I'll do so later, either here or over on Kwa Watu. Just want to say thanks again to the organizers, the volunteers, the sponsors, the presenters, and the attendees of this BarCamp Philly.

Wednesday, September 29, 2010

Design Pattern "Flash Cards"

I was reading up on design patterns a couple days ago after reading this scathing piece. The author is expressing his disappointment that so many software developers are generally ignorant of design patterns.

The article inspired me to search for some good flash cards for studying design patterns. Of course, nothing replaces a good reference like the Gang of Four, but still, study aids are nice. As it happens, a few years back Jason McDonald did put together an attractive set of cards based on the GoF patterns. These were nice, but I wanted something more extensible. So, I decided (or rather, was compelled) to spend a-whole-heaping-lot of time that I really didn't have over the last couple of days to stand up a mobile web app based on McDonald's files.

The app is located at http://www.kwawatu.com/gof — just point your sufficiently capable mobile browser at that address. It was written with jQTouch (which wasn't too bad to learn, coming from some familiarity with jQuery), and my guess is that it'll only work on iOS, Android, and WebOS. Possibly in Opera Mobile, but I wouldn't take that bet. On iOS, if you tap the '+' button in your browser, you can add the app (with a cute little icon, courtesy of M.C. Escher) to your home screen. I imagine you can do something similar on other systems. The source is available on my github. You need Python and Django to generate the app.

The "cards" are meant to accompany a good reference. Many things could be better about the app, but it's time for me to put it away for a while. I have work to do.

Thursday, September 2, 2010

Africa ... states of independence

Even though it appears that the world has not yet heard of it (at the time I am writing this, all Google can tell me is that there is a 15 second say-nothing promotional video, and that I and one other person have tweeted it), I'm looking forward to checking this out:

Seventeen African nations gained their independence in 1960, but the dreams of the independence era were short-lived. Africa ... states of independence tells the story of some of those countries - stories of mass exploitation, of the ecstasy of independence and of how - with liberation - a new, covert scramble for resources was born.



I'll try not to be confused by the GMT air times.

Thursday, August 12, 2010

My Basis

I was looking through my Google docs for something I had noted a while ago (btw: it is helpful to have all your notes in one place—I need to do that more often), and I came across this list I made back in December of things that I consider important. I'm not sure if this is a complete list, but it is certainly still true.

It's good that I keep these things somewhere that they can be found. Now I need to work on finding and reminding myself of them on a regular basis.

  • Be African
    • Wear my Africanness proudly
    • Study/explore my Africanness avidly
  • Be a Craftsman
    • Care about my craft(s)
    • Strive to be the best that I can be
    • Never cease to learn about what I do
  • Be Ma'at-ian citizen of the Earth
    • Apply my knowledge and talents to the betterment of life
  • Lead a balanced life
    • Not bite more than I can chew
  • Be honest with myself and others
    • Spend time getting to know myself
  • Strive to make things that I'm a part of better
  • Make good decisions
    • Be prudent
    • Be just
    • Be discerning
    • Be confident
    • Be open (and humble)
    • Be willing to change your mind
  • Treat each day as a new opportunity to [... what? be great? be effective? act on my values? bring what I want into the world? ah...] live with purpose.

  • Keep my life interesting!

To do: Work out a system to review and place things I do in context of these important things regularly.

Tuesday, July 27, 2010

Installing Amazon MP3 Downloader on 64-bit Ubuntu 10.04 (Lucid Lynx)

I was looking to buy a few albums from Amazon today, when I found out that they only provide their mp3 downloader in a 32-bit package. Moreover, it requires other packages that are not available in the Lucid repositories.

Why do I want the Amazon downloader? Well, you can download individual songs/files from Amazon without the downloader, but in order to get whole albums at once (as well as some goodies that are sometimes packaged only with albums), you need the downloader.

I found a post that addresses this issue in a slightly earlier version of Ubuntu, but it didn't work immediately for me.  So, here's what I did:
  1. First, I backed up my /etc/apt/sources.list
  2. Then, in the original /etc/apt/sources.list file, I replaced all instances of "lucid" with "karmic". There are packages that the downloader needed that are available in the Karmic repositories, but not Lucid. Specifically, these are the 1.34 versions of Boost libraries:

    • libboost-filesystem
    • libboost-date_time
    • libboost-iostreams
    • libboost-regex
    • libboost-signals
    • libboost-thread
    I got the idea to use the Karmic repositories from http://www.hilltopyodeler.com/blog/?p=294.
  3. Use synaptic to refresh your package list, and to install the above packages as well as libglademm-2.4-1c2a (you can do it from the command line, but I used synaptic).
  4. From here, follow the instructions at http://www.ensode.net/roller/dheffelfinger/entry/installing_amazon_mp3_downloader_under (look in the comments for the current location of getlibs.deb). While installing amazonmp3.deb, if it tells you that there are other dependencies missing, go ahead and install those as well.
  5. After you've finished, don't forget to restore your /etc/apt/sources.list from the backup you made in step #1.
Hope this helps someone else.  Thanks to the two sites linked above for their prior work on the issue.

Sunday, July 25, 2010

Am I an Entrepreneur?

I'm having a bit of trouble recently understanding what I'm doing.

I'm not working for anyone else right now. No steady paycheck (no real paycheck's at all, yet). But I'm not unemployed. More and more I'm hearing the word entrepreneur. Of course, I've known the word, but never though it'd be applied to me. I've though about starting a business, other organizing endeavors, etc., but never wanted to be an entrepreneur.

I think, as I'm coming to understand it, there's nothing inherently that I have against entrepreneurialism. I think this is just another instance where I am deeply frustrated by the game we're playing.

Dictionary definitions of "entrepreneur" are usually similar to: One who organizes, manages, and assumes the risks of a business or enterprise. But the dictionary definition isn't really what I'm referring to here. It's rather the concept of what an entrepreneur is in my mind. For me, the concept of entrepreneur smacks too strongly of capitalism for me to be completely comfortable with it. It sounds like someone trying to make a buck. It sounds like the infinite creativity of humans directed toward financial gain.

Being around all of the independent workers, free agents, and self-proclaimed entrepreneurs that I have been recently, I'm realizing that they don't all share my feelings about the concept. I'm learning that entrepreneurialism is multifaceted, complicated (as most things are). According to a video by Grasshopper, which Cameron Herold showed in a TED talk, "entrepreneur" is just a relatively new word for "thinker", "doer", and "innovator". In a presentation that he gave at the European Creative Cities Conference, Blake Jenelle says that, to him, entrepreneurialism is "The art of building something that has never existed before.

I like Blake's definition, but that's not what an entrepreneur is to me. For me, an entrepreneur is someone who devises a way to make money off of something, whether it existed before or not. And maybe that's why I like the concept of missioneur, so far, which Jenelle has been evangelizing lately. For me, the appeal of missioneurialism is not any affinity for entrepreneurship, but instead because I see it as a tool with which to move money from the center. As such, I do not see it as entrepreneurship, though.It's entrepreneurialism as much as grassroots community organizing or non-profit work. By definition, each of those activities may be entrepreneurial, but they are not considered in the same vein.

To do: Write (and post) my mission. This is what will guide me, more than labels of entrepreneur or missioneur.

Friday, June 25, 2010

Positive <==> Successful?

Went to an IndyHall happy hour tonight at National Mechanics. It was excellent.

There's one thing I've been noticing over the past couple weeks. "Successful" people are positive. I know this is nothing new or terribly original, but it's something that, when you really get to talking to people, you can't help but notice. They have a way of seeing the lesson and the value in almost any experience.

I have only anecdotal evidence yet (I'm a scientist), but I think it may be true that positive people are "successful" too. I'm thinking this is because there are fewer opportunities for outright failure when the majority of experiences have some value. So positive people are less likely to classify what other people would as outright failure; they're just stepping stones—educational moments—on the way to something else.

Ok, that's enough Tony Robbins for tonight.

By the way, I don't really hate marketing. I just have a lot to learn.

Monday, June 21, 2010

Lies Facebook Tells

I'm just a little frustrated at Facebook right now. When I created my event, I checked the little box that said "Anyone can view and RSVP (public event)". Then, on my event page, under Event Information, it says:
This is a public event. Anyone can see the event, RSVP, or invite others to this event.
Awesome. Sounds good.

So why, when I clicked on a link to my event without being signed in today, did it tell me that "You must log in to see this page."?!?! Turns out that when they say that anyone can see the event, they're just lying to you. Really what they mean is:
Only people with a Facebook account, or people that were explicitly invited, can view your event. And there's no way to open it up. Because the only public that we care about is the select portion of the public that chooses to use Facebook. We will alienate anyone else. Sorry.
Damn it, Facebook! I already sent out the announcements.

*Sigh*, I should have tested harder.  The moral of the story: you can use Facebook, just don't believe a thing it tells you.

I Hate Marketing

I hate marketing.  I guess the marketing I'm referring to is the sending of notices through email, twitter, facebook, and every other communication channel you can access. It makes my palms sweat. Makes my heart beat fast. I feel like I'm bothering people. I feel like I'm inundating a lot of already over-inundated people with extra information.

Part of this is that I have to get better at using different communication channels. For example, I sent out a tweet about the Phillyware meeting this thursday. It said:
hey folks, i'm holding a brainstorming meeting for ideas on building civic software community in philly. come by:http://tinyurl.com/24n8g3s
Someone from Refresh Philly repackaged it as:
Interested in building civic software tools for Philly citizens? Join @mjumbewu at @indyhall this Thurs http://bit.ly/9QOg1p
I found that a much more appropriate blast. Why? They both talked about the meeting, but while my message leads with what I was doing, RefreshPhilly's leads with the reason you would be interested. It engages you with a question, an actual prompt through which to consider the meeting, in 140 characters or less.

This is, of course, something that anyone with any experience in marketing would know.

Thursday, June 17, 2010

I (heart) My Gnome Desktop

So I was sitting here yet again enjoying my Gnome desktop experience, and I was so moved by my enjoyment that I had to write a post about it. I'm really loving my Gnome these days.

Someone Read this Blog

Someone commented on my post-RefreshPhilly post the other day. Which was weird because I never really expect anyone to read this blog. It's more of a personal space. But then if I didn't invite it, I'd have made the blog private.

Anyway, it makes me nervous about writing anything disparaging. It prompted me to re-read my post, nervous about what I said.  But I have no reason to be nervous (my most harsh comment was that the talks weren't "earth-shattering"). Really, I just have to remember that, even when writing to myself, I'm incredibly forgiving of my subjects.

1.5 miles on June 17

So today, in about 13 minutes, I ran this much:

View Larger Map
It's about 1.5 miles, according to Google. I think I was trying to outdo my before. But it turns out I didn't do much better. I mean, I wasn't as beat as before, but I think that may be because I had more of a goal. Anyway, it's not bad. I feel like I'd like to be able to do 2 miles in 15 minutes or less.

Monday, June 14, 2010

HappyCog @ RefreshPhilly

I went to a RefreshPhilly talk by HappyCog this evening.  They talked about their process in developing the new visitphilly.com website.  They presented four stages of development: information architecture, back-end coding, front-end coding, and design.  Things were not necessarily done in that order, but that was the presentation order.
  • Information Architecture

    This is classification of information within context. It's clumping and separating. It's apples and oranges, but to a botanist or a chef. The information architectural design is going to determine the structure of your menus and links (and probably other stuff).

    Start with a detailed breakdown of the domain (context) you're working within, from a users point of view. Classify them according to importance and according to how well they can be achieved through software, and then clump them into separable categories (experiential goals -- things the user wants to do with the software).

    The presenter recommended a book: Mental Models: Aligning Design Strategy with Human Behavior by Indi Young.  Might be worth checking out. I should also get around to reading those other books like The Design of Everyday Things.
  • Back-end Coding

    This, in the case of HappyCog and the Greater Philadelphia Tourism Marketing Corporation (GPTMC), was construction of the system that the site maintainers will interact with.  It was choosing and setting up a CMS.  It was also deciding how to transfer all the old data into the new system.
  • Front-end Coding

    This was basically taking the design and coding it.  She gave some good best-practices advice, like making landing pages for all top-level menu links (for folks without javascript), and making :hover :focus and onMouseOver onFocus for those people browsing with their keyboards (I do that!).  Also, I like their "megamenus".
  • Design

    I would sum-up design as a word in one of the slides: reinterpreting. It was taking a new [conceptual] image of the city and putting it into a visual statement.  They came up with some emotive themes that they wanted Philadelphia tourism to embody (contemporary, fashionable, and a couple others I don't remember), and evaluated each of their design possibilities against those themes.
Anyways, nothing earth-shattering, but I certainly learned some things, and had other things that I may have already known on some level made salient.

1.2 Miles Today

So this is the route I ran today:

View Larger Map
Apparently it took me about 10 minutes. Hm. Well, I'm not training for a marathon or anything, but I'd like to be in good soccer shape. That's not good soccer shape yet, I think.

Tuesday, May 25, 2010

What will I do without my Lala

I have to say, I am quite disappointed to be losing Lala.  I think it has turned out to be my favorite music site ever.  I mean, Pandora's cool (and it was cooler before I had to listen to ads), but sometimes you want to listen to what you specifically want to listen to.  And Lala let you do that for $0.10 (or like $1 for albums).  It was so easy to buy music at those prices.  No complicated "is it really worth that?" questions.  If you liked an album, you bought it, no hesitation.  Then, you could listen to it to your heart's content until you decided that you needed it everywhere, and you made the plunge and bought the whole album.  And you could still listen to it online.  And if you never needed it everywhere, you never bought it for offline.  No problem.

Now I'm faced with a delima.  Lala's closing.  My online songs will go away.  Do I buy them?  That's quite a bit to drop at once (particularly without a steady income).  Apple will likely open up a similar service (well, one would hope), and I'd be able to use my Lala credits there, but I've never liked Apple software.  Apple makes bloatware.  Even if it were exactly like Lala in every respect, it'd take me some time to get over the Apple brand.

Oh well, I suppose I'll just wait and see.

I wonder if Apple's service will use Flash :).  If it used HTML 5 audio, that'd be awesome.  In spite of my less-than-stellar feelings about Apple and "HTML5", Flash is terrible on 64-bit Linux.