Latest Blogs

Using Imagus with Pivotal Tracker

Imagus become the de facto standard for hover zoom after HoverZoom turned out to be a steaming pile of malware. I love it, but it wouldn't load in attached images from Pivotal Tracker, which was hella annoying. Here's how to fix.

  1. Open up your Imagus settings, and go to the Sieve tab:

    Imagus Sieve tab

  2. Click the + button to add a new rule:

    Add new rule

  3. Enter "pivotaltracker" for the name (to easily edit or remove in the future), and add the following RegEx into the link field:

    (www\.)?pivotaltracker\.com/file_attachments/\d+/download\?inline=true

    Enter information into the fields

  4. Hit Save

    Pressing save

Refer to this Stack Overflow answer for a brief explanation of the fields in Imagus. Basically, you can enter JS or a RegEx to filter elements/URLs, then optionally request another page or transform the URL. In our case, we just enter link, which looks for Pivotal Tracker's attachment URL.

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.

1 2 3 4 5 Next »