Christmas Traditions… it’s for us.

Posted by banane on December 16th, 2014 — in crafts, nostalgia

I talked to my sister yesterday, and she mentioned that our traditional Saffron yeast buns were the most popular at her kid’s school’s holiday craft fair. In that conversation we got around the crux of it: holidays are for us. Basically, as Swedes and as kids who grew up in a large, fun festive family, we enjoy the traditions probably more than the husbands or kids. And that’s good, since we’re doing all the work!

This yeast bun recipe is hard work- and I told her that- and was impressed that she “just whipped it up” in between doing other chores around the house. It involves making a bread dough, letting it rise for hours, then rolling them into shapes, letting those rise, then baking.

The smell of the baking yeast rolls permeating throughout the apartment is to die for. She mentioned that some of her neighbors- an ethnic mix of SouthEast Asian and Filipino families- remarked that Saffron was for rice, not breads. We joked that the 17th century colonialists screwed it up. Spice? Yeah, that’s for cookies and cakes, ha ha.

The holiday work I’m doing… bought the tree, decorated it, brought out the boxes from storage, cleaned up the house before decorating, made (cough, storebought) eggnog, sit with boo and go over the advent calendar each morning. Boyfriend just sits by in amazement at this activity for the normally lazy me. I’m not religious but bring out the crêche, tell the story of Jesus, and enact my little stories for each figure (to my son, of course haha). Make and send Christmas cards. Buy, wrap and send presents (14 recipients this year…) I caught myself wanting to buy a new ornament, a new Santa mug, etc. at World Market, even though I had to recycle about 30 ornaments.

One tradition my boyfriend may embrace- we’ll make little budy do the St. Lucia march to the parents room with rolls and coffee. Even though it’s supposed to be the youngest daughter, he’ll have to do. Wait, he’s 5 months, whoops. That may have to wait.

Review of Trader Joe’s Marinated Meats

Posted by banane on December 15th, 2014 — in food

I could write about something meaningful like Ferguson, but instead, I’ll review the marinated meat aisle of Trader Joe’s. I’m a working mom, with an infant. I love cooking, and have this idea of cooking for my small family each night. The reality, of course is “fend for yourself,” — FFY– eating leftovers or Mac & Cheese. I’ve started making compromises, in hopes of actually being able to do this more. So, introducing: Trader Joe’s marinated meats. It’s more expensive than buying raw meat and cooking, but does speed up (sometimes) the process. Here is my informal review. I live 2 blocks from TJ’s, so it’s quite easy. I’m also trying to get more experimental about spices and flavors. My default mode is: vinaigrette. So trying these new marinades is opening me up to new flavors. Enjoy, and please comment if you have ideas & suggestions.

Marinated Chicken Tenders

This was my first foray. Pretty good, and pleased with the time to make. Flavoring was OK, not spectacular (like below). I believe I served it with Trader Joe’s refrigerated dough biscuits (which were amazing, and a dessert for a few nights since), a fresh salad with – guess! – vinaigrette dressing, and kale. My partner loves kale, so just assume it’s with every meal.

Bulgogi

My favorite so far. Fast to make, very flavorful. Accompanied by rice, steamed string beans in vinaigrette, salad. So nice and fast to make. Easy, since I start the rice cooker, heat up the pan, and quickly fry the meat. And, wow, flavor. I serve with steamed rice, and it is a great plain accompaniment. That really set my expectation for the other ones. I’m a bit biased for bulgogi since my best friend growing up was Korean and her mom taught me this recipe, which is pretty complex, so I appreciate a good pre-made marinade. Served with it: Home-made biscuits that sucked, brown rice with wild rice mixed in, green salad.

Pork Tenderloin Peppercorn

My least favorite, this looked absolutely disgusting raw, and not much better cooked. And, it took forever to make. 20 minutes on the stovetop to “brown” (relative term, it went from flesh colored to dark tan), then in the oven for 30 minutes.

But how did it taste? Not as good as a pork tenderloin I had the night before. It is cheaper than the others- weighing in at $10 (1.5 lbs). Pork is so cheap, and I actually have some good recipes for pork, so I won’t buy this again. As pork goes of course, we got a lot of meat and it’ll be great for lunches. The flavoring was so/so. My partner loved it, I was not impressed. The problem with peppercorns is actually eating a whole one. So I did, a few times while I was cooking, testing the done-ness of the meat, and that skewed everything. Served with it: kale and fennel bulb roasted in- surprise!- vinaigrette, butter and wine (trying to mask kale’s bitterness), steamed brown rice.

Writing… Again

Posted by banane on December 10th, 2014 — in about writing

I’m going to resurrect this blog. I’ve been writing on Medium a bit:

Christmas: Wonderful and Depressing

How I Learned To BreastFeed

But I’m going to start writing on here, if but for only one reason- I love this Google font. Oh, and my cousin Lorrie has inspired me with her writing. And, I’m a mompreneur and full of advice.

Basic Android App

Posted by banane on June 15th, 2014 — in android dev, technology

Just wrote up instructions on how to make the most barebones Android app. Enjoy!

Code here.
Instructions here.

Simple example of scheduled, self-clearing Android notifications

Posted by banane on May 7th, 2014 — in android dev

Banana Alarm
I couldn’t find a relevant example of doing a schedule notification that launches the app, then clears it. Various bugs and design flaws in Google’s Android O/S make this needlessly complicated, in my opinion. In this, iPhone made it easy.

The basic functionality: schedule daily ordinal time (say, 10am daily) notifications. Upon click, display main activity and clear notification from the notification manager. Sounds easy right? Nope.

I found a good example here, but my notifications weren’t clearing. This solution of using the AlarmManager and Notifications is quite common- but doing both userCancel and loading the MainActivity are a little nuanced.

The general architecture is such: You’re going to create a scheduled alarm event, and upon that event’s firing, kick off a notification. Notification manager lists the notification. When the user clicks the notification, it will launch the app. The app will then globally erase all notifications, then reschedule them.

Questions you may have:
Why not just field the notification on app launch? Delete if necessary, instead of all of them? There may be a stack of notifications. It’s just cleaner to delete them all.

Why not just use the “auto cancel” feature of the notification builder? There are known issues in Android with removing a notification and also launching an activity upon click.

How to build this:

1. Create Alarms
In your MainActivity.java:

public void setAlarm(){ alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmIntent = new Intent(MainActivity.this, AlarmReceiver.class); pendingIntent = PendingIntent.getBroadcast( MainActivity.this, 0, alarmIntent, 0); alarmStartTime.set(Calendar.HOUR_OF_DAY, 10); alarmStartTime.set(Calendar.MINUTE, 00); alarmStartTime.set(Calendar.SECOND, 0); alarmManager.setRepeating(AlarmManager.RTC, alarmStartTime.getTimeInMillis(), getInterval(), pendingIntent); } private int getInterval(){ int days = 1; int hours = 24; int minutes = 60; int seconds = 60; int milliseconds = 1000; int repeatMS = days * hours * minutes * seconds * milliseconds; return repeatMS; }

2. You’ll notice we have a Receiver class. This is to handle the broadcast of the alarm. Create a new class AlarmReceiver.java:

public class AlarmReceiver extends BroadcastReceiver { NotificationManager notificationManager; @Override public void onReceive(Context context, Intent intent) { Intent service1 = new Intent(context, AlarmService.class); context.startService(service1); } }

3. This simply takes the intent and passes it onto another class we’ll make, the service class. Creating a service class (instead of just doing it on the onReceive()) enables it to work in the background.

public class AlarmService extends Service { private static final int NOTIFICATION_ID = 1; private NotificationManager notificationManager; private PendingIntent pendingIntent; @Override public IBinder onBind(Intent arg0) { return null; } @SuppressWarnings("static-access") @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); Context context = this.getApplicationContext(); notificationManager = (NotificationManager)context.getSystemService(context.NOTIFICATION_SERVICE); Intent mIntent = new Intent(this, MainActivity.class); pendingIntent = PendingIntent.getActivity(context, 0, mIntent, PendingIntent.FLAG_CANCEL_CURRENT); NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setContentTitle("Bananas"); builder.setContentText("get your bananas"); builder.setSmallIcon(R.drawable.ic_launcher); builder.setContentIntent(pendingIntent); notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); notificationManager.notify(NOTIFICATION_ID, builder.build()); } }

Some important notes:
Above, we “setContentIntent()” and that tells Android O/S what to load once the user clicks. Pending Intent has to have a new Intent(), and that will launch the correct app. There’s a conflict between AutoCancel and that working right, so that is why we do a global clear all notifications onStart() of the MainActivity.

Download Code

Sample code available on Github: BananeAlarm.

Gotchas:
– If your ordinal time is before the current time, it will notify immediately. This annoyed me, so I put some logic in to check if now() (another instance of Calendar getInstance()) is after setAlarmTime. Then, I bump it forward one day.

if(now.after(startingTime)){ startingTime.add(Calendar.DATE, 1); }

– Don’t put the clear and create notification cycle in onCreate() because of Android’s application lifecycle, you have a lot more control if you put it under onStart();

More Reading:
Google on Notifications
Google on AlarmManager

SF GoogleBus Appeals Hearing Recap

Posted by banane on April 2nd, 2014 — in local color, north beach

(Or, some other super sexy title).

SF politics- so interesting.

So, a few months ago the city transit board decided to respond to protests regarding the Google buses (all Silicon Valley employee shuttle buses- intercity, not intracity shuttles) by creating a pilot program. This program would charge the companies $1 per stop, per day. The stops were red-zoned, illegal spots, where usually Joe Blows get charged $271 for double-parking, stopping, or otherwise parking. The shuttles stop there for upwards to 15 minutes. The pilot program would collect data, so that later on we can regulate and enforce a better program. GPS’es on buses would make sure that they are stopping in certain stops. Those stops though- are similar to the ones they’re at now, in congested, high trafficked areas, etc.

There was an appeal to stop the pilot program, and this hearing was to hear the appeal, and from the public. Note, this is the first and only public feedback on any shuttle matter. Local districts heavily impacted by shuttles- the Mission, Noe and Bernal Heights- have not had any hearings. There have been talks between the local transit and the companies, but again, no public hearings. It’s caused unrest and simmering, and this has been the first “airing of grievances.”

The appeal is stating that there should be an Environmental Impact Review. The SF MTA (public transit board) states that there’s an exception here. It’s important to note that EIR’s aren’t just about birds and flowers and air quality but about how frequently and heavily used bus routes will be impacted, whether costs are involved to enforce, and damage to infrastructure (wear on roads & sidewalks, bike lanes, handicapped access, etc.) Safety, current programs, etc.. Various SF Supervisors asked questions- including, do we have a baseline? Is there any law somewhat similar to this? It’s a state vs. city law issue, and they city lawyers couldn’t find relevant case law.

via http://www.juliacarriewong.com

So just to repeat: intercity shuttles have been illegally double-parking. They’re called on it, and the city responds by proposing a legal pilot program with minimal fees. There is some talk about the illegal-now-legal issue. No statewide precedents on making an illegal activity a baseline.

Let’s talk fees. The legislative aide asserted that SF lost 1M a day, upwards to 200M a year, in possible collected revenues from the illegal parking. SF MTA states that the cost of their pilot program will be 1.5 M for 1-1/2 years. Just to frame this money, the SF MTA budget is 18M. Why were fees not collected? “Because it wasn’t a priority.”

A supervisor, Campos I believe, asked for a continuation. It was voted down. They took a vote on the appeal to the pilot, and voted that down. While some supervisors- Kim, Cohen, Campus and Avalos had lots of objections, only two, Campos and Avalos, voted for the appeal.

Apologies for typos and inaccuracies- transit policy/city politics is a hobby not a vocation!

More reading:
Google Bus Saga Continues: San Francisco Upholds Plan to Charge Shuttles Not entirely accurate, a bit biased towards Silicon Valley companies.
SF supervisors reject challenge of Google bus pilot program Biased the other direction, perhaps not as easy to interpret for out-of-towners.
Supervisors deny appeal of SF commuter shuttle fee program The most balanced report – from SF Examiner (of all things)

ThinkNote: Make Music With Your Mind

Posted by banane on February 11th, 2014 — in technology


Went to the best hackathon ever last weekend. Why? A combination of invention, skill, participation and sheer nerd energy. And a buffet (well, I am pregnant…). And, well, I really love the app we made.

“ThinkNote: Make Music With Your Mind.” Yes, that’s right. Depending on how you control your thoughts you can compose music. Electric brainwaves, picked up by the NeuroSky headset, transfers via bluetooth to our iPhone app, which converts the values to different sounds, and scales. It is very fun to play (or think?). We used a modicum of music theory and applied it to some composite algorithms from the NeuroSky API- namely, “concentration”,”meditation”, and blinking. As you concentrate more, the violins climb the scale. As you mediate more, the deep tones become enhanced. A blink clashes the symbols. It ends up sounding like the theme to 2001: Space Odyssey.

Isn’t that freaking amazing? We wrote it up in one day. Started at 10am, demo’d successfully at 6pm. My team: Stacie Hibino, software engineer at Samsung, Kyle Mock, my business partner at PickAxe and design/UI guy, Estelle Weyl, HTML5 expert and front end dev, and me, mobile engineer.

In reality, the process was something like this. We sat around wondering what to make on Friday night, from 8 to 10 PM. We played with the NeuroSky- Stacie had used it before- and noticed that when we’re playing Flappy Bird, our concentration goes way up. It’s also hard to understand feedback while you’re doing something else, because that creates a feedback loop. So, we went down the road of, well, a sound feedback would help, you could watch something and hear your levels. Then we toyed with other ideas: a meditation helper, a remote control game using the NeuroSky, etc. We went to bed that night still not deciding, but we had a lot of ideas. The next morning over bagels and hot sandwiches (food was top notch), and a good night’s sleep, we agreed that we’d start small, associating sounds, work up to some other ideas.

As hackfests go, of course it took all day to build what we thought would be easy! We spent an hour or so customizing a sample app from NeuroSky, while another built a simple sound feedback app. We merged them, and started testing simple sound playback from the NeuroSky. We tested single sound, continuous sound, and then overlapped channel sound.

We realized we wanted some visual feedback so we worked hard on radiating circles, but that wasn’t working so went back to squares that fade between colors (easy in iOS). Up until the last 5 minutes, we were coding UI changes, integrating graphics and adjusting the look and feel.

Our demo wasn’t hot- our backs were to the audience, for some reason the “blink” wasn’t working on my phone, but worked on Stacie’s. Our crowd seemed sympathetic. It’s a raw creative tool, and we intend on some improvements before we put it in the store:
– record and save, and share to social outlets “A song while I was thinking about you,” essentially.
– record your own sounds for input – small half second tones can be used to make custom music

Notes on the Hackfest
Overall the hackfest was great- there were little groups, a few sponsors offering loaner materials, from a pedometer, heart rate monitor, print-and-go api, and at&t’s medical cloud platform. There was continuous food; this is a problem at a few hackfests where food runs out, or you are given one choice – hot dogs. I actually packed snacks with me because of food limitations since I’m pregnant.

It was also a great hackfest because of diversity. I estimated half the teams were co-ed. Almost all teams were people of color, with very few exceptions. It was on the Peninsula in the Bay Area, so we got a nice mix of SF and Silicon Valley folks. Lots of kids were there- we were pitched pretty hard by a 9-10 year old girl who wanted us to help her make a pet-finding platform.

There was a bit of a learning curve with most materials- Arduino, for example- but it was a very friendly space to try out new things. My one suggestion would be to have some intro tutorials on materials offered in some of the conference rooms.

There were only 20 or so demo’s, and it was one of the best demo rounds I’ve seen in a while. Perhaps because of the learning curve, almost all demos worked, and just the fact that it was hardware, and multiple device made it fascinating.

The location had great parking, and in general nice workspace. NestGSV hosted the hackfest, and there was plentiful chairs, tables, work areas, etc. One suggestion in the future: childcare, and someone cleaning up. For some reasons hackfests always have an issue with the inherent slobbiness of nerds!

Pregnant & Entrepreneur = Pregpreneur

Posted by banane on January 15th, 2014 — in feminism, technology

First trimester in Vegas… a bit hard.

Standing at a conference all day, during first trimester, isn’t fun. Your business partner doesn’t know because you and your boyfriend have decided not to tell anyone. You’re not showing, but beyond exhausted and nauseous. I power-napped in the hotel hallway. I started with caffeinated tea, and then moved onto the hard stuff – evil coffee. It wasn’t great networking-wise to miss out on happy hours to sleep. Walking through smokey gambling halls was a definite low point, but walking along the Strip was really entertaining. In general, of course, Vegas is not great pregnant.

“It’s really hard to find maternity clothes that say: “CTO.” “

Our first client, Women2.0, hosted the event at The Bellagio, and the catering was top notch, which is great when your palate is changing and you have no idea what is going to sound appealing. To save on costs we drove down and back, and the long freeway drive was wonderful to start fantasizing about child-to-be. And, a great time to sort through our new contacts and work on marketing strategies.

These things lined up for me in a way I can only express as “timing”: months of introspection resulting in a business idea- PickAxe Mobile, fast, inexpensive mobile prototypes for entrepreneurs. And, then, realizing I’m pregnant in an unplanned way: getting laid off work, having fun hiking local parks in the Bay Area, and a few vacations to New Orleans and Southern California resulted in a delightful surprise. The anxiety of genetic screening coincided with long conversations regarding our Articles of Operation.

Some small issues have arisen – it’s really hard to find maternity clothes that say: “CTO.” Luckily a trip down to Cupertino’s Target had great working mom outfits, in suitable blacks and grays. Zulilly, while it took a long time to ship, helped out with some nice professional styles from London (at a great price). With a colorful scarf or footwear, I can rock a meeting. Working in our co-working space, I just remember to bring mozzarella sticks, crackers and a big water bottle. Lots of meetings occur over drinks, but a lime and soda works great, and looks grown-up.

Starting a company at this time comes with some perks- friends and acquaintances are understandably more interested in a new person in the world than a new company. In a time of hyper-networking over free infant strollers and onesies, we also get the word out about our very new value proposition. Community takes a front seat during a pregnancy. For a services-based startup, community is all you need, want, or should have. It’s turning out to be a very natural combination.

Second trimester- much easier

I recently fantasized about working at a 9-5 with real maternity leave. I could zone out all day on BabyCenter and Pinterest. Just a few hours later I was eating lunch at Facebook with a friend, and looked around. The sheer amount of “at your desk” time, even at a great solid company like Facebook, would drive me mad. It was vital to take a few hours off to nap my first trimester. And it’s really awesome being able to leave at 4pm to walk for an hour, and pick up at 6pm until 9pm coding. Getting in an afternoon swim- a regular occurrence. I love the freedom of my own schedule, especially at this time in my life. Sure, CEOs like Marissa Mayer have a daycare in their office, but for working grunts? It’s not ideal.

Professionally, I’ve noticed also that I’m a lot more focused on what’s important. Priorities are easier to line up, and everything seems clearer to me. I think having a big life occurrence happen does that to you- also being an older mom. Things seem less scary and more predictable, and thus do-able. Recently a friend suggested we make a “techie working mom’s, who drink, have coffee, and live in SF” mailing list. I’m secretly creating a list of friends in their 40s/having a second kid in SF list, especially if they’re techie. One of my developer friends does all the iOS apps at BabyCenter, now that is hooked up ;) He hears me regularly kvetch about features. One of my app biz partners is also a mom of a 2 year old, neighbor, and thus one of my best hand-me-down sources. As I said, it’s all about community.

I think starting a business at this time isn’t necessarily wise… in fact, if I hadn’t run a successful consulting business, and later a profitable blog, I’d be at a real disadvantage. But that stands for anyone starting a business. If you’re not ready, you’re not ready. I was getting some free CEO coaching from my brother, who also had a child during one of his successful endeavors. He told me in all sincerity: “Good timing.” My mother (mom to 5 kids) had her own business most of my childhood, and I grew up in it. I honestly think that for me, while hard, starting a business has an energy and creativity that’s totally natural. By the way, usually conversations with my mother start off with pregnancy and end with financial business advice.

Chicken Pot Pie, and other uses

Posted by banane on January 9th, 2014 — in food

My New Year’s Resolution was to be more thrifty. To this end, instead of buying a few chicken breasts the other night, ($11-15 at Trader Joe’s) I bought a whole chicken ($8). Then, ended up stretching it to about 6 meals, not exactly on purpose.

Meal 1:
Roasted chicken (Rinse chicken, cover with olive oil, salt and pepper. Place in oven for 45 mins.)
Instant mashed potatoes
Green salad
Steamed veggies
ready to eat turkey gravy (trader joe’s)
Served 2

Meal 2-5: Chicken Salad Sandwich lunches
Pick out some meat from carcass, mix with diced artichokes, mayo, mustard and relish, toast some bread, put lettuce on bread, put salad on top. Voila.

Meal 6: Chicken Pot Pie- serves 6/8
(Variations from Joy of Cooking)
Pick all remaining meat from carcass.
Sauté chopped 3 medium carrots, 1 large onion, a few small red potatoes, 1 large apple in olive oil.
Boil water with carcass in a saucepan. Once carcass is clean, remove, add a few tablespoons of sherry, salt, pepper, strain through cheesecloth. (After the recipe I still had 2 jars full of broth!)
Make quick biscuit dough (either from mix or scratch)- flour, baking powder, salt in bowl, cut in 1/2 cup of butter. Add 3/4 cup of milk. Flatten or roll out.
Combine meat, veggies, gravy, some plain yogurt, leftover gravy from first dinner, and a cup or two of broth. Put biscuit on top. Brush egg yolk on top. Cook at 375F for 1/2 hour to 45 mins, or until top is brown.

My mom asked me how long it took- I said, “Not all of Fresh Air,” – to be honest, I got in the zone a little and wasn’t rushed.

Starting a Business

Posted by banane on December 3rd, 2013 — in technology


I decided a month ago to start a business. The funny bit is that my business partner and I had been collaborating for a while- we both worked closely at two different jobs, and many projects together, before deciding to “go legit.” We already had clients, even. We just hadn’t done the paperwork.

Between jobs last transition, I thought I wanted to start a business, but didn’t have any idea of *what* kind of business. I went to networking events, as a founder/CTO, hoping to be inspired. I went to a lot of them. I remained uninspired.

Then, like all big life transitions, you realize that it’s staring you in the face. I actually had clients that were still in the limbo state I had left them when I took my last job. So, we picked up right where we left off. I think, in retrospect, my last two positions were actually training grounds for this venture. In a weird way, it all cosmically made sense. Not that the road isn’t rocky. I was very down yesterday– I admit it– and wondering if this was the right decision at all. In a way that’s what makes partnerships great, he reminded me that we had such a great run of it recently, that this was a bit of start-up reality soaking in. Sometimes things don’t always go your way, etc.

And, it’s not all an accident or unplanned. I had conscientiously been building up resources and connections, people who I wanted to work with for x,y,z, all those things that prepare you. Now that we’re in the midst of it, it’s still overwhelming and there’s so much to do. So this isn’t some kind of triumph story, it’s definitely still a struggle. And I always question our value proposition, wondering if we should pivot, if we are viable, etc.

I don’t believe in the “you’ll find work doing what you love” life coach ideology- I would sit around eating cake and watching TV “for work.” I do enjoy helping people out with my skills, and building tight little good-looking prototypes.
Also, if you really want to do something, I do think everything ends up being easy. We had our first app launch, and I had a lot of jitters. I had to seriously convince myself that there was a small possibility everything would be fine… and it was. In fact, the users were more engaged than I’d hope, usage was higher, and we were able to live deploy about 5 changes during the launch. (Our strategy was to build an app that could be modified during launch).

Starting a business isn’t for everyone- I occasionally long for a situation where I can just show up at 9am and get paid, instead of wearing 5 hats. But it is nice to put into practice what we’ve observed, learning from errors and successes alike.