You are viewing [info]winterazalea's journal

entries friends calendar user info Previous Previous
winterazalea
Add to Memories
Share
I am frustrated and have nowhere else to turn but the journal, so here I am.

I am upset by laws that do not take into account edge cases. For me, a legal system ought to be like a well maintained, well designed code base - they are really quite similar, dictating what happens in various scenarios, how to keep things working, and what to do when things go wrong. But politicians are like beginning CS students; they code for the obvious and completely miss the edge and corner cases. They rely on "democracy" to fix things; but when a small minority is ****ed over, their voice can never be loud enough to point out the issue.

Two big examples come to mind. One you've heard me blab about before; if you have feast and famine years in terms of income, your tax rate is unfairly too high. The system assumes you'll have a steady salary by a long term employer. If you work for a year at a high salary, and quit to take several years off to try to make a difference in the world, and you repeat this, the government essentially rapes you in taxes.

What is pissing me off this morning is drivers' licenses. You can not have a driver's license in more than one state; I learned this suddenly and heartbreakingly when the lady at the CA DMV snapped up my florida's driver's license and hole punched it. This is presumably "for your safety", a sort of Ayn Rand mini-nightmare, due to http://en.wikipedia.org/wiki/REAL_ID_Act. So here's the problem; suppose I wish to spend extended periods of time in NY or Pennsylvania (this is a real concern coming up in my life). Or even say I wanted to have a summer home in an east coast state, and a winter home in a west coast state. Legally, every time I switch states and stay there for more than 10-30 days, depending on the state and its temperament with its budget (welfare states with broken budgets seem to demand switching towards the 5-10 day range), I have to change my license. If I fail to comply, then if a cop ever pulls me over I'm at his whim and mercy as to what happens to me for driving with an "out of state" license. Flipping licenses every few months is ridiculous! And worse, in states like California, it can actually be impossible: the time needed to get an an appointment to get a license may take several months (which given its 10 day requirement to change license means the law is setup to force you to break it at least temporarily; and if you're always having to surrender this long-sought card then indefinitely).

What's the simpler fix? For national security, require a ****ing national security card; it's as if these people have never heard of orthonormalization in their life (social security number anybody?). The conspiracy theorists are rightly frightened by a national id system, but guess what folks it's already in place implicitly, so go ahead and make it clear. For driver's license, either have a national driver's license or leave it up to the states to control licensing for drivers. They may honor out of state licenses temporarily; but they should have no right to cancel my driver's license in another state, especially in situations where I am legally required in that state to have said license when I get back there.
Add to Memories
Share
Another technical post I'm hoping gets into the google index, since I had some trouble with this. At the end of the post I list arguments to top and ps useful on android for finding and debugging native memory leaks on an unrooted vanilla phone attached via adb (at least it worked on my Motorola Droid 2 standard issue from Verizon).

Some background is relevant, though I suspect you could find better by googling for it:

I specifically do not run a rooted kernel, like cyanogenmod, because when I'm developing my apps I want to run them in an environment like what my users will have. This has actually been important in a number of ways. In cyanogenmod, for instance, if you have a native memory leak the kernel will start killing processes to open up memory. Instead, On a vanilla android kernel, at least in 2.x, the phone will just freeze, and then reboot. Things also run a lot slower on vanilla android, so it's useful for ensuring you optimize to the proper degree rather than for the pro device and setup you have and your users don't.

Android, at least 2.x (most phones today), is very poor about managing native memory. Most android developers don't need to worry about that though; if all of your code uses "new Foo();" in Java land, you're fine. But if you're using somebody's JNI native library (we use libgdx for graphics and game stuff, for instance, which has native libraries), then they're using C++ new, and that has to be delete'd properly or you get a leak. The leak is not in the dalvikvm, but rather in the process housing the dalvikvm; as such your normal tools like ddms, or even querying memory stats yourself via things like Runtime.freeMemory(), will say everything's fine and not show the leak, even though it's bubbling up behind the scenes, causing all sorts of trouble.

Because standard tools are out, the best you can do is drop to a shell on the device, via "adb shell" on a connected device. There's frustrations though when you're not running a rooted kernel:

$ man ps
man: permission denied

:)

Also, the android variant of most unix tools follow conventions I'm not used to, and googling is not very helpful. So here's some tips I found for at least identifying that you have a native memory leak (if you have tips for me on how to find the leak without rooting my phone please share!)

1) "ps"
lists all the processes on the phone

It's a pretty damn long list, and if your phone is slow like mine, will take whole seconds to flood your terminal. Do that once and trace down the "PID" column to find your process (I copy and paste to an editor and text search for my com.whatever.foo package, since 'grep' is ALSO permission denied). Suppose the number was 123.

Now you can do
ps -p 123

and it will just spit out just your process. If it doesn't have your package name, you got the wrong PID; try scanning that big print out again.

The things to be looking at are VSIZE and RSS. Read any introductory text on virtual memory; the first is the virtual size, the second the resident size. Steadily increasing virtual size over time is the best measure of a memory leak. Try using your app and executing the ps command, and see if certain actions cause bumps in VSIZE; you'll then have to puzzle out if that increase was in fact a leak (instead of a momentary spike), and if so how your action trickled through your code to cause it.

Unfortunately VSIZE and RSS are given in "pages", and I never found out how big a page is on android, or if it's even the same number from one device to the next. It's also kind of annoying to keep typing "up, enter" to keep running ps. As such, for bigger guns, we go to:

2) "top"

Like ps, but keeps printing process lists repeatedly, sorted on some key. Handily, prints vsize and rss in kilobytes, instead of pages.

The magic command is "top -h" from the command line, to find out how android top works, since man is locked and top works very differently here (at least compared to my ubuntu top).

The magic command I settled on was

top -m 20 -s vss

Which displays only the top 20 of the bajillions of processes running, sorted on vss (like VSIZE in ps). If you have a massive memory leak, the kind that restarts the phone, you're going to show up (at least over time) in that top 20, and you can watch yourself grow. If you're not in the top 20, increase the m parameter, or possibly sort by something other than vss.
Add to Memories
Share
You may not be like me, so this may not be a familiar experience for you. But I run into this constantly. There I am, at dinner, at church, walking along the sidewalk, where-ever. And I run into somebody I know. What is her name?!! Oh God she's waving at me, smiling, she's diverting course, conversation imminent. Quick quick quick quick what's the name what's the name. She has three kids, she lives on Virginia street (mentally point to it in my head), I've been in her house, she studied physics at University of Washington, her parents as it turned out live in the same city as my parents, she likes gouda cheese and laughed at my sofa joke and her favorite color is green and her blood pressure is high. Oh, and her husband's name is Jack and they have a pet terrier named Cuddles.

But what is her name?!

The converse of this is when I'm talking to my good friend Chrix. Chrix and I went to college together, Chrix knew everybody, _knows_ everybody, keeps up with everybody, and he's big on names.

"So I was talking to John Smith last week - you know John Smight right, he was in Math 102 with you Sophomore year?..." [Awkward Silence.]

I probably know John Smith very well. But not by name. Give me a face and maybe. Put me in a room with him and I could tell you all sorts of things about him. But just by name? No chance.

It's not just people's names I have trouble with either. People ask me what I read; and to the extent that I do I can't tell you the title of the article or the book, just what was in it. People ask me what music I listen to. I can't tell you the titles of the song or the artists that made them. Music is particularly difficult in the age of the internet; I don't listen to music with lyrics. I can't go to Google and search for "p-p-p-p-poker face." If I tried to search for music or talk about it, it's more like https://www.google.com/search?q=dunh-da-da-dun+dun+dun.

I love google products and use them extensively. But this is a big reason why Google products fail me when they do fail me. I saw this with Gmail while I was inside Google. Other people there - most particularly my team's PM - would say "why don't you just search for it?" I can never find an email I'm looking for in Gmail by searching for it. I don't remember the subject, I don't remember exactly when it was sent, I don't remember the name of the person who sent it, much less their @name, and while I remember what was said in the email I don't remember the exact words they used, much less a clean phrase that could resurrect it immediately. Tags are useless; what I might tag one day as "coding" would occur to me on a different day as "programming", or "C++." Google wants you to search for everything; and search is useless if you don't think in terms of names.

This is also one of many reasons I'm very frustrated with Chrome. But we'll get there.

Another problem with Google is that the same browser can't be logged into two different Google accounts with any reliability, so you have to use two different browsers to be logged in to two different accounts. Yesterday I cleaned up 100 tabs in my firefox browser, which I use for work. Those tabs all got turned into a nice bookmark tree to the left side of my browser, in addition to several bookmarks already tracked. How do I use my bookmarks? Not by name, not by search. I remember the icons mostly (admittedly problematic on a site like code.google.com, where 20 different things all share the same favicon). When I see the bookmark name I remember that's exactly what I wanted. I leave the entire bookmark tree expanded, and a mixture of positional awareness (I can remember where something was on a page), hierarchical flow ("Coding" folder -> "Java" folder -> "that thing I have in mind which I can't remember"), and full spread scan (think Mac's Expose), gets me where I want to go in a few seconds and one click.

Chrome, in this regard, is busted for me, and hours of searches for an extension or a work around have failed me. I use Chrome for all my personal stuff on my work machine. Despite 5 years of a sizable number of customer complaints (http://groups.google.com/a/googleproductforums.com/forum/#!topic/chrome/sRcbZMaapTY - and no I'm not sixfootjames, though I do find him hilarious) Google devs seems to think the only problem with their bookmark UX is that people can't use tags (a Google favorite) and that there aren't more routes to add bookmarks to the mess (http://dev.chromium.org/user-experience/bookmarks).

In Chrome, I'm limited to a handful of inadequate bookmark folders across the top of my screen (even on a very wide screen my "PhilosophyAndReligion" turns into "PhilosophyAnd..."). Subfolders remain hidden from view, and require quite a lot of mousing around to enter and exit - as with the Windows Start bar, heaven help you if you're 3 levels deep and accidentally mouse out of the tree or you have to start over). I'm limited to a few folders, or I exceed the width of the screen; and this is very fragile against resizing the window. The system is little better than leaving all my tabs open (except that in Chrome this is a ram nightmare). I certainly can not open all folders simultaneously and let my subconscious follow all the pathways and icons and pick out the entry I was looking for.

And I believe I can tell you why, extrapolating from my experience there. Google doesn't think like you and me. They would never take 4000 bookmarks and organize them into a tree - or even a DAG. That's very 90's Yahoo. They would add a search bar and expect you to think in terms of the search terms that would bring up that page you want. Except that doesn't work for someone like you and I, and so there's no point in bookmarking; we must on chrome be content with visiting only an exceptionally small universe of things whose name we do remember, and for the rest bookmarks are replaced by merely visiting google.com, sometimes over and over again for minutes. That's supposing we even remember something exists and that we should be looking for it. And if there were related bookmarks in the folder that go with it?...well too bad for you.

And so you and I are stuck on that sidewalk smiling and saying hello to that woman, unable to find what we're looking for. And we must eventually break down and say, for the umpteenth time: "I'm sorry, I've forgotten your name?"
Add to Memories
Share
For those expecting more of my personal life, this is not the journal entry you were looking for ;). This details a rather esoteric, super nerdy matter of interest to programmers (Vim editor only): How do you easily convert from hacker case to camel case?

I was not pleased with the state of Google search results on this matter so I wanted to make a journal post - sometimes this tactic actually puts my post in the search results and helps other people down the road.

First of all, Google does not seem to know that "hacker case" is a valid name for what other people seem to call "underscore case", e.g.

int num_monkeys_in_a_barrel = 0;

In my particular case, I was looking at 10 such variables, and I wanted a quick way to create camel case getters for all of them in Java (yes, I'm aware that java variable names by convention aren't ever in hacker case).

My solution was to create a pretty extensive macro by writing the getter for one of the variables and then applying it to the other variables. I won't discuss that here. But a critical step is how to automatically convert some selected text from hacker case to camel case, since you don't know in a macro how many '_'s you're dealing with.

Firstly, you may be interested in http://vim.wikia.com/wiki/Converting_variables_to_or_from_camel_case

I took a look at all that and must admit it was too much for me to grok once they got to the k's and @'s.

In my case a much simpler regex was all that was required. Merely line select the text you want and hit colon (bringing you to :/'<,'>) and enter the following

:'<,'>s/_\([a-z0-9]\)/\u\1/g

Breaking that down, we (s)ubstitute any '_' followed by a-z0-9 (I suspect a \w or something would have been a better choice), surrounded by () so that the regex knows to remember to it; then replace that text with an (\u)ppercase version of the (\1)st group mentioned in the matching section (our a-z0-9 match). We do that (g)lobally, to hit all such matches.

Happy hacking!
Add to Memories
Share
Some of the reason I started a business was to see if I could escape a question that seems to dog a moral member of a free market society.

I have heard variants of this question asked so many times: why do businesses always toe the line of being evil? Why are they always testing the limits of where they are told they can't go?

The answer to the questions is actually very simple; it is a mixture of (A) basic math and (B) a simple philosophy.

(A) The math sits in a chapter of most high school math text books, that nobody ever reads because it's not on the curriculum. It's called "Linear Programming." In any system with limitations, like laws or rules, and an incentive to maximize one's position in that system, with rare exception the correct solution always rests just shy of breaking one or more of the rules.

A simple example involves highway speed limits. On the one side you have a law of physics: it is impossible to go less than 0 miles per hour. On the other side you have a man-made law, the speed limit. To simplify this, let us also suppose you're followed by the town sherrif who is a jackass about enforcing the law, but just and exactly the law. You have those two constraints - 0 mph and the speed limit. For an incentive, let's suppose you're trying to get somewhere as fast as possible, and your car and capacity to drive it exceeds the speed limit in potential speed. The solution is that you are going to go the speed limit, and not one mile per hour over. A speed limit, for most people, is not a theoretical upper bound, but an actual speed that everybody goes, because the best strategy under that rule is to go exactly as far as the rule will let you and no farther. (Yes yes, we all go 'slightly over' actually, to the real rule - whatever the cops actually enforce).

In business it is no different. Businessmen have an incentive to maximize a variable or two, and they are given a system of constraints, namely what the market will tolerate and what the law will allow. The natural conclusion is that they will drive their business as close to those constraints as possible, risking exceeding what the market will sustain, or risking breaking the law in doing so.

(B) The math thus segways into the philosophy. The variable they are trying to maximize is wealth. I have been despondent about the direction of my video games business lately, and have been talking to a lot of people about what I should be doing and how I should be doing it. My business friends - especially Boris, Noah, Calvin, and Tien Anh - have been extremely helpful in laying out for me a common philosophical basis that most businessmen follow. If I may grossly synthesis and paraphrase, it works something like this:

1 Value generation is what benefits society.
2 When wealth/profit is maximized, the greatest value is generated; and thus this is the best strategy for benefiting society in a free market system.
3 Any given person in a free market system should be trying to maximize their wealth, because of (1).
4 The point of a business is to maximize that business' profits, because of (1). This in turn maximizes the wealth of the company's investors and its employees.
5 If the assets of a business can be used to make better profits in a different mode, the business should pivot into that mode, because of (2).
6 If a business is unable or unwilling to pivot a human asset to where he or she is reaching his or her maximum wealth generation potential, that person should move to a new operation that does so (e.g. take a new job).

Tenets 1 and 2 are the big ones. There are greedy businessmen out there who are nasty, but I actually don't think most of the "1%" are actually that bad. They honestly think they're champions for society, making progress and moving society forward. For them, maximizing wealth is value generation, and value generation is helping society; and there's nothing wrong with going up to the line of the market or the law, any more than any of us feel bad about going the speed limit on the high way. I had the misfortune of attending the opening class of Harvard's Economics 10 my freshman year, at the time taught by Martin Feldstein. I was grinding my teeth so hard in frustration that I would have left but I was cramped into Sanders Theatre and it would have been extremely conspicuous while he was talking to hop over 20 people and leave; but after that first lecture I dropped the course. He spent the whole lecture explaining why the Soviets failed because their system of comrade helping comrade didn't work, and about all the benefits and wonders of every-man-for-himself dog-eat-dog unrestrained Free Market economics, like some kind of carpetbagger snake oil salesman. I'm no Commie - but if you're telling me the right life is to not consider my brother, but instead to screw him over because that's what's best for him, I will punch you in the mouth.

Needless to say, I have a much more pessimistic view on the "benefits" of business for society. In an unrestrained economy, with neither law nor ethic to bind, the businessmen will take the Market's constituents and take them just to the breaking point of debt and frustration and addiction and unnecessary materialism, all under the delusional philosophy outlined above that they're making the world a better place by doing so.

So there's the problem with me running a business in the United States, year 2012. I'm certainly not trying to maximize profit or wealth. There's tons of money in this space - Zynga just bought a tiny mobile game for 200 million dollars - but having worked in this space I'm not interested in doing what it takes to tap into that. To make money, your focus needs to be money, and not games or enlightenment or compassion towards others. I've seen this, in all the "opportunities" I've passed on. The money is made when you go as far as you can with packaging malware into your apps - "it's not illegal!" The money is made when you go as close as you can to casino style games without getting labeled online gambling and shut down - game addiction is real people. The money is made when you take people's pre-existing games and steal them part or parcel (http://www.flesheatingzipper.com/gaming/2012/01/is-zynga-really-ripping-off-tiny-tower-really/, http://www.iphonedevsdk.com/forum/business-legal-app-store/99361-copycats-also-mac-app-store.html), since our patent system is so busted that big corporations with stupid software ideas like one-click get patents while small guys game ideas' are essentially unprotectable.

The money is made when you play marketing and psychological games with people to get them to sign up for things they didn't actually want or do things they didn't actually want to do. And this is true not just in games but just about anywhere in America. Just walk into any bank and try to move some money around and you'll see what I mean, offers for this and that and the other and a whole bunch of crap unrelated to what you went to the bank for. I had a friend quit Macy's because she joined to sell makeup and was suddenly at a beauty desk trying to get people to sign up for a credit card to buy their lipstick. My brother-in-law worked for a short time until he couldn't stand it walking the floor of Sears attempting to get people to go somewhere else in the store and buy something they didn't come in for. I had to go the doctor today (stroke symptoms, but turned out to be RSI + my ongoing, hopefully-not-serious headache and cognitive problems), and in the waiting room of the sick and dying they had a medicine promotional display that looked like a Dior gallery (http://www.butterboom.com/wp-content/uploads/2009/08/CD_Beauty_butterboom_2.jpg).

The problem is that point number 1 above is just not true, and even when it is, unfortunately point number 2 often does not hold either. When you're thrusting upon someone something they didn't want - I curse openly everytime I open the mailbox these days - you have not generated value for them, or if you have you still have failed to benefit them in a way they would agree was a "benefit." Businessmen walk up to a give a penny take a penny and take the whole bucket, because that's what maximizes their variable, it's technically allowed, and that's their entire focus. Indeed, as my friends both Noah (http://anoaharc.com/on-financial-inequality/) and Boris point out, if a businessman is not doing every inch he can to survive, he will likely fail, because competition is fierce.

However, I don't have all of the answers, and I've been pretty frustrated lately inside my head on what to do and how to do it. I formed a business, even though I'm not pursuing with it what either the government or business majors would consider "business," to enable my freedom to become a better person, and to make the world a better place. But:
A) I need money to survive - and I have been losing money hand over fist for the last 8 months
B) I am unwilling in games to do what is in my power to make money
C) I do not have enough help or talent to make money with games in a different way
D) I can not acquire that help or talent, because I do not have the money, and I can not get funding either. The funding trouble is not because the business guys and I don't get along in ideology, but merely because of simple mathematics: somebody else's venture is always going to be the right investment for someone trying to maximize wealth, because they're willing to make more money than I am, and thus offer better returns on that investment.
E) I am unwilling to pivot out of games, because I will just end up back in the spaces I'm good at making money in but in which I'm otherwise totally miserable, and because on a religious level this is where I feel like I should be for now.
F) All the while I'm pursuing this, my skills and knowledge in other areas is atrophying.

Much of this came out - some of it nacently - in my dinner with Noah and Calvin. They told me I was trying to maximize too many variables - and some of those variables I'm not even touching in this post - but it certainly is true. In the very least, I'm reminded of the old Bible quote: "You can not serve both God and Mammon." If M = -G, and your utility function U = M+G, linear programming breaks down; U=0 always.

This would suggest that the right path for me is a traditional holy one - Noah suggested I consider giving up business and becoming a monk. I took a trip to the Coe wilderness last Sunday - and that was a trip let me tell you, wading through rivers with my shoes off, pursued by mountain lions, pulled over by the sheriff, but maybe I'll save that all for another time - to toe the line at going into following the Desert Fathers. But this severely scared my girlfriend, and her rationalization I think was the right one: the point of life is not to recede from the world (vacations and sabbaticals are ok), but to attempt to do the best you can, helping and living in the world.

I just don't know how to proceed; and at current speed and trajectory I'm going to crash soon.

In Spring of 2007 I was introduced to Confucius by Professor Puett, in a law school class. He had a grand lecture, in which many things were said. One of these was that, whatever you're doing in life, you shouldn't be doing it on the weekend, supported by something unrelated during the week. Whatever you do with your life, that should be your all, because otherwise you won't succeed (and of course, giving your all is also consistent with linear programming maximization). After class I sent him an email asking him how this was supposed to be pursued in practice. I never got a reply.
Add to Memories
Share
I seem to remember that 3/16 was the birthday of somebody special, but I can't remember who. Was it one of you guys? Anyway, happy birthday somebody!
Add to Memories
Share
While programming for Android today -- and I don't know how my mind made this connection, it's not like Android's _shit_ or anything, or my _life's in the crapper_, just a complete non-sequiter -- I found myself contemplating eco-friendly toilets.

You know, the ones that never flush right and which people make fun of in all the cartoons and sitcoms.

The basis of these things is that they use less water and so they're better for the environment. And it occurred to me - the most eco-friendly toilet solution has been known for hundreds of years, ye-olde-smelly-midden-heap. It is precisely this cutting-edge heap algorithm which I believe back's Android memory management and reclamation (did I ever tell you that once I went to make a phone call, to discover that Android had reclaimed the Activity responsible for doing the microphone, so nobody could hear me until I restarted?)

While I was thinking on the john, I considered the problem with this, why people had moved away from it. Clearly the problem with it was the sight and the smell. I'm talking about Android programming of course.

No, seriously, I'm actually talking about outhouses, which is where people go to poop (instead of in-house, which is what Google calls it when it packages poop at the 'plex and pushes (really hard) out to the world's devices). And I had a great idea (switch to ios?) - what if there was the equivalent of a gigantic gear beneath the toilet seat. At any point you essentially poop between two prongs of the gear (my mind, how did you come up with this! Surely via no real world software example), and then to flush you just turn the gear until the next cubby hole between the gear prongs opens up. Today's technology could presumably make this air-tight, and lightweight enough that even the infirm could crank it. Or maybe it's electric and turns for you. It's a zero-water solution, even in the automatic case, yielding so many benefits (I'm pretty sure I've written a journal post about a certain dreaded automatic toilet at Google - no not their perforce repository, another one - which was over-exuberant in both its premature-ejaculative alacrity in auto-flushing and it's water pressure and usage, a truly surprising and messy combination - but I can't seem to find the entry...).

The problem of course is, eventually you go to turn the gear and you get a nasty surprise (have I mentioned how often Android crashes...). But, with a long enough rotation cycle (raise your hands if you're on Android 2.x?) perhaps the poo could have composted by that point. Or perhaps there's a true outhouse style hole a 180-degrees-turn along the gear that mostly everything falls into, and you just have to worry about the poop-smear remains (have I mentioned what's left when Android uninstalls an app? And how it provides no mechanism for the app to cleanup after itself on uninstall?)

Anyway food for thought. May your mind gorge itself wildly, to shit out something better than what I have to muck through these days.
Add to Memories
Share
I haven't been posting so much in the last year or two. Some of my friends would tell you this is a really good sign; it seemed that I was only posting to my journal when I was in a bad mood, and then it was just a bunch of dribble that nobody cared about. But 9 months is a bit too long to go without an update, so here's a few lines.

The takeaway: I'm not dead.

Before July of 2011, I was working at Google. It wasn't everything I had hoped for. In truth it wasn't right from day one; a lot of false advertising really. I think the big tech companies do an amazing job of making college kids think it's like Disneyland every day working for them; most of this involves what they do for the summer interns they pull in. I certainly had a good time at Microsoft while I was in college; but I don't think it would be the same working for them (sneak preview: Seattle isn't like that most of the year). Yes, one day at Google there were interns running around in gigantic man-sized plastic balloons, and digging through Nickolodeon style Giant noses full of fake mucous looking for the gold coin, and eating cotton candy and funnel cake and all you could eat ice cream while listening to a band play. But no the employees weren't allowed in on that.

Once you're out of school and on the inside, things are less fun. Or maybe they've only recently gotten that way, or it had to do with where I was placed (so some of my other colleagues still at Google claim). In my case 99% of my coworkers were either H1 Visa from India or H1 Visa from China; almost universally married; left promptly each day at 6 pm (not even staying for free dinner); and generally weren't interested in being friends even if I were able to play ping pong or cricket. I came to California with the same friends in the area I have today; basically none. Google was a lonely and disorganized place for me with great perks. I may go back there again, but it will be for the money, not for soul-searching. My soul isn't there.

After July of 2011, I left to start my own mobile video games company. I've been aided by Evan, my programming friend from college, and more recently by Boris, who I met through Noah. I have spent 8 months of my life programming jigsaw puzzles. I certainly never expected it to take so long. We've had over 400,000 downloads across our various products, without spending a dime on advertising, which means we've absolutely rocking user acquisition, and is pretty amazing. Our Linode server is about to fall off its hinges (especially since I only remember the bare minimum of my lessons under the great Eli and Erik at OKC). But underneath that things are still running like a life-or-death struggle.

The last 8 months break into two chunks:

For the first 4 months Evan and I focused on making the most realistic jigsaw puzzle we possibly could. The result is a fully 3D game, with real physics for the pieces (friction, one piece pushes another out of the way, interlocking pieces). We spent forever trying to make a jigsaw game that could be played on a tiny screen without getting frustrated (it worked pretty well on a tablet early on, but I put my foot down saying there weren't enough tablets yet and we needed to hit the phones), which cost us several months playing with however many ui schemes. To make a 100 piece puzzle playable on a screen the size of a pack of cigarettes is no simple task.

We launched our first jigsaw game in November. To date it has had 3000 downloads. It was a total flop. I had believed Google when they said that quality products would naturally raise to the top, and they were total liars. That game was the best one we've made so far, but it accounts for a tiny minority of our userbase. So, I swung to the other side of the spectrum.

For the last 4 months or so, we've focused on taking the original code base and splintering it off into as many possible jigsaw puzzles as possible, running several simultaneous experiments in market dynamics and gimmicks. We stopped thinking about making a good game and started thinking about how to market what we had. We've all gotten increasingly antsy about money too - this is all self funded. You'd think we'd get VC funding, but (A) we don't want to run that gauntlet, with its unreasonable banker jackasses demanding control of the company and 12 hour days for a 90% chance at failure; and (B) we're not building the next twitter or facebook or google; if we're lucky we'll be able to hire a few artists and engineers and have our own office - and nobody in the Valley wants to invest in that.

In many ways, the labors of the last 4 months were much more fruitful in some terms. For a while it looked like we were going to break even. But, things have gotten a little more quiet recently, and the tricks that were working aren't for the moment. I keep looking at my bank account, a daily ritual which isn't helpful but I can't help from doing.

For sure the last year has been pretty stressful. The first migraine hit in August, lasted five days, and left me unable to do more than 2 hours of work for about 3 weeks afterward. The second migraine hit in September and was about as bad. There was a lot of trouble with insurance not doing what I needed it to, and seeing the wrong doctors. I thought I wasn't getting the right treatment at first. But really I might as well have saved myself the trouble of fucking around with them all. The long and short of it is that four MDs now, one even supposedly world reknowned, has said the equivalent of "oh you have migraines. Try to avoid triggers and hope you get better on your own." and charged me a copay and sent me out the door. It's so unhelpful. From my own extensive research on the matter triggers are not the cause of migraines; triggers are what knock down a teeter-tottering sick brain that is suffering from migraines, and it would appear medicine is uninterested and incapable in actually understanding the cause or prevention of migraine. They don't even admit that they don't know what to do, not to your face. And they miss some important shit. Not one damn doctor has said to me, "is it possible that your new business is causing your migraines and that if you went back to your old way of life they would stop?" And no, that wouldn't stop me, but they should at least damn well have suggested it - I don't think it has even occurred to them. There's a problem when my doctors are less effective than me reading wikipedia.

That's too harsh, though; because I bitched enough I got medicine that's usually reserved for people who suffer even more than I do (if you can believe that; I feel so sorry for these people.) As of January, I have some pretty decent stuff that takes the pain away and makes a 5 day migraine into a 15 minute one. Leaves me loopy for several days, but not out of commission for a whole month thank god. Not as good as a resolution; but one may never come.

I have been so scared. I have wanted to write that here for months. It's not useful to say I guess. And I can't tell you exactly why I am. If the money runs out I have a green light to go work at Google again. I could get a job at most of the tech companies around here. Ignoring the migraines a moment, I am still fairly young and healthy, and relevant. But none of that seems to matter. I feel so confused all the time, and things seem hopeless, and I'm frustrated more than ever. Attempting to get help appears to only cause more trouble (the post is too long to explore that any farther). I usually feel a combination of being in way too far over my head for the things I can do, and simultaneously flummoxed about who to even go to for the things I have no frigging clue about.

If I had to say, I'm scared because "it should have happened by now", and it hasn't. I feel like an unmarried woman on her way passed fertility, dating yet another guy who won't propose and with whom it isn't quite working. Except I feel like this one has to work. This is the one that's supposed to work. I feel that deep down, religiously. And it isn't working, not yet at least. Even if there was a bit more money, it still wouldn't be working. I'm not where I need to be, even though it seems like this is the right place and the right time.

That all said there is a lot of positive in my life. Natalie is living with me, since last May, and has been a huge help through everything in the last year. We now have a bunny rabbit named blackjack. I have gotten a whole bunch of help from friends and family, especially my blockmates, while starting my new business. I have truly enjoyed working with Evan - my regular conferences with him are the highlight of my day. I've been watching a lot of Netflix and playing a few games - including Portal 2 and Skyward Sword. And I've been picking up a few friends here and there as the months roll by - last weekend I went golfing.

But, if you were curious, nothing much has changed, except that everything that was has only gotten to be itself even more.
Add to Memories
Share
...In which I prove that I'm still alive and share my thoughts and feelings on Unit Tests

This is a technical post about programmer unit tests and will be mostly inapplicable if you don't code.

I got an email bill from the car insurance company asking for more money, which made me mad because I had just paid a bill from them a few weeks ago. And then I realized that was 6 months ago and that my sense of time has become severely warped. I'm sorry I haven't been posting here (not that many of you miss my run on paragraphs). I guarantee you it isn't because I fixed whatever psychosis led me to spew lines of crappy English into a blog. Mostly I think it's because I've spent the last year fully consumed with programming.

You'll find plenty of run on paragraphs below, but I've tried to replace some of them with bullet points that convey the same content where I could.

Read more... )
Add to Memories
Share
Natalie and I had been meaning to go into San Jose. I've been here almost a year now and hadn't made it in. Serendipitously, I won a ticket to The Tech at work in a raffle, so I figured we would go there last weekend. I was intent on going out, exploring, and having fun.

The day was rainy, parking was expensive, and after I parked I discovered I had not grabbed the free ticket as I had supposed. This is merely scene setting, perhaps retroactively. But anyway, the main attraction at The Tech turned out to be a Body Worlds exhibit.

I went to my first Body Worlds exhibit in Boston in the summer of 2006. It was a horrendously unsettling experience. People have gone far enough as to say I have aphasia because at times I cease to see humans when I look at faces; all I see are well made machines. I was in a really weird place for about a week after that exhibit.

My first experience with a cadaver was of course my dear next door neighbor, who had passed away about half a year before. I've probably already written about it here before. Her husband had passed a few months previously, but in his final moments had been doped up on Morphine. Mom had such a good time with him in his final moments that she thought it would really soften the blow if we all visited his wife in her final moments as well. She had suffered a stroke and was in a vegetative state. It was New Year's. I remember walking in on a very weird scene, several people intent on making New Year's fun with party hats and noise makers, someone wailing in the kitchen, and the son looking very distracted and just constantly talking. She passed; they had to "prepare the body", which apparently involved giving it a bath. For whatever reason my parents and I were the first to be asked back. Something terrible had happened to the body, it was contorted, and the mouth was opened impossibly wide, ghastly, truly the remains of the woman who had been essentially my grandmother. "Sweet Butterfly" - slow dance jazz - played in the background. It seemed she had died in the most absolutely agonizing state possible, and frozen that way. We stood dumbfounded for a few seconds, and immediately turned around walked out.

In these exhibits, I imagine them peeling back her skin. Some combination undertaker / doctor / artist positions the body in some graceful pose. Maybe they've decided to make her an archer. In Boston, one body I saw wouldn't comply with the way the artist wanted to pose it, so they just chain sawed through the locked butt muscle. At least in recent years they appear to have gotten a little bit more tasteful about hiding such edits; at The Tech one body appears to have had its muscles windblown into a shitstorm of filleted muscle, as though someone had made a 'whoopsie' and decided to cover it up by making everything a whoopsie. Glass goes up, the lighting is set, silence for a weekend, and then there's crowds of people walking in to see her, peering, pointing, gazing wonderingly. It's like these people don't realize they're in a mausoleum.

I stood with Natalie staring dumbfounded at the ticket booth offering. Surely I was more grown up now, surely this wouldn't have the same effect any more. I had decided we were doing this thing. Really, I mean, its damage was done. And to some degree maybe that's true. But this recent experience certainly put me back in a sort of half-depression, half-shock.

One thing that does interest me in these exhibits are the maps of the circulatory system. They seem to just pull a circulation system straight out of a body, a gigantic wiry web of arteries and capillaries. And here we get to what I had expected to write about.

2 fantastical thoughts for improving the body/medicine:

A) The circulatory system is essentially a mirrored tree - an artery branching several times down to capillaries, and then unforking in a perfect mirror back to a single artery. This causes a lot of trouble; single point of failure. If an artery clogs, the whole sub-branch is starved for blood, and everything it's powering dies - most importantly, the neurons. It would be better if the circulatory system were instead a mirrored DAG (http://en.wikipedia.org/wiki/Directed_acyclic_graph). I found myself drawing pictures of a possible solution at work. Like RAID array for disks, you would have to be incredibly unlucky to have blockage in two major parents at the same time for a large swath of child passageways to get starved.

B) I am a firm believer that medicine is like programming, and that the best tools for both involves getting better visibility into your problems. Programmers have debuggers; at best, physicians have CT scans. These are expensive, low resolution, a pain to have done, and cause cancer. If every time I had to attach gdb I ran the risk of shorting my mobo, I just wouldn't do it.

Here is a naive solution, which I hope may actually be simple enough to be a real solution.

Pick a type of cell in the body that travels through the blood supply. Figure out how to genetically alter it. When it divides, most of the time, it behaves normally. Occasionally, though, it 'activates'. Activation is simple; it emits a radio frequency signal. Any signal you want, so long as it is unique to the cell, and can be 'heard' a few feet away by a receiver.

You have to tweak the activation probability, so that at any given point you don't get too many or too few activated versions of the cell.

The black box of course is making a human cell into a tiny broadcast tower that runs off ATP. That's where I play the fantasy card. But here's what you could get.

When I was growing up my father did not use a GPS on his boat. He used "Loran" to find his position (http://en.wikipedia.org/wiki/LORAN). If you swap the role of receiver and transmitter, the stations instead can find out where the boat is, with nothing more than a simple signal transmitted from the boat - any signal you want, really.

I suggest that this would be possible with cells emitting signals. Multiple radio receivers listen from different points in a room. They can pick out the cell's unique signal. Based on time delays, they can triangulate the exact location of the cell in the room. If the person sits still in a chair, as the cell flows through the circulatory system, the receivers essentially get a little tracer in your blood stream.

Except that the one cell divides and divides, some descendants activating, so that you have lots and lots of tracers. This would presumably be sufficient to fully map your circulatory system with just a few seconds of sitting and scanning.

Drawback:
-) Fantasy Card - is it possible?
-) High cost to isolate one cell and reprogram it
-) Possibility cell dies before it can divide.

Benefits:
-) Some set of descendants will always be alive; the procedure lasts a lifetime.
-) The body will not reject its own cells.
-) The cost of the radio receiver equipment would not be expensive; could potentially hook up a few $100s of equipment to a pc in the comfort of your own home, and take your own readings.
-) No radiation, means you can take as many readings as you want
-) Over time (years and years), identify arteriosclerosis, potential clots, etc. etc., based on changes in the shape and flow of the system.

In an even more fantastic arrangement, program something like sonar/doplar radar/ultrasound into the cell, which it turns around and emits as its signal. Then, with no more health risks than we already encounter with Fm 101.1 flowing through our bodies constantly, you get the equivalent of CT scans any time, safe, cheap.
profile
winterazalea
Name: winterazalea
calendar
Back May 2012
12345
6789101112
13141516171819
20212223242526
2728293031
page summary
tags