natevw proudly presents:

a glob of nerd­ish­ness

powered by work over time.

Numbers.app spreadsheet template for 2018 IRS Form 1040

Soon after Apple first released their Numbers app, I started using it in my tax preparation and uploading my worksheets as a template here. The spreadsheet started with automatically updating tables for the main federal Form 1040, and gradually grew to include some helpers for Schedules A/C/E that I use.

Screenshot of unfilled tax spreadsheet

For the 2018 tax year, in order to more effectively trash the planet, there were some tax changes (pdf) as well as some even more gratuitous "changes" to the tax form. Never one to let politics spoil my productivity (← macabre humor there), I did take the opportunity to clean things up a bit. Besides splitting up chunks of the main Form 1040 into Schedules 1–6, I started getting the Schedules A/C/E more fully aligned with the actual forms.


UPDATE: posted a new version with some important corrections, and some other potentially-useful additions.

Download: f1040-2014 Numbers template

License: CC BY-NC 4.0


Please let me know if you find this helpful and/or do discover any issues with the calculations or annual data.

Posts for previous years for background: 2014 2013 2012 2011 [skipped 2010] 2009 2008

(Also I'll mention that if for some reason you have use for a template from 2015–2017, I did keep updating the 2014 version for my own use but neglected to post the revisions [see "macabre humor" regarding productivity above]. One of those years may have been when I filed for an extension and didn't end up finishing until October 15th — not recommended, nope, no, never again…!)

comments

Designing for devices

[ed. note — I'm posting some lightly edited posts I started a looong while ago but never finished/published. The first revision of this document had a `"last_modified": "2015-04-24T20:15:21.249Z"` and I may have tried to fix up the still-missing conclusion around `2016-08-27T06:52:33.923Z`?]

Is it possible to design excellent cross-platform applications? Is that a reasonable goal?

Let's take a step back, though. Forget cross-platform. The web is its own platform — surely building excellent web applications is a reasonable goal?

What makes the design of web applications challenging? — the design not the implementation

From a design perspective, it's not the CSS box model, it's not browser bugs or lagging features, it's not DOM performance, it's not scrolling or fastclick or offline or anything like that.

Designing the user interaction of an excellent web app is hard, because the web is a cross-device platform. Its own platform, with its own idioms and conventions and user expectations, but accessible on everything from a TTY to the Hololens.

This is the challenge of designing an excellent web app.

Best practices

More soberly, we should say that designing an excellent web app, that works excellently whether a device fifty years old or fifty years away happens to browse upon it, is "the ideal". It is still hard today, with sketchpads and whiteboards and Photoshop, to really "mock up" an app while keeping in mind its alternate states and animated transitions and the like. If it's so hard to design an excellent app for a modern browser on a great tablet, now add "also a smooth workflow when loaded by LMB on a typewriter with a serial port", and every browser in between, to the requirements…?!

It is theoretically possible. A tremendously fun exercise. Would do The Web proud.

Yet utterly unrealistic for some apps. It's fairly easy to imagine a feedreader that works well across a century of different browsers on different devices. It's harder to imagine a photo library that works well on a device whose human interface is 35 lights and 25 toggle switches. (But if you have an Altair 8800 you're getting rid of, I'd sure love to try ;-)

Whether the Web encourages it or not, designing a new app for compatibility with a bygone user base is quixotic. Sure, imagine what your site looks like to text mode browsers if it helps you improve your app's machine (and therefore human) accessibility, semantic markup, yadda yadda… but at a certain point you have to stop. Your app cannot cater to every conceivable user, just as it can't cater to every conceivable use case.

So what should you consider when designing a web app?

Input devices

Picture of a Macintosh IIfx, which Not a NeXT Computer, and also has no input devices attached…

For as many times as I've brought up teletype-era devices, fact is the web was invented on a NeXT Computer, which had a "1120×832 pixel resolution, four-level grayscale" display. That's not bad! The web has always been about content, and has rarely been expected to deal particularly well with screens much worse than that. So let's assume the output devices through which users experience with our app's interface are relatively homogenous — there's big screens and little screens but they're pretty much… just… screens.

What about input devices? What sorts of input devices are there?

Countless, I'm sure. Let's ignore keyboards because BORING, and ignore sensors like because they sort of get used for both human input and ambient status type stuff CONFUSING. What sorts of pointer input should our web app handle?

This is interesting, because pointer interactions are inherently visual [in typical use]. So the input method doesn't just matter from an implementation perspective, but also the overall look and feel of our app. App design is of course more than just the visible surface, but it's sure a large part…. The interface layout needs to reveal and support all the manipulation opportunities available.

Even just among the pointing devices there's a huge potential range that sees at least occasional modern use. You've got everything from old standbys like the Space Navigator to newer like Wii-motes and Kinects and the Leap Motion. I appreciate new input devices like these, and enjoy testing them out as I have opportunity, but at the end of the day there's only a few "standards" that end up doing most of the work.

(There's a whole other set of input devices that we can't neglect either, though: those known as "assistive technologies" for those with particular physical needs. Even amongst mouse or stylus users, there's a range of ability that I've glossed over in the summaries below. But generally these devices still fall into the same pattern from your app's perspective.)

Against all the variety, consider these two questions:

Put in those terms, the following four device families could reasonably represent all pointing devices. If our design supports all of them properly, and via the conventions users expect on the web, our app is well on its way TO EXCELLENCE AND BEYOND. Are you ready?

Mouse

A mouse, trackpad, trackball, eraser head, etc. is an indirect form of manipulation. That is, these kinds of input devices control a pointer that is not only physically separate, but also reacts abstractly to physical motion. Even disregarding the office prank made possible by any regrettable symmetry, the sensor mechanisms and acceleration algorithms allow a divide between the motion of the device, and the motion of the pointer it represents.

I say "allow", because this abstraction is useful. Because of it, the mouse is a precise form of manipulation. A relatively large motion of the mouse may manipulate its cursor around a tiny pixel. Or consider dragging an item on screen, but reaching the edge of the mousepad halfway through — not a problem if you can pick up the mouse and move it with the button still held and the cursor remaining in place. This is a form of precision too. Even the ability to "hover" with the mouse over a target, distinct from clicking it, lends itself to precise manipulation.

Touchscreen

Better known these days as: "multitouch".

Touchscreens offer direct manipulation. Your finger is the pointer for all practical purposes. There's not much abstraction, either your finger is pressing/moving somewhere right above the display, or it's not.

But this manipulation is very imprecise. Being a pointer implies being located at a "point", but the contact between your finger is actual an "area", roughly elliptical and covering — covering! — a relatively large amount of your target. A touchscreen may have pixel accuracy at a technical level, but it can be difficult to use it effectively (precisely).

Stylus

Now a stylus (or pen) is interesting. Though the stylus famously fell out of favor as multitouch became the new mobile idiom, it shines in terms of input characteristics.

With a digitizing screen, the pen's form of manipulation is both direct and precise. It does calligraphy while the touchscreen is daubing on war paint, yet gives a firm handshake where the mouse can only send telegrams. The tip of a stylus covers very little of the screen (if any, given parallax) but leverages the same counter-balanced motor control as writing and using chopsticks and picking out splinters.

There's a broad spectrum of stylus/pen input, from graphics tablets (which of course are indirect) to the old PDA-style resistive screens (which were hardly precise) but a good implementation even allows "mouseover" (hovering) and distinct clicking options with as much control as a mouse, combining with the tilt and pressure sensing which brings in the nuances of real writing as well.

In terms of direct/indirect and precise/imprecise the stylus would be the clear choice — if only I could remember where I left mine!?

Touchpad

Is there an input device for our final quadrant? One that is indirect but not precise? Indeed there is!

Many trackpads these days are perhaps better called "touchpads", not to be confused with those TouchPads. They are the "graphics tablet" analog to the touchscreen, primarily controlling a traditional "mouse" cursor but also capable of sending any sort of multitouch gesture you can squeeze within their perimeter. Gesturing on a trackpad is about as abstract as could be, but becomes quite natural in its own realm — which in my experience seems to gravitate towards system-level gestures (manipulating window state) more so than multitouch manipulation of visible targets.

Unfortunately, even though there's some plenty of use cases, as of this writing these indirect multitouch events are not exposed (as such in their raw form) to web apps. All the other manipulations above are — through mouse or touch and/or pointer event APIs.

Semantic input

How, then, do we design for the various forms of input?

First the bad news: that for a web app there is no simple "mouse" vs. "multitouch" .

But usually doesn't matter…

keypress, mousedown vs. click

comments

Friendship and friction

[ed. note — I'm posting some lightly revised posts I started a looong while ago but never finished/published. This draft had a `last_modified": "2016-08-27T06:54:13.650Z"` and may have been started earlier.]

Last month, &yet closed its physical office next door. By that time, several of my friends there had already left or been let go. The rest moved half-heartedly to a room in the regional co-working space. I haven't seen them since. Admittedly I'd taken our proximity for granted so much that I hadn't seen them much before the move, either. But still: we were neighbors, and now we're not.

At the end of next month, I'll be losing my own little office, and the people up and down the hall outside it. Here too, the arrangement started with a large number of friends (who I often took for granted), and has gradually dwindled to a small number (who I may rarely see again). Some of them may end up in their own rented room, in that same co-working space. Others may just go back to working from home. I might too.

"Long distance" relationships are particularly hard for me, and probably even more so when it comes to friends. Why so much friction? Well, is it weird to send a Former Colleague a message out of the blue just to say "hi" to him? To travel to their city because it's "been a long time"? Even just across town, is it A Professional Thing to suggest buying lunch together somewhere, or is meeting for coffee less of a big deal? (Do they even like coffee? I bet they're probably really busy anyway. Safer to wait until I need a specific favor, to email and let them know I… care? miss them? found them useful? Come to think of it, they must remember how selfish/annoying/overdramatic I was; they're probably glad I don't bother them anymore.)

The (superficially incidental) camaraderie of an office environment helps me cope with these feelings.

But starting over again, as a daily visitor to a shared desk across the noisy highway, I'm not feeling up for. A co-working space is awkward to me: "Hi, I need a subscription to Human Connection, should I swipe or use the new chip?" I've lived with that discomfort before: hey, for a while, I was the one emailing the receipts! I know it's a mere formality, a necessary weevil, a minor background detail. But it's there.

"It's there" of the co-working space also reminds me "it's there" — not "here". The space itself is in another part of our suburban sprawl, an interesting part, an overlooking-the-river part, but not a part I'm in the habit of visiting. I'm not sure it's in "my" part of town, if that even means anything here in the Tri-Cities. I really have no idea what "my part" is most anywhere, anyway… There's things I owe my family, namely: the things I owe my clients. Everything else ends up as a useless distraction from suburban survival.

So I've been browsing the RVs and campers on Craigslist. I'm looking for something I can park my lonely 9-to-5 into, for as long as I know. Something we could start up and drive, when there's somewhere to go.

comments

2015 in review

[ed. note — I'm posting some lightly revised things I wrote a while ago but never finished.]

2015, and by rough approximation the thirtieth year of my life, was no /annus mirabilis/. It was (as far as I can tell) a good year, but it was a hard year.

It started with grand plans.

The chicken coop, aquaponics greenhouse, snail jars, and rabbit hutchery had all mostly come together. Certainly a few loose ends in each design, but seemingly minor issues that could be lived with. Things like, could use better thermostats, a demand-based automatic fishfeeder would still be nice, improve a bit of plumbing here/there kind of stuff.

Likewise, the yard was nearly full of perennial herbs and berry bushes and fruit trees. Sure there were a few plants needing replacement, and a few more to squeeze in here and there. And of course the annual challenge of getting the vegetable crops to sprout, thrive, produce, and be harvested at the proper time to properly perish of neglect on some shelf in the fridge. But altogether, it seemed like a lot of my hard work in recent years, designing and implementing "suburban agricultural systems" could wind down and start to pay back. The loose ends would simply be fun projects amongst other interesting ideas.

With these thoughts in mind, I ordered a small CNC off of eBay to help fabricate circuit boards to the control the animal's water heaters, make our lawn less water-wasteful, monitor fish tank parameters, and who knows what other devisements of saved labor might arise. (I also ordered some house crickets to breed, figuring a bit of entry-level entomophagy could be my final exploration in raising food on our neighbor-tempered quarter acre "farm".)

So the CNC arrived, we routed some smiley faces into wood and some test patterns into copper, learned how to lay out circuits in Eagle, and then got distracted with js-cnc after a promising start with a nifty parser generator — this was the only new personal software project of any significant ambition I ended up starting all year. (Well I guess in late December, I did start something that's tempting to make bigger. Also began a major refactor of an existing project at some point. I finished: none.)

I felt like I was finally settling in, but someone else in the family had a falling out with our home and/or my hobbies, etc. I tried to figure out if we could somehow fix things by putting a basement underneath the house/yard I'd been investing so much into. In lieu of that, when her parents visited for a week, we turned a back porch into a charming ??-season sunroom (electrical work: still unfinished) in order to add some square footage, somewhere the kids could do their schoolwork and assemble Lego.

But it didn't help. After I returned from a few trips to see my extended family, we decided to make a move. We found a different house before spending a single season with the sunroom.

Empty sunroom

Moving seemed to set off a long series of small disasters — first four of our hens were killed by someone's loose dogs (I finished the fifth, which was severely maimed). We went on a long previously-scheduled trip, in the middle of our move. Our only-half-empty fridge got turned off the day we left, turning the old house — which we had imagined finding a buyer for the week we got home — instead into the smell of a half dozen species of death. Additionally, many of our potted plants had got completely dried out, while the cricket kennels had gotten soggy. After the house was habitable again, some mismatched touch-up paint turned into a whole room repainting project. The kids splashed half a bathtub into the ductwork of our new house. Then I broke a window getting a new aquaponics system into place, and in the month I spent waiting for the glass company to do something with my pre-payment in full, the greenhouse around the old system blew apart and all our tilapia froze. (The original $3.50 horde of now-obese goldfish survived, though… …yay?) We discovered our old house was likely worth pretty much what we paid for it plus not quite how much we had invested into it, before subtracting out the realtors' cuts.

Not to mention the disaster of taking a tenously-organized house, shoving it into boxes, and shoving said boxes into a not-even-ordered pile in the new garage. And doing this for like three (non-consecutive) months, while I kept realizing more things that need moving, fixing, finishing before handing the old house keys to someone else.

Also not to mention, paying two mortgages the same months my brain had pretty much decided that hibernation is the only coping mechanism left. And then discovering that the HVAC system in the new house should be replaced, but the home warranty company would prefer to keep the premium our seller had paid them than send out qualified contractors.

2015 was frustrating. All the things you're supposed to do before you're thirty i.e. old, like sell that successful startup you created or at least, I dunno, learn another foreign language before all your neuroplasticity gets replaced with nosehairs. Well they didn't happen. In a whole year I finished barely any books even, nor unleashed much previously-acquired knowlege onto any unsuspecting /status quo/.

More wild dreams died in 2015; I'm not sure if there are any left. Maybe growing up means each year accepting more and more deeply that I can't change the world. Only, perhaps, outlive it.

I have three boys now. The oldest is well through his first grade curriculum. The youngest is almost two. All three of them are bright, and diligent each in their own manner. A stable family life for them, whatever honestly-earned resources I can contribute, and some interesting activities to do together — as 2016 begins things are at least feeling better on these fronts.

risk/glamour -> fear of God

Tobias is in first grade Malachi turned four Avery is still single

comments

Callsigns and cryptocurrencies

[ed. note — I'm posting some lightly revised posts I started a looong while ago but never finished/published. This writing dates from late 2015; for context my callsign was issued 2015-July-31.]

During a brief lull in deliverables and/or focus earlier [in a past] year, I dove into study of two topics. Both had been on my list for a while, and felt like they would be worthwhile research.

Bitcoin et al.

Cryptocurrencies keep coming up in the literature and even with a few of my clients. The sentiment is that Bitcoin was a breakthrough in… ???

Greenhouse heater

Well, I now understand the technical side of the system significantly better. The human side of the system, is basically replace the trading floors in New York with a few 4chans worth of trolls and replace the Securities and Exchange Commission with all the armchair experts on Reddit — JUST PURE MATHEMATICS DRIVING THE DESIRES OF THE PARTICIPANTS. Seriously crazy, name calling, grudge holding, back stabbing, swindling, speculating, gambling, pipe dreaming people, splattered all over where you go to just learn more about how the blame thing works. After a few weeks of trying, I particularly gave up guessing the future of Bitcoin. Figured it'd be wisest to keep the protocol knowledge while leaving the world economy to In God We Trust.

Besides Bitcoin itself, I became interested in PeerCoin for its experiment with a more energy efficient scheme, Namecoin as the oldest and Ethereum as the newest application beyond typical cryptocurrency, and might keep an eye on Ripple Labs in case they succeed in real-world partnerships that end up mattering.

I think there's a lot of misunderstanding, not to mention misdirection, as "cryptocurrency" finds its place in history. But there's also potential, in large part due to the network effects of all the attention (positive and negative) Bitcoin has received. Right now the best advice I can offer: send any BTC you don't want to 1natevwh9fm1P8Ax3AKtVbzizvZKe4CEd.

Amateur radio

I next turned my attention to a clearer goal: get a ham license. The entry class privileges require passing only a rudimentary Technician exam, but I bought all three study guides since my main goal was to learn more about radio frequency electronics and antenna design. As it worked out, I was able to get through all the material before the next scheduled local exam session, and by the last day of July had received my callsign with full privileges: AF7TB

This was a nice big "mission accomplished" in one sitting, but there's still a lot more to learn through further reading, connecting, and doing. In this regard it's been much more fruitful than my other research topic. Cryptocurrency is new and propitious — and fraught with hype and shysters. Ham radio has a very different feel — it is worryingly old, perhaps past its prime and more than a little self-conscious about that. Where cryptocurrency has itself on the schedule for usurping the future of all political prosperity, the amateur radio tradition doesn't quite know where to go in a smartphone world.

The people on the air so far have been polite, and patient. I've joked, in seriousness, about "augmented humility" in contrast with more widely read visions of amplified human intellect and power. Without sentimentalizing ham radio, perhaps there is a bit of that here — waiting a decade for good solar weather to return, staying up all night but not getting a single signal back, suddenly making an unexpected contact halfway around the world after an "insignificant" antenna tweak.

There's always more knowledge to colonize and engineering to conquer in amateur radio, but at the end of the day you can't help but wonder if it isn't the "Remarks of a Personal Character for Which, By Reason of Their Unimportance, Recourse to the Public Telecommunications Service Is Not Justified" to quote the FCC rules governing the service — I wonder if it's not the friendliness factors that make figuring out the physics profitable.

comments


All posts

Subscribe