MMS with AT & T Platform SDK

Posted by banane on May 7th, 2012 — in technology

Finally figured this out and thought I’d blog about it.

You’re setting up a short-code listening MMS app. Keep in mind:

– The receiving (server) script should handle $_POST to the address
– Setup that script in the developer portal’s app page
– I included a lot of server logging (manually) in the script
– With the Sencha front-end, I re-wrote the image files to the client directory /assets/data/ etc. I json-encoded (was in a custom DB format in the example)
– The format of the incoming MMS data is very… customized. So I output to a log, then used as a test format. That decreases the expense of testing with real MMS messages.
– Basically, you find the filename, content-type, and base64 actual image data, and write that to your own custom datastructure.

I can post sample code, but my working versions are at:

https://github.com/estelle/baconunicorn/blob/master/server/receiveMMS.php

Basically it’s the developer API’s 3rd example MMS app receiver file:

https://github.com/attdevsupport/API-Platform/blob/master/MMS/PHP/app3/mmslistener.php

With a lot of logging, json-encoding, and redirecting to another file save path.

Here is a test file you can use.

http://banane.com/baconunicorn/server/test_mms.txt

Story of the Hackfest – Bacon Unicorn!

Posted by banane on May 6th, 2012 — in android dev, facebook, social networks, technology


Stacie, Estelle, and me in the background. Via Kris Corzine

The AT & T Hackfest was in Palo Alto. Sleepy, beautiful, affluent, diverse and yet economically not-diverse, Palo Alto, at the AT & T Foundry, a neat space with lots of power, sunlight, and (oddly, but great) random doors onto the street. I kind of love that place. We slowly formed a team- my teammate from other hackathons, Stacie Hibino, and Estelle Weyl, whom I’d admired her from a Javascript class a few months ago, and Stacie had worked with her at another hackfest. Two friends joined and left, graphic designers lured elsewhere. A friend Kris was with us the first day then – as server problems mounted- left for the beckoning weekend sunshine. I totally understand, and no hard feelings. For us- and I can speak for Stacie on this I believe – it was a very rough hackfest. Which, I will get into.

So, first night, we meet at 6pm – my friend Kyle and I getting a ridiculously expensive glass of wine quickly beforehand- and suffer through a ton of talks on the various APIs sponsored for this hackathon. Sure, my talk was one of them, but seriously there was too much information overload that first night. And, we were rarin’ to go. The lights go on at 9pm, and during that time, Stacie has been trying to understand the various API’s already. We only have a night, and a full day the next day, in which to hack. It’s a really short timeframe and it’s already 9pm. Oh, and the dinner has run out twice. No one on our team got any – which is kind of funny.

We put up some ideas on the board, figure out with a big grid what the prize categories are, and how each tech API fits into them. Two of our ideas make the final cut, and Estelle has to take off. Stacie, Kris and I go to dinner, and I’m still pretty overwhelmingly confused and wondering if some of our basic ideas- uploading a photo from a phone- will work in HTML5, and on what cameras, and how do we get it back, etc. I know Estelle will know these, but in the meantime feel worried that our idea is sound and that it will work.

My friend Kyle has joined a team of folks working on a fitness app. They’re using an API that uses the Facebook REST authentication, and while I help them a bit, I can tell it’s a total time suck and I need to get home, back to SF. We talk in the car about the prize categories, and some of the ideas that were tossed out. My team, at that point, was trying to do a scavenger hunt, with geolocating and photos. Kyle’s was doing a social, shareable fitness app. Kyle and I worked together at a lightweight Facebook company, so we were talking about modular styles and simplicity, and came up with a good new idea for an app.


Estelle’s working geo-locator in HTML5/JS

The next morning, waking up after a few hours sleep, corralling my carpool buddy and getting down to Palo Alto in the my borrowed car, trying to park amidst a big Palo Alto Cinco di Mayo fair, we finally settle in with all of our teammates.

I pitch the idea Kyle and I had from the car, but no one bites. We’re still on the scavenger hunt app- there’s plenty of food (fruit!). Last night Stacie’s done more reading, and we talk about our framework. We’ve chosen the AT & T Sencha/PHP API. Stacie and I sit down to pair program on the server API, while Estelle does geolocation and the HTML app, the entire app, basically, besides the photo upload stuff. She likes to sit on a couch, so she camps a few feet away in eye distance, and we setup an IRC channel. Stacie and I hunker down to what will be approximately a 10-hour experience in total frustration, ha.

I really like working with my team- something new to me as it’s usually just been Stacie and I. I respect Estelle’s initiative and ability to project-manage herself, she’s very direct, which I appreciate. She also has a ton of knowledge about CSS, JS, mobile, etc. It’s really amazing.

So, we evaluate roughly 6 servers in our search for an environment that will work. During the day we toggle between 3. This is because the samples we’re building off of not only need a LAMP stack, but one configured a certain way. Also, the sample files are confusing, we need to mimic a structure that isn’t explained anywhere. The server and client files are named the same, causing over-copying issues. It’s a poorly constructed sample.

Luckily we discover a few hours down the road that Stacie’s server- which is blocking her password but she has one locally cached password FTP connection, interprets the PHP the way the samples were written. During that time I’ve I setup Amazon EC instance, which would qualify us for another prize category. The interesting thing is that while we’re doing this, we’re constantly evaluating whether “it’s worth it” on any given problem. We can switch quickly to another server, another flavor, etc. But as you get deeper, you’re getting more committed to your architecture. Around 4pm we finally get a stable server built. Yep. 6 hours setting up our server. We thought we’d be there at 11 AM.


Me & one of my unreadable diagrams… figuring out how we’re going to match long and lat to the MMS photos- which we didn’t have time to do :(

So, that was a big fail for me, as I’m doing server stuff all the time at work, and that was the part that I thought was seriously easy at a client-based hackfest. Upon a 12 hour reflection, my point of failure was relying on 3rd party APIs vs. common sense.

We get SMS texts sending. We get multimedia texts sending (photos). So that’s something. Now, we start working on interpreting the photos from a short code. We essentially give this about 3 hours. I ask the AT & T representatives a lot of questions- and thing is, they haven’t written the samples, and the developer APIs exist in about 6 flavors. So they tell us how it’s designed to work, and how to troubleshoot.


We get the MMS upload to work, but not reporting, this is looking at a manually uploaded photo file

Around 6pm, I walk up to the AT & T reps I’d been working with and told them we weren’t demo’ing because it wouldn’t work, and one of them ran over, but again, but ran away again to research something and we didn’t see him again until the demo.

I don’t know when we decided to demo despite everything– Estelle’s stuff worked, so we can show that, perhaps. Classic hackfest scenario: we’ve focused on making the server pretty for the last hour- which, since we’re only on one FTP connection, is Stacie’s job, and it looks great. Then, she asks me to add some Facebook, so I do a quick client JS file on my computer and email it to her, and watch her pop it into Sencha (a JS frame work I’ve never used). Since I don’t know it, I wrap the JS around the Sencha code, just avoiding the entire thing. When the Facebook auth’d share pops up, she looks at me and says, “That was amazing.” Ha ha.


My Bacon Unicorn Facebook contribution, haha. If only I’d done it in Open Graph!

You just never know what state your competition is going to be in. I had an idea, from hanging out with the representatives, that maybe only 1 team had gotten the AT & T payment exchange to work. We didn’t see a lot of MMS server people, so we had wiggled our way into a niche. So while Stacie was feeling pessimistic an hour before demo’ing, and I was optimistic, our roles were now reversed. Estelle didn’t know the extent of our server problems, so she was really optimistic.

We went outside to practice our demo- deciding to demo on different phones that show the features best- and ending with me explaining the server stuff. I felt defeated because of what didn’t work, but I needed to get out of that frame of mind and focus on what *did* work. Estelle, more of an experienced speaker than I, gave me a few pointers, “Don’t apologize. Don’t talk about what doesn’t work.” She basically had to say that a few times.

We grabbed our unicorns (Kris had bought two adorable ones) and I texted her a quick update. Then we presented our demo. We ended with 45 seconds to spare in a 3 minute demo- though I didn’t demo the photo upload to the short code (MMS send), as I thought most people knew how that worked, but it might have been stronger demo if I did. I think the demo went well because folks seemed interested, and Alex, the organizer, came up to ask us to demo certain parts to the judges.


Estelle’s working geo-locator in JS/HTML5

Which begins an ethical quandary, because we didn’t get the MMS reporting to work. We could upload, our app was configured correctly, we could see the photos land on our server, but the last piece of hte puzzle- the server interpreting the photos and placing them in the data structure- was not happening. I made the decision *not* to demo the MMS server to the AT & T rep, as he knew really how far we’d gotten since he worked so close with us. I did demo the Facebook share to the Facebook representative. To a degree, everything demo’d is broken in a way, but we were shooting for a functioning, truly functioning demo, and as it was, it was pretty disjointed. I agree on putting your best foot forward, but also in honesty. I told Stacie she could demo the server to Dale (AT & T guy) if she thought she should, but I wasn’t going to. I’m proud of the work we got done, and while we didn’t get it done 100%, it’s … not really our fault. I’m still not convinced the samples worked as written.

Re: the hackfest… good news- you got a lot of developers to your hackfest to use your API! Bad news, they’re frustrated with it. As someone who has written 3 API’s now, I want to say: make it easy. That is the basically the goal. If your developers can’t make fun stuff with it… it’s not easy. The “pressure-cooker” environment doesn’t help- the time limit and size of the prize. If AT & T really wanted more developer support, they would ask Stacie and I to write a sample that they’d include with their SDK. One that worked on *all* common, implemented versions of PHP. Do they know that most servers don’t support PHP5.3? That worked without Sencha, because the developer base for Sencha is not as big as, say, jQuery. Or, just normal JavaScript. When I woke up this morning, I realized I could solve our problem with 1 short PHP file interpeting JSON encoded MMS image data. One thing I learned from this hackfest is to not trust, nor rely, on the examples.

I broached this topic with the reps, and they explained that they have this complexity in the samples, to manage payments. Thing is, interpreting a MMS is not a big deal. You need to separate the dependencies, or put a lot more development effort into making it easy. Developers like easy.


Kyle Mock’s team Fitness Karma win in two categories!

On a lighter note- Kyle’s team won in two categories! It’s awesome to see them win because they worked very hard, and did all the coding in the weekend, and the app is a great idea: You can report your fitness achievements to Facebook, essentially. I’ve been talking about how fun hackfests are to Kyle, so it was neat to see him run the entire gamut from 1st time attendee to winner! I’m a witness too that Kyle put a ton of work into it himself.

I was trying to describe to Kyle in the car how I’m proud of what we’ve done, because we were tackling a big topic that has been evolving for a while- not just locating photos, which most sites do quite well now, but the live, HTML5 (lightweight) ability to post photos to a location. It’s a form of augmented reality, saying, this latitude and longitude has these photos associated with it. And a crowd-sourced way of doing it, so we’re not providing anything, our server tracks the lat and long of each photo posted. So it’s a pretty ambitious task, and one that I’m glad we tried to solve with our braintrust.

I didn’t talk to nearly enough people, and wished I’d mingled more, but with the time constraint and our server issues, I didn’t really have time. I usually do some interviewing and don’t mind getting my photo taken, but again we were super stressed. Sad, because one of my goals had been to do a lot of networking!

Facebook Mobile App in 20, no 7, Minutes

Posted by banane on May 4th, 2012 — in facebook, technology

I’m speaking at the AT & T HTML5 Hackathon tonight, and here are my slides, and basically my entire presentation.

OMG UNICORNS AND PONIES

Facebook has a nifty Mobile Web SDK and tutorial, and that’s what I’m going to make. The application– a simple “find fun posts on Facebook about unicorns and ponies”. I had fun making it. I just timed myself and it was 5:30 minutes, so hopefully… if I can control the digressions and asides, might be able to do it. This is a reprise of two different talks- “Facebook in 20 minutes” for Momentus- the app was called “Popularity”, and judged your popularity on the size of your friend list. Then, re-did that talk for Women2/SF WoW, called “Facebook in 20 MInutes”. That app was “I’m Pregnant!” determining if you were talking more about babies and congratulations on your feed. Both server-side PHP SDK tutorials, with open graph and authentication. Mobile Web is far easier to setup, so in a way halving this talk makes sense.

Overview

  • Become a Facebook developer
  • Setup your server with a directory for your app (SSL too)
  • Setup the FB app
  • Deal with logging in
  • API-Graph call
  • Social Channels

Ta-da!

On Analog Games

Posted by banane on May 2nd, 2012 — in games

This morning I was reading an interesting post over at my buddy’s Zero1 Blog, “ZERO1 Artist Alumni, Tim Roseborough ~ “A Puzzling Display” Online Arts and Culture Game.” Blogger Dorothy Santos writes, ‘“A Puzzling Display“ is a new artist-created online arts and culture game, where registered participants compete and test their arts and culture knowledge.’

Take that, and add a pinch of other museum-gaming perspectives: At SFMoma’s ArtGameLab, a contest focused on FUBU game designing, within the museum walls. I was there the other night for an open event, in which the top designers chatted about their portfolios and a bit on ideas regarding museums and gaming. It’s when I came across the term of “analog games.”

Don’t be distracted by the huge questions looming in the air- Does that mean museums are changing? Why games, are they even a good thing? Or, how exactly are these games organized and conducted? But instead, I get into two binaries that I think are badly formed: digital vs. analog, and empirical vs. experiential.

It’s about how we’re talking about games. For me, “analog” means continuous, streaming, like my record player and my old speakers. Digital, means converted to binary. Sure, there are a lot more options with digital right now, but that doesn’t mean that both rely on devices, or metal “technology” at its core. What I think people are really saying with “analog” is “IRL.” Yeah, a cute little texty way of saying, “In real life.” You don’t have an avatar. You are observed. You are in real-time, with no do-overs. It’s fascinating, and a lot times, more exciting. When you stop defining it as gadget vs. no gadget, offline vs. online, analog vs. dialog, it gets interesting. Because, you are saying, sure, use those other things if you want, but it has to be IRL. Laser tag is a good example. I see how analog is trying to get at the “real-time” idea, but even that is flawed as binary is simultaneous and real-time with wi-fi. So yeah, just call it what it is, IRL.

The other false binary/duality is: empirical vs. experiential. During the ArtGameLab talk, people were retweeting

“Museums are mechanisms for bringing experiences to people.” – Mathias Crawford of @natronbaxter #artgamelab

When I first read Mathias’ (@sfmoma’s) tweet, I was like, “sure.” But perhaps the 20th time it was retweeted, I wondered: are museums giving themselves far too much credit in educating and “giving” experiences? Are we extending the “mechanism” metaphor a bit too much?

At the core of this is: what are we trying to accomplish with the game. It’s hard, especially when games are for a certain entity, to make the game “about” something. One of the speakers at ArtGameLab had a great insight- that kids naturally, environmentally create games. With what they have. That sense of invention is perhaps what’s lacking in both of these scenarios. Making the game. Not having it shown to you.

Anyway, deep thoughts, all muddled and twisted about. I tried to give it structure.

Adding a UITableView to a View, with IB

Posted by banane on April 25th, 2012 — in iphone dev, technology

I love using Interface Builder– I know, I lose geek points by saying that. So I finally figured out this thing I’d always wanted to do: instead of just using an entire view as a UITableViewController, what if you want to use it like any other UI object, as a object within a View, and my class can remain UIViewController? I got it to work, this is how:

To a regular view.

1. Drag the UITableView object over to the view.

2. View “connections” pain, and drag delegate and datasource over to “File Owner”.

3. In your code editor, go into the View Controller, and add these protocols: “UITableViewDelegate,UITableViewDataSource”



@interface friendsVC : UIViewController  < UITableViewDelegate,UITableViewDataSource>
{
    
}

4. Add a property for the UITableView. I call it “myTV”. Remember to synthesize and release.



@interface friendsVC : UIViewController  < UITableViewDelegate,UITableViewDataSource>
{
        IBOutlet UITableView *myTV;
}
@property (nonatomic, retain) IBOutlet UITableView *myTV;


5. In Interface Builder, select the File Owner (gold box icon on left), and select the “Connections” pane on your right. Make a connection between myTV and the actual UITableView in the view.

6. Now, include various methods inside your *.m file, so you can leverage the loveliness that is UITableViews

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return [put number here]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [number of rows]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } // Configure the cell. cell.textLabel.text = @""; return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [[tableView cellForRowAtIndexPath:indexPath] setSelected:NO animated:YES]; /* statements here */ }

Hope this was helpful!

No Social Networks Countdown: 2 Days

Posted by banane on April 6th, 2012 — in facebook, technology

Wow, 2 days to go.

In retrospect, I’m loving the following (about this blackout):

– Discovering some great writing (Jezebel, xojane, bookslut, burrito justice)
– Amazing IRL times with good friends, neighbors, family members
– I revamped the style of this blog
– I have been reading so many entertaining blogs (see above) that I’ve re-confirmed my feminism and local activism, and local history (see: My Cool 1940s Neighbors)
– I’ve been treating LinkedIn as Facebook, and it’s rejuvenated my professional network, including opportunities.
– In general I’ve been reaching out a lot more actively, instead of passively. So that has made a ton of relationships a lot better.

I’m continuing my ideas of Friend Anxiety and “Facebook Fatigue” over at my Storify article.

I’m kicking off an “end of Lent” party (that’s Easter to you Philistines) at Zeitgeist with board games. Come on down if you’re interested. 2-3ish.

My Awesome (1940s) Neighbors

Posted by banane on April 4th, 2012 — in local color, north beach, nostalgia

Via Burrito Justice, I started looking into the National Archives’ released census data on who exactly lived at my address (via 1900 Sanborn Fire Insurance maps)- the corner of Columbus (formerly Montgomery) and Taylor, in North Beach. The entries are fascinating, especially when I started doing the math. The details are fun.

I decided to focus on two locations that are relatively indicative of the neighborhood.

The Widow’s Lodging House



This unit above represents one corner of my current modern apartment building, from a 1900 Sanborn map. on that premisis was a lodging house/hotel, run by a widowed 38 year-old, Ethil Cramer (sp?), from Kansas City, Oklahoma, more recently of Montana. Her son, Jack Harroun, aged 21 worked as “host.” This may be him- a veteran of the USS San Francisco 1942 attack on Guadalcanal, though it’s unlikely he joined up so fast and went active, and he’d have to be 82 in the photo. I have more faith in another report that at age 41 he died, because his birthplace in this report matched up with the Census- as Oregon. Sad, to die so young, in 1962, born in 1919. Let’s hope it’s the vet. Ethil Cramer is impossible to find- her literal name doesn’t match any records, and if it’s misspelled, and should be Ethel Cramer, it’s a very common name.

She had him at 17, and with his different name, I wonder if it’s an earlier marriage or out of wedlock. She had other income, probably from her inheritance. He made $900 that year. She pays $40 for that unit, which is quite large by all accounts. Though, I have such an old map it’s hard to tell what was actually built there- interesting is that she’s renting it, it’s not owned by her.

Almost all 6 tenants were older single men, or widowers, including a spunky “Irish Free State” widow, Catherine Monague. Think what she’s seen – born in 1875, living in San Francisco, through both World War I and II, and obviously has an opinion in telling the Census worker that she’s not just form Ireland but the “Irish Free State.” I could find a record of an early Irish-Texan cattle rancher named John Montague, who married an Irish Catherine Montague, but it’s a pretty common name and I have no way of verifying.

Dying to find her on Google somewhere. She’s living on some kind of non-wage income too. One 34-year old American Dominico Grillo, born in Michigan, recently of Glouster Massachusetts (good fishing?), and unemployed. The three guys older than him are also a cannery worker at a fruit packing plant, a fisherman, and a sardine fisherman (sometimes they differentiate from “crab”- I find the specificity endearing) earning from 600 to 200 a year. Josefa Nikka was a 51-year old Hungarian waiter, who earns 1,000 and had a full year of work,. There’s another interesting character – the resident who mostly represents modern North Beach. James Anderson, 62, from California, who earns $500/year as a doorman at a bar, 40 hours a week. Also the divorced, with a big D, 58 year-old Italian Antonio Gambuzzo, who works as a fruit-packer at the cannery and has “other income.” My favorite occupation in scanning these – the “macaroni drier” at the “pasta factory.” Awesome! Also- a vinegar works was right across the street, where a Mongo Networks telecom company now sits (sad face).

Big Amazing Italian Fisherman’s Family

On the little alley Water, at #67, currently an architecture firm, housed 10 Russo’s.



The patriarch, Giacomo, was a fisherman, his son a construction worker, his next son a messenger boy for PG & E (“telegraph company”)- I wonder if this is the one downtown. He has a 2nd grade education; his wife a 3rd grade. They’re from Italy, their first son was born there, then they immigrated. All the kids are in school, and the eldest two have graduated. As you can see from the Sanborn map, this is a tiny, 1-level place. I can’t imagine how they’re in there. Also, his wife had their last child at age 44. Their father worked 50 hours this week. Giacomo also has “extra income” listed- inheritance? Side line of work? He may own other properties- he owns this house, paying what looks like $15/month mortgage and an annual income of $1300 a year.

According to this, average home income nationwide was $20,000 in 1940, roughly half what we have now. According to that, almost all my neighbors were very low income, which I could tell by a couple of markers- the high density, the level of unemployment, the very low level of ownership. Also, kids contributing to monthly income is a big sign. Still, as we know it’s a thriving community with various other incomes, and it seems like even then people traveled far and wide to live here.

No Social Networks: Countdown to day 1: 6

Posted by banane on April 2nd, 2012 — in about writing, facebook

When I thought there was nothing new to report… wrong! The lastest manifestation of not being online is how folks forget that I’m not online. They think I know things going on with them, because they’ve spoken about it publicly. Which is a common thing. I am also guilty of that, having lived so publicly for a while. It’s an awkward moment when you realize the person doesn’t know something that everyone knows, or vice-versa. It’s the knowing absence of small talk, namely, “So what is up with you?” With social networks, all the wind is taken out of that sail. You can launch right into the current things you haven’t posted online. In an offline world, you learn to synopsize quite well about the large things in your life.

Example 1: I was chatting almost every day with a close friend before she realized I didn’t know she was moving in with her boyfriend. Perhaps that’s my oversight that I didn’t ask her how things were going in her relationship.

Example 2: In figuring out Friday night plans with a friend, she took a few hours to realize I had no idea her basement had flooded and she was home with contractors all day. She’d posted photos of it on Facebook.

Part of it is that you can’t find an absence. It’s difficult to search for… nothing. So by being offline I’ve literally taken myself out of the equation. Still, the newness of news is more fresh when delivered by the person who created the news, in person. I’ll miss that when I go back on. I relished the photos of the flooded basement while sitting outside on a sunny day at a beer garden so much more than in front of a computer on Facebook.

Don’t Call It An App

Posted by banane on April 2nd, 2012 — in android dev, facebook, iphone dev, Media, technology



Tell me what you think- wrote an article on “appiness” — no, it’s not a Cockney pronunciation of happiness, but the trend towards ever increasing complexity in online interfaces, that makes them ineffective and “appy”.

No Social Network Day 35: Mis-managing My Calendar

Posted by banane on March 28th, 2012 — in social networks

Just a quick note on this Facebook/Twitter black out. A couple of times when I show up for in-real-life event stuff, friends say “OMG I miss you!”, “My Facebook is so quiet with you gone!”, “I can’t wait until you’re back online!” It’s kinda funny. It’s odd because from my perspective, while I may have missed it initially, it’s back to normal for me. But I wonder if you’re on the networks all the time, someone’s absence is bigger than it seems?


Roman Calendar

So far, this social media blackout thing is great. Kinda don’t wanna go back. Why is it working out so well?

OK, there’s this thing my brain does that has always annoyed me, caused stress, etc. and lately it hasn’t happened as much: mis-managing my calendar.

I have a seriously hard time remembering a date/time. If it’s outside of a week, I will totally miss it/transpose it/forget it. Transposing is my favorite thing my brain does. Your concert is on Wed March 12th? I will show up at March 21st. Skiing on President’s Day Weekend, I will book the hotels for MLK’s birthday. Those are real life examples. When I’m showing up to a party, I will re-check my calendar multiple times. Problem is, sometimes I enter the date wrong in the calendar. In “calling to confirm” I convince people it’s the wrong date. Nothing is to be trusted.

You’re thinking, oh everyone botches dates. I’d argue that I botch them with almost persistent regularity. The funny thing is the knowing look on friends and family when I realize I have screwed up a date. Despite going to yoga and dance twice a week I still have to look up the schedule for when they start each day.

Adapting & Adaptations

I’ve consciously or unconsciously done the following to manage this:

Being spontaneous. Besides the regular occurring things, I keep it pretty open. Events are so stressful to schedule and remember, that I’m happier if there’s nothing scheduled. So I end up being a better “last minute” friend.

Associations: Birthdays are in months that are astrological, and I can remember those associating them to personality traits.

Regularity. Dance classes always on Tues/Thurs, yoga on Mon/Wed, etc. The start times are all different, but I just check those daily. You build up subtle clues to the day when you do this, on Thursday the Mission is full of people, certain friends are in the classes, etc.

Confirming. Calling before an event, emailing, etc. to confirm the date/time. Not having any ego about it, if I’m wrong, I’m wrong.

One Calendar. It’s the laptop’s, not the mobile or the kitchen wall calendar- there’s also a work one but I don’t schedule personal stuff in it. Making sure to enter dates (even if I do it badly, it’s 50% of the way there).

Off Social Networks

So what I realized recently is that being off social networks has helped extremely. I’ve only botched one date- my friend’s singing gig in North Beach, and it was salvageable. I wrote her asking something about it, and she wrote back immediately “You know it’s tomorrow right,” and “I know you ;)” haha. That was a case where I entered in my calendar wrong. My schedule has been as busy as usual but only messing up one event is really big to me.

I’m not sure why being off social networks has helped- the lack of distraction, or it could be that I hold in-real-life events as more important now because they are where I meet and chat with people. My ‘social life nutrition.’

It may also be that I don’t see the events in Facebook. As more of us start scheduling in there, it mutes the “chatter” of events that I’m not directly related to. If someone bothers to email or tell me personally about something, it’s that much more of a real invitation. A digital invitation, especially one shared out to one’s entire network, is less special. It may just b the “clutter” idea- lots of extraneous social information is competing with my adaption skills in calendaring.

Total aside re: Evite.
On the note of digital invites- I won’t attend anything sent by Evite. Why? Not because I’m just randomly picky, it’s just way too stressful. Evite allows you to invite people without putting the logistics in the email. This is nice if you are an organizer and don’t want “looky-lou’s” not committing and just looking at your guest list. But what it means for me, is that in the 5-10 times I look at the invite to confirm the logistics, I have to click through to the site. The problem is here: I have been online so long, that I have many email addresses. Longtime apps like evite have some old email in there, and it takes drudging up 10 passwords to register.