Latest Blogs

Personal StatsD

Aside: I'm embarrassed by many of my posts on this blog. I'm going to start afresh soon.

I want to build an app for my phone which lets me record arbitrary events, then lets me see graphs about that data and the relationships between them. I've used Statwing a few times; maybe I should use that.

I'll drink till I can't, and hate myself the next day. I'll eat many illegal bananas, and feel like shit because I'm not doing work the next day. I'll avoid talking about my anxieties to my girlfriend, and eventually start a big fight. Then something will happen and I'll forget it all, doomed to repeat it again.

I want to write an app which provides a simple list of buttons which, upon clicking, record an action which has occurred. Drank a beer? Click. Drank a bottle of water? Click. Smoked a cigarette? Click. Played CS:GO? Click. Perhaps at some point, the clicks can be replaced by NFC tags.

I just want to record all these things, so later I can come back and see relationships between the events. I want a personal StatsD.

Checking In

I haven't written anything in a while, because I've been depressed, and because some of my past entries were written trying to "win" life (the way I coped while depressed), which disheartened me each time I visited my blog. I took to picking myself out of the slum, and with support of my girlfriend, I've been pretty successful.

I'm working on a mobile app called Wazinit. You select ingredients you're trying to avoid, then scan barcodes of products at the grocery store, receiving a simple "yes" (no ingredients were matched) or "no" (an ingredient was matched) in the form of a smiley or frowny face. It's been a blast, and we're working on some cool things. It was my first real foray into mobile dev, and on the backend I even got to write a lexer/parser.

My day job at Hivelocity remains interesting. As products go, I'm working on automatic provisioning. I've been building an internal REST API around the thing, so offering the service internally and on customer-facing websites will be a cinch.

Recently, our dev team started becoming a bit "agile". We adopted Pivotal Tracker for our task management, and while it hasn't been the silver bullet for productivity, it's definitely improved our ability to judge ability. We can easily see the little we get done because we're correcting bugs or fixing architecture or improving security (okay, improving security is always worth it).

We were in a bit of a hole, because we'd constantly receive requests from sales, tech, build team, and anyone who wanted the toolbar to be a few pixels to the left... and we (well, at least I) would drop everything for it. It became a bit hard to focus, so we're adopting a 3-week main-project, 1-week bug-fix/request schedule. For 3 weeks, we work on value-building, "big" projects. For the next week, we work on bugs and requests (from inside the company, from customers, and things we've just really wanted to do but couldn't tack them onto "big" projects). We're still evaluating this approach, but I think it'll be a boon to productivity.

As for personal life, I'm on speaking terms with my dad, my sister, and my mom. I'd gone a bit far "figuring things out" and hurt all of them, so I'm glad I don't hate any of them and they don't hate me.

I've got a girlfriend, and she's moving in this August to my new apartment. Before I got it, I was mostly sleeping at her place. Since I moved in here, I've been loving the ability to fuck around on the computer with no one else around... so we'll see how things go. She's gonna kill me when she reads this one day.

One day I'll have something real interesting or useful to tell you. Till then, cheers!

Zach

How a Mood-Unstable, Memory-Deficient Man Budgets

Maybe "budgets" should be "saves", but generally I figure "budgeting" is saving enough money for costs which might accrue in the future. In my case, I can't (or won't) think that far ahead, so simple rules I can apply suits me very well. These are the two rules I'm applying these days (the first rule I've been using for my last two paychecks, successfully):

  1. Transfer everything remaining in my checking account to savings when my new paycheck arrives

  2. Immediately transfer the total amount spent on non-necessities during last pay period to savings when my new paycheck arrives

Usually, I'd attempt to explain why I chose those rules, but I'll leave that up to the reader (hi, Paul!), unless a further explanation is requested.

New Version of This Site

I've been playing around with an update (well, total rewrite) of this site for a few weeks now. If you give an eye to the site as it is now, it's not too hard to find it's pretty damn ugly. And the logo I slapped on from horriblelogos has a white background, contrasting from the weird off-blue I chose for some reason, and it bothers me to no end. I'm happy buying a $7 club sandwich from Zaxby's, but I didn't spend the $10 (or whatever) to get a transparent logo. I'm an idiot.

Anyway, I wanted desperately to try out all this fancy new Javascript-powered shit, so I started writing the new version with NodeJS. It's all written in CoffeeScript, and uses ExpressJS as a framework, with PassportJS for authentication. I also shoved in Jade for templates and Stylus for CSS. For database shit, I'm using Sequelize as an ORM.

What I've learned is it's all pretty goddamn straightforward, aside from Sequelize, which seems to brush against the limitations of JS. There's a lot of boilerplate needed for simply describing models, but because it's boilerplate, I'm sure someone will abstract it away at some point. I don't have quite the intimate relationship with JavaScript as I do with Python, so I don't know how ugly that solution may be, but regardless of that, I know if a consistent, intuitive interface can be provided, the ugliness isn't a terribly important factor. You don't need to know what goes on behind the pedals if it controls the car exactly how you'd expect.

I was inspired to write this new version when I stumbled upon hallojs, an HTML5 contentEditable library. I only knew vaguely of contentEditable when I discovered hallo, but the ability to offload the actual editing to the browser immediately got my dick hard, because it meant my main concern was serialization... so "you do whatever the fuck you want, and tell me about it later." I found an Angular plug-in someone had already built (updating it a bit for strict contextual escaping, and COFFEESCRIPT YEAH), and popped it in.

I was amazed at how quickly everything came together. Or maybe it was the realization my elitism was keeping me from Getting Shit Done. In either case, I built a slick interface in which the only other page besides "view all posts" and "view single post" is the login screen. Once authed, I've got a "New Post" link, which adds the same HTML to the page as an existing post, with just a boilerplate "Edit This Title" and "Edit This Post" text, both of which I can simply click and begin editing. It's literally WYSIWYG, because the browser handles all that shit.

The post body is a special case, because I don't save the actual HTML. Instead, I convert it to Markdown and save that to the database. While I'm actually editing the post, I provide a realtime display (YEAH, ANGULAR) of the Markdown source, which itself can be edited to change the HTML display, exactly like the Hallo demo.

That's the small and skinny of the web stack. Behind the scenes, I tried to learn more about Docker. I've got a Dockerfile which I use to build a container of the current folder state (it directly copies over my code at the current state, instead of doing a git pull, so it can be done during development/testing), and I use that to actually serve the site through an nginx proxy on the native box (well, that's a VM in itself... fuck me, technology is cool).

Man, I always told myself I'd never be that guy to just throw technologies at something because they were cool. But now I'm there, and it's because whenever I had something I wanted to do ("I need auth!", "I need CSS!", "I need JS that isn't fucking horrible!"), I Googled a solution and ran with it. But that's the future I suppose, where "lack of pride" completely obliterates "reinventing the wheel", and hacking isn't a lifestyle and commitment as it is an incredibly fun way to sacrifice your time to the All-Knowing[-of-Blog-Posts] to pay forward dozens or hundreds or thousands of man-hours saved with a Google search. If StackOverflow had a dick, I would be sucking all seven of them.

Non-technologically, I decided to can all my past blog posts. I've made some lame-ass posts, I've been dogshit crazy in many, self-deprecating and dogshit crazy in my latest, and anytime I thought "I really don't want this to be what others perceive of me," I said "you posted it... it is you. Sack up, bitch." I think a lot of different shit, and though I wanted to avoid the realization for as long as possible, who I consider myself varies immensely based on how I feel... and my control over how I feel is very shoddy. That's not the end of the world, because I can have control over it, but constantly forcing the opinions I had on myself at my lowest of lows is no way to build. So I'm starting from scratch. I could never bring myself to delete the old posts completely, as if they never existed, so I'll link to them publicly (though not prominently -- but enough for Google to index); I just want new, well-written posts about applicable (or at least interesting) things to take the stage, instead of my babbling and excuses over why I'm not writing those posts.

Giving Up the Brain as My Primary Source of Reward

I recall lots of "ups" and "downs" in my life. I differentiate the two mostly by how much I wanted to talk to others. That's not the only thing that changes (I won't jump around and test out my environment in "down" time), but it's the thing I remember most clearly. When I get into "down" time, I live in my head, mostly. But I try to make up for it by doing something "productive".

In high school, this was trying to figure out how others' behaviour could be explained by evolution. Luckily, at this time, I had a routine what with school and being exposed to many different experiences. Keeping the pensive (and overthinking-prone) "downs" and totally extroverted "ups" in check was easy.

When I went out on my own, I had no reason to go out and force myself to try new shit (or even socialize, which is always new shit), so I constantly chose the down. The few times I realized this and forced myself to try new shit while acting normal, I would feel so uncomfortable I put another tick mark on the "ugh, the world sucks, go do your own shit" column. Next time the opportunity presented itself, it was pretty damn clear that the "down" column outweighed the "up" column.

When I went to San Francisco, I knew absolutely no one. The "ugh, the world sucks" column increased exponentially. I chose to push forward on figuring out how evolution could explain behaviour by researching and figuring on the brain. It became a vice. I could leave work and try to meet new people... or I could just walk home quietly pondering the brain, then get really stoned or drunk and fall asleep.

It's become a rather recurring tendency. When I feel like I can't do anything, including shit like programming, which I absolutely love, I fall back to the brain. I can't say I'm not actually figuring things out, but I'm never researching my ass off, and I'm never verifying my results with anyone. It's more of a coping mechanism than anything.

So, I'm giving it up. I'm accepting I'm not helping myself with it, and I'm not contributing at all. Now I can move on to developing another vice which will actually benefit myself. One which allows me to discuss it with others, to keep my shit in check, and to benefit others.

1 2 3 4 5 Next »