Wednesday, August 28, 2013

My first time with an app

Today I pushed an app to the app store:  Minifig Scale Calculator.  A number of people have downloaded it and loved it.  That number is zero.

And its not much of an accomplishment, being that the app is only one screen.  However, I'm pretty excited about moving on to bigger apps, preferably ones that make me actual money.



[Edit]
p.s.:  Android is fun.  iOS is a giant pain in the ass.

Bullshit

http://tinybuddha.com/blog/6-thought-provoking-realizations-to-make-you-feel-better-about-life/



1. You can’t ever really be bored.

I'm bored right now, dickwad.  That's why I found your thing via reddit.

2. You have the potential to make someone smile.

Oh...actually this one's ok.  I agree.  I mean I probably won't do it but I totally could.

3. You’ve gotten through so many moments where you thought it was going to be all over.

Still bored!

4. You have the power to better yourself every day.

You know what happens when you spend every day bettering yourself?  You die alone.  And bored.

5. You from five years ago had nothing on present-you.

He had more hair.

6. You have the potential to learn about anything.

The Wikipedia page on discrete cosine transform would like to have a word with you.  Some of you are probably wondering what a DCT is.  I have no fucking clue.  All of the math is above my head.






The post is the culmination of my frustration with the disappointing quality of the subreddit "pro life tips."  Its mostly blog posts about feeling good about shit.

Tuesday, August 27, 2013

Reqiuem for a Partnership: Part 5

I can only show you the door.  You're the one who has to walk through it.
--Morpheus 

Previously, I have written concerning issues I have with my business partner.  They include the possibility of paying $700 for a single, static web page.  Ladies and Gentlemen, I have discovered the secret.  And for just 20 easy payments and one really hard payment, I will share that secret with you:

Patience.

Patience is a weird, psychologically advanced and abstract concept.  You probably haven't heard of it.  Normal people probably don't use it much.  I think this is literally the first time I've deliberately used it.

It turns out, sometimes other human beings just have a completely different way of reasoning about the world, and I can't just tell them the right answer (for the purposes of this post, and as you may know already, I am always right, about everything, all the time).  I have to show them.  Slowly.  Sometimes you have to just lead them there, and let them figure it out for themselves.

I watched an SDE III do this in a meeting at Amazon once.  In about two to five sentences, this senior engineer had not only proven that I was wrong but eloquently swayed me completely to his side and convinced me that his strategy was the right one (I had unwittingly been operating on an assumption that I thought was the team's charter, and he directly challenged that assumption head on and said we should re-define our role in the organization).  That part was actually normal, logical arguing.  However!  Within 10-30 minutes of arguing, he convinced every other member on the team...except one.  And this one guy, he wasn't listening.  He didn't see.  I deployed Passionate Argument.  No effect.  I deployed Passionate Argument again.  Repeatedly.  I finally had to resort to my ultimate weapon, the one that almost never fails: Passionate Argument + Whiteboard.  It was all Ineffective.  But the senior dev did something completely different.  He talked patiently with the last, stubborn supporter of the Old Way of doing things, and actually listened.  And I don't mean listened as per the rules of the debate.  I mean he really listened, a lot, like for tens of minutes, and asked questions, and they were still talking after the meeting was over.   I watched them go off into the hallway, watching the senior engineer just listening to the broken tenets of the Old Way, pretending he didn't already know each one by heart (i was the only one around long enough to remember), gaining traction in the argument inch by painful inch, and I thought to myself "I never want to do that."  Wait, no I didn't.  I mean, in real life, yeah that's what I was thinking but for the purpose of this story, I officially thought...something poignant about patience.

Anyway.  I never wanted to use patience.  Turns out that's an essential skill.  So I'm going to get really good at it right now, as fast as I can.  I'm sure that's how this works.  This is going to be a hard one to master.  Typically, my interaction with people of opposing points of view is to push evidence in their face in real life, or skim past most of what they've written in some blog  (or worse, stack overflow).  Or assume they are just dumb and come home and write mean things about them in my blog.  In real life, you can't do that. 

In real life, when I am arguing with someone, I can occasionally see about 1, sometimes 2 steps ahead in their chain of logic.  My entire life, I have wanted a remote control with a fast forward (not continuous fast forward, but more of the dvd 'next chapter' kind) button that would let me skip to the 2nd or 3rd of the arguments they were about to make, because I didn't want to bother listening when I already knew what they were going to say (I also like to do this with during dramatic moments in TV shows like Lost--for example in Lost, anytime two and only two characters are talking but not looking at each other and instead are staring poignantly into the distance, that conversation is just emotional/relationship/drama filler, and has nothing to do with advancing the plot).  Anyway.

It looks like the thing I really need to do is be patient with other people.  I hate it, but I love making money more than I hate listening to people I disagree with.  So, this $700 web page problem?  I am currently obliterating it with patience.  Its kind of a slow obliteration--almost done though.  I suppose one downside of this method is it takes so fucking long.  It is kind of amusing to see how everything changes when you take a simpler approach.  In fact, its downright weird.  Its not like a typical argument, or a mathematical proof, where you have to lay all of the facts out clearly, and in the right sequence.  When you are using a patience-based strategy, you handle one step at a time, and you basically just gently and carefully nudge the other person in the right direction, allowing them to discover the facts on their own, because once they discover a fact themselves, it becomes their fact, and its no longer an argument.  For bonus points, pretend they convinced you (I haven't done this yet, but I want to try it). 

Now that I'm writing about it this way, I'm realizing that the senior engineers I admired at amazon did this all the fucking time.  I still don't want to be them though--they went weeks without writing any code.  Weeks.  And I'm not exaggerating about the weeks part.  Actually I should have written months, but I didn't think you would believe me.







P.S. most of this post was bullshit.  I'm actually not as impatient as I make it seem.  I have realized I need to be more patient, though, and I really did fast forward through probably a third of the scenes in Lost.  Kind of ironic that I still got bored by the show.  Seriously, though, that entire fucking series could be done in about 2, maybe 3 episodes of Doctor Who.

Sunday, August 25, 2013

I'm not the only one

I don't know why, but I was very happy about the last sentence of this article.

Day 10

meh

Saturday, August 24, 2013

Vindication

I went out drinking with some [old company] people last night.  Several things I wrote are still in common use, including things that I received negative feedback about.  It felt pretty good to hear about that, especially about people using the hack I wrote to get around one of [old company]'s shitty ass configuration systems.  In fact, when it comes to solving problems for code, I have a perfect score.  Of course when it comes to solving political problems by explaining to people why they suck, I have a bad score.

Based on a comparison of my experiences at [old company] and [current company], I would conclude that if it is at all possible to solve a problem with code, it should be done so, even if your manager, manager's manager, and your peers tell you not to.  The key is to not tell people about the tool until it has proven its usefulness.  When it comes to problems that cannot be solved with code, it is NOT a good idea to strike at the root of the problem (e.g. try telling a congressmen that they make bad decisions because of the disproportion influence of the people funding their campaign) but instead to make a great show of attempting to solve the problem in the manner other people expect, while patiently waiting until you have enough political influence to effect a real change.  It is likely that you will credit for the show, and you won't receive credit for the real fix.

I'm even finding this true in my startup.  My business partner (who doesn't understand the difference between the front-end and back-end of the web) wants to pay our mediocre graphics person $700 for a static web page.  Telling her flat out that $700 was a ridiculous price for a web page was ineffective.  I must, instead, fix this problem silently, and with great patience.

Wednesday, August 21, 2013

Day ?

Everything is all fucked up.  I don't know what day this is supposed to be or how many days I have left.  I do know that I should not have stayed up all night watching season 2 of Lost at some point.  The most pathetic thing about that is that I had already scoured Wikipedia for spoilers in order to ruin the show for myself and prevent getting addicted to it.  I knew what was going to happen in advance and still I just watched episode after episode all night.  I think the problem is, with these types of shows, things of consequence happen so rarely that it takes half a season just to advance the plot a tiny bit (or, like in Game of Thrones, one thing happens and the rest of the book is just filler).  Meanwhile, most of the show is filled with people getting angry and dramatic with each other.  It seems like regardless of whichever show I'm watching, we always have to have a cast full of Type A people that mistrust and lie to each other and make poor decisions and are horrible team players.  No two characters can get a long for an extended period of time, because I guess that's not dramatic enough.  None of these fuckers act the way I would act.  Oh, hey we found a plane!  Lets not tell anyone about it, or secure it with ropes to prevent it from falling off the cliff.  Lets just send up an idiot to shift the weight around a lot so he'll die and the equipment--and the fucking plane--become unsalvageable.  And the lie about what happened for no good reason.  Great decision making, really.  Ironically, I'm already bored with Lost.  It ruined my productivity and now I'm not even interested in watching it.  I'm about to watch the episode where Michael goes after Walt and the "Others" kidnap the hot chick to make the good guys give up their guns.  Every time I think about sitting through that I choose to do something else.  Watching TV is supposed to be a mindless exercise that gives my mind a break in between coding sessions.  Therefore, I have switched to re-watching episodes of Star Trek:  The Next Generation.  I have already seen them, and I already know what will happen, so it takes no brainpower to just sit there on my couch for a while.

Thanks to Lost, my sleep schedule is completely off.  I've been going to bed after 5am and waking up at 11 or 12.  And not getting much work done.  Especially at night--the time between 2 and 5 am is typically spent lying in bed trying to figure out why i can sleep--which often involves getting up around 4 to eat some cheese and surf reddit because even though I can't sleep I'm too tired to code.

So far I have managed to lift every day, but my left leg still huts if I do too much walking.  Days are slipping by without getting much work done.  I have a web payments portal partly started.  We are using Stripe because it looked easy to learn.  I'm having trouble learning anything, though, because whenever I try to concentrate and do design and learning at the same time (which I have to do, in order to learn stripe while implementing our payments portal), my mind feels like its underwater and I can't concentrate on anything.  Nothing seems to help;  tv, videogames, going for walks, nothing.  So far I've been powering through but my productivity is a fraction of what it was a few days ago.  I can't decide if its worth it to sacrifice an entire day to deliberately resting.  Even if it is worth it--what would I do?

I think what's really bothering me is that next week I have to go back to work, and I really, really don't want to.  Kind of need to though; I think we've established that I'm not very good at working completely on my own yet.  However, I really hate working for M$.  I've heard that my android project is back on.  Maybe.  They people in charge are still having trouble making up their minds.

[coding] Android Testing

I just purchased Space Hulk from steam, because I love the Warhammer universe despite being uninterested in buying toy men, and hating Dawn of War II  (I was awesome).  Anyway, I was on their forums reading a dev's explanation of why they might do iOS and not android (lame!) and he linked to here:

http://techcrunch.com/2012/06/02/android-qa-testing-quality-assurance/

That might come in useful....



[edit]
And these are depressing:

http://www.nytimes.com/2012/02/19/magazine/shopping-habits.html?pagewanted=1&_r=2&hp

http://www.reddit.com/r/news/comments/1krsxi/cancer_patient_loses_his_house_when_his_son/

http://www.rollingstone.com/politics/blogs/taibblog/outrageous-hsbc-settlement-proves-the-drug-war-is-a-joke-20121213

Monday, August 19, 2013

Day 4

What if all you understand
Could fit into the center of our hand?
Then you found it wasn't you

I have 11 straight days of vacation.  Today is day 4.  I thought I was getting burnt out before vacation;  its only getting worse.  So far I've managed to re-learn php and mysql and create a website login system that follows most of the security best practices that aren't dumb (its funny how much more code you have to write).  Now, all I have to do is prototype an integration with a web payments system, redesign part of the data prototype, finish a stand-alone skin quiz app, write an app that shows live DOTA2 scores which requires figuring out how to automatically discover and connect to live DOTA2 games AND also some friends at work and I have discussed yet another app idea involving taxi drivers.  In addition, I need to get my car fixed, get my bike fixed, deal with my car paint, get some work done on the apartment, consult an FAA medical examiner about getting my medical back, start meditating again, start lifting every day again, start eating smoothies every day again, cook more to avoid spending so much on going out, try several new healthier foods, buy a new [nice looking] motorcycle jacket for impressing girls, go salsa dancing a lot to work on my dance game, and check out some kind of male fashion sub-reddit so I can finally start dressing better.  And simultaneously lose and gain a ton of weight.  And train myself enough so I can start bicycling to work.  I also need to take some stuff to the computer recycling center, get a second seat for my motorcycle so I can carry a girl, and get a consultation for hair transplants so girls stop mistaking me for a 32 year old.  Also, I need to get more sleep.

Also, somewhere in there I need to relax or go outside or something.  Vacation.



So...as you can see its not going as well as I'd like.  I did a lot of programming, but it was the difficult kind.  In fact, I have a theory.  Let me share it with you.  Its called "the fog."  The fog is what happens to my brain when I try to do the following all at the same time:
1. design work
2. learning (new API, best practices, etc)
3. implementing (writing code)

All three of those are a cluster fuck that taxes my brain and prevents me from coding for long periods of time, which means lots of breaks.  During those breaks, I have to avoid video games that use a lot of brainpower.  So, Starcraft is out.  I've had some luck with Classic Unreal Tournament (UT '99) -- that game is a purely twitch game.  It also makes me miss Lan Parties.

In contrast, when I am only doing #3?  Implementing?  I can code for 10 hours straight.  But here is the problem:  I will rarely only be doing #3.  Most of the things worth doing, where you break new ground or make money where other people havent, are going to require more than #3.  If you just want to write code that you already know how to write, you're just going to be another employee at some software company that is not in the top 5 in the world.  Maybe I should do that for a while to take a break;  I don't know.

Anyway.

I've been fairly productive.  I mean, at least the login part of the website is done.  Thursday I played some weird game at the salsa club where I tried to get girls to turn me down for dances and discovered that that was surprisingly hard--the less effort I put into asking them the more they wanted it.  Its sad that you basically have to sacrifice all of your human empathy in order to get good at hitting on girls, but its still fun.  And yesterday I rode my bicycle for far longer than I can normally endure, until I felt like I was about to pass out and my left hand started going numb.  And then I rode for another hour.  And then I turned back to come home.  I did make it all the way across the water to almost-bellevue before turning back, but by the time I got home I was limping.  Given that I didn't even make it to bellevue, I don't think I will be able to commute via bicycle all the way by the end of my vacation, but I can sure as hell try.  I suppose when commuting I wont need to save any energy for the return trip.

Today was kind of a waste.  I hardly got much programming done.  I played a lot of video games and watched TV and did a bit of walking around outside by my mind just feels cloudy, like its difficult to concentrate.  I probably need a real vacation--one where I don't have to do any work.  However, I only have 7 days left and a shit ton of stuff I want to get done.

Oh and I also need to do laundry.

Friday, August 16, 2013

[coding] Creating a Secure Login System, Part 1

Creating a secure login system is a key part of blah blah blah blah /intro.

When I was in high school, I wrote the website for the lan party I used to run.  I'm pretty sure I stored the user and password in cleartext in a mysql database, and even if I had heard of password hashing, the concept would have sounded like some unbelievable mission impossible shit.  Now that I have to implement a login system for realz, I've been reading a lot of articles, pseudo articles, and stack overflow opinions on password security.  Things are quite different now.  Hashing passwords isn't even good enough.  You need salts.  You need stretching.  You need all kinds of shit.  I thought I would take a break from learning php and mysql again to comment on some notes I've taken.

Concerning passwords:

The best password, obviously, would be a minimum of 64 characters long and include lower case letters, upper case letters, numbers, symbols, unicode characters, klingon symbols and markings from an extinct redneck dialect of elfish that fell out of use after the first age of middle earth--most of which cannot be typed with any keyboard we here possess.  Actually it would be best if the passwords included characters than cannot be typed with any keyboard.  Then no one would ever crack the passwords. 

Obviously we are going to need to salt them with a source of entropy based on two hydrogen atoms having quantum sex with either other, and OBVIOUSLY md5 and sha1 can't be used because some guys on the internet said so on stack overflow;  clearly the hashing method we should use needs to be some kind of super secure algorithm that is so new no one, anywhere, has released a builtin library for it.  Anything php supports must already have been cracked.

Of course rolling your own crypto algorithm is not a best practice.  What we should really do, therefore, is maybe we should just not let anyone log into the system at all!  Since we're an american-based company, the cunts at the NSA can just send us a secret letter and make us turn over all of our customer data anyway.
OR

We realize that there needs to be a balance between security and ease of use.  I'm actually not storing any payment data in our own system anyway, so the worse an attacker should be able to do when hacking someones account is change their membership level or cancel their account.

Monday, August 12, 2013

Not all those who wander are lost

It is a strange experience to be both part of and not part of a subculture.  I've experienced this a number of times.  I attended the DOTA 2 International Tournament off and on with a friend who was visiting.  Everything about the tournament was familiar:  the ambiance (felt like a typical con), the excited personalities of the other attendees, etc.  The only thing I didn't get was the actual screen.  DOTA 2 is a somewhat unique 5 on 5 game based on a user mod made for the Warcraft 3 back in the day.  It was grown into something of a phenomenon.  A very complicated phenomenon.  Perhaps you've heard talk about the difference between knowing the mechanical rules of chess and actually knowing how to play.  DOTA 2 takes that concept a thousand steps further.  I have, technically, played a game against bots.  I have no idea what was going on in the tournament games, except that whenever people in the audience started screaming; when I knew someone was about to die and watched the scoreboard.

Some of the people we were hanging out with at the tournament with were stayed in a hostel.  I've never been in a hostel before, but when we visited them for a few beers, the atmosphere felt like everything I had imagined traveling would be like.  Tons of friendly people all over the place, chilling out, free from their daily routines and comfort zones.  My routines have gotten so bad that when its a nice day out I have no idea what to do with it;  enjoying it becomes a chore and I try to decide how to get my bike to the nearest park (soo many hills) and then I think about how my ex girlfriend loved being outside on nice days, and I play video games alone in my apartment just to spite her.  Not sure how effective that is.

Anyway, I feel the travel bug coming on.  I was sitting in a bar for the "after party" of this tournament, watching a bunch of nerds dance surprisingly well to techno music, and musing over how the gender ratio was literally, strictly worse than the gayest gay club on capitol hill, and all I could think about was traveling.  Right now is a terrible time to travel.  I am thinking about my next move in my carreer, and I have side shit going on, and blah blah blah what if I just dropped everything and spend my life savings to stay on Ibiza beach for a summer?

Now. Strippers.

I have been in strip clubs before.  In fact, going to them kind of ruined the idea of strip clubs as mysterious, evil hives of scum and villainy where girls are abused and degraded and etc.  That is basically bullshit.  They are so un-evil is almost mundane.

Anyway, I elected to go to a strip club recently, and holy shit were they aggressive.  I admit, when you abstract away everything a strip club is, the thing I'm really paying for is just to be in a place where girls 1) exist and 2) are friendly and 3) approach you.  Sort of a "in soviet russia girls approach you" joke, but true.  I know that most guys just go there to carefully review their visual assets, but my favorite part is talking to them.  Fake or not, I love their personalities.  And I don't have to worry about coming up with what to say because they do small talk like its their job.

Now, in this particular strip club in Seattle, it was a bit extreme.  I couldn't sit for any length of time without one of them descending upon my like a hawk, sitting on my lap, making fake conversation for a minute and then trying to get me to pay for a lap dance, and then constantly up-selling the type of lap dance (there is more than one kind!  and they always cost even more money) and hounding me to buy more.  One possible reason for their aggression was that strip clubs in Washington state are not allowed to sell booze, which possibly forces the girls to take it upon themselves to ensure that we make bad decisions.  I was not prepared, nor even capable, of saying no to that many pretty faces.  It is literally something I've never had to do before.  I didn't even have the words.  I went to the club thinking that I would lose some singles while sitting at the stage, and then splurge on one or two lap dances.  I lost count of how many lap dances I got, but 10 wouldn't be too far off.  I am now hundreds of dollars poorer, and all I have from it is a memory of 10 different girls rubbing their boobs on my face and 2 of them doing an Oscar-worthy job of pretending they were actually interested in me.

So lets recap.  I put off buying a $500 air conditioner for four years in a misguided attempt to be frugal with my money.  Then in one night I drop even more money in exchange for...essentially nothing.

So, where do we go from here?  Do we continue as planned, trying to set up these side projects, switch jobs, etc?  Do we start planning a trip somewhere?  Do we start going out clubbing more often?  None of these choices are easy, but easy is boring anyway.

I have had this idea of collecting 500 dance rejections.  Why?  Because I hate it when I'm salsa dancing and I ask a girl to dance and she gives me some bullshit excuse.  Hate it.  So I thought I would try to make the rejection a thing I try to acquire, in order to negate my negative emotional response.  Feasible?  Not sure.  But gaining the ability to ask every girl in the room to dance, smoothly, without caring when anyone thinks in an important step into becoming an unstoppable dance...monster.  What I could try, though, is telling myself that every ten dance rejections I earn a lap dance at the strip club from one of the girls that pretended to like me.  Because going to bed after paying a girl to smash your face into her chest is more pleasant than going to bed after ten girls told you they need to "finish [their] water." 

Then again, I should probably never set foot in that place again.

Saturday, August 10, 2013

[coding] Web Deving

All I need is a website with a secure login mechanism that can process payments.  We should have some great skin care related software soon, but unfortunately since we want to make subscriptions work on both Android and iOS, with a one-to-many-to-many ratio between subscriptions, users and devices, we have to implement our own website to make people pay for it.  And having people give us money is the whole point of this thing.

Turns out, logins and payments are the hard parts of web development.  I spend an hour researching best practices for storing logins and passwords and managed to fill up a small page with a checklist of things to do to keep it secure.  And then there's session ids to worry about.

Even worse, PHP appears to remain the most popular language for implementing low-end web backends.  And the language is still a filthy mess.  Even when I just search for something non-denominational like "best practices for secure logins" I find examples in mostly PHP code.

I think I'm going to try ruby instead.  PHP appears to be more popular, and I already know it, but the most important different between PHP and Ruby is that I actually like Ruby, and Ruby doesn't make me want to kill myself.

Friday, August 9, 2013

What's it like at the top of the bell curve?

At work, one of our major business partners, one of the big ones that we jump and do a lot of work for, basically wasted 6 months of my time.  Personally, it wasn't actually a waste because I used the opportunity to learn Android.  Officially, and concerning my career within this company, it was a giant waste of time that set my career back by 6 months.  I'll have to hide how little that bothers me.

Saturday, August 3, 2013

Pet Peeves

It has just come to my attention that in Seattle we are expected to have licenses for our pets.  I found a postcard to that effect in my mailbox today.

My single greatest regret, at least for the past 72 hours, is that I don't own such a pet that I could continue to own in an unlicensed fashion.  In fact, by continuing to not own a pet, I am tacitly obeying this ridiculous law.  This is unacceptable.  I feel like I need to buy a cat or something, just so I can break the rules.

I probably won't though.  Too much work, and cat hair, and I'm beginning to suspect I'm allergic.  What I would like, actually, is to buy stock in a cat.  For example, I would be maybe a 25% owner in an American Shorthair or something more elegant like a fine Chartreux.  Obviously there would be some kind of entity set up for the management of the cat--making sure she has a warm home and some cat friends and some humans to ignore and all the fucking catnip she can trip on and, of course, making sure she stays unregistered.  In fact, at the annual catholders meeting, I would probably vote to changing her name from "Sprinkles" to "Unregistered Cat #0."  Naturally, such an establishment would take like a 7% earnings from the cat for her care.

That's really what I want here--some kind of cat stock, so that I can break the law without having to go to the trouble of actually taking care of a pet.

Fuck you Seattle.