Dav Yaginuma;
Husband, Father, Hacker, Thinker, Maker;
San Francisco.

Twitter Updates

    follow me on Twitter

    Dav's bookshelf: read

    Star Wars: Han Solo
    liked it
    tagged: graphic-novels
    See you at the 7: Stories From the Bay Area's Last Original Mile House
    it was amazing
    There's a little dive pub (turns out actually not a dive anymore) I'd been meaning to go to for years, and finally stopped by a couple of weeks back. I love checking out the old San Francisco spots that persist through the decades and ha...
    The Undefeated
    really liked it
    Wonderful poem and great illustrations.

    goodreads.com
    Blog powered by Typepad

    « October 2011 | Main | October 2018 »

    May 2017

    ld use smart phones for dating in 2011), and when my co-founder got us acqui-hired by Live Nation (for enough money to pay back our investors' convertible note and pocket a little for ourselves, he's really good). Anyhow, the main reason I liked that gig was the people. They were just a great bunch to hang out with, and their product was visionary and interesting as well. I was only there for ~6 months before I ended up at Live Nation, and soon after they also got acquired by Yahoo.

    Their product was an iPhone app that functioned as kind of an expert system personal assistant. It could hook into your calendar, your contacts, use location services to help you get to your next meeting, that kind of thing. The CEO was a highly thought of designer (and not just pixels, but UX chops too) so the product was beautiful and a joy to interact with. The small founding product/engineering team was also bunch of accomplished talented people. Notably several were from the early Netscape days. These people helped make history already, so I was pretty happy to be rubbing elbows with them. Every single one was a particular joy to spend time with in their own way.

    One of my first tasks was to help overhaul the bespoke windowing system one of these founding engineers had created. At the time, Apple had an official SDK for creating iPhone apps including a windowing system called UIKit. Rather than learn this new system, he had taken an old windowing system he had previously created on a different operating system in a different language, and ported it to the iPhone's operating system in Objective-C. The problem with this non-standard approach (I think it was called something-Box, let's call it DBox) was that he was the only person who really knew how DBox worked. If they were going to grow and hire more iOS engineers, either they would all have to learn DBox or the app would need to be refactored to use the Apple's standard UIKit system. Switching to the standard system not only would make the new engineers more productive, but comes with all the other benefits of using a broadly used and official approach: easier to hire experts at it, continued improvements by Apple, etc.

    So I rolled up my sleeves and got to work figuring out how to convert to UIKit. At this point the app was already quite built out with many screens filed with text, buttons, images, animations ... and all of it was some component of DBox. It took a few days of studying the system but I started to get an idea of how DBox worked. It wasn't easy because compared to UIKit which was built by a team at Apple and battle tested across thousands of apps, DBox was limited, bare bones and a bit more difficult in general.

    One day at our morning standup, where the team gathered to update each other about the things we were working on, rather than jump into technical details I said something along these lines:

    Back in the early 80s I subscribed to Dragon Magazine, a monthly periodical for Dungeons & Dragons nerds. It was mostly filled with game-specific articles but it also often featured a short fiction story. One in particular that always stuck with me was about a person who entered a massive dark evil forest for reasons unknown.

    If you want to read this very short story for yourself first, issue #54 is available on the Internet Archive (here). It's on page 49. Scroll down past this image of the cover to continue with my recollection of the story.

    Screen Shot 2022-10-22 at 9.53.10 AM

    This was a gnarled woods that few dared to enter, and none had came back out. Everywhere and everything in this forest was corrupt and trying to kill the person from animals and poison plants to treacherous passages, but they trudged deeper and deeper until they reached the very heart of the forest. When they reached the very center, exhausted and bruised, they opened a pouch and drew from it a single seed. This person was a druid, a wizard of the natural living world. They planted that seed in this deepest depth of this forlorn forest and began to chant spells of growth and protection causing that seed to grow into a massive and powerful conduit of Good in the center of the Evil wood, and as they continued the Good spread outward relieving the surrounding flora and fauna of their malevolent enchantment until the whole forest was free and wonderful. Yesterday, I concluded, I replaced a DBox button in our main screen with a UIButton.

    LOLz. This morning I woke up thinking about that story again, probably because I am once again working for someone from that team and decided to try to see if it was online. I did some searching on DuckDuckGo but nothing was really turning up. There is a comprehensive list of all the short fiction ever published in Dragon Magazine, but none of the titles rang a bell. The indefatigable Internet Archive of course has every issue of Dragon Magazine available for download as PDF (other than the one featuring the lone George R.R. Martin story of course :eyeroll:). I knew the story had to be from the late 70s / early 80s so I started poking around to figure out where that started and decided to download issues 40-99 and search through them. I downloaded a couple through the IA web interface, noted that the URL of the PDF was standardized, so I wrote a quick ruby script:

    (40..99).each do |i|
      puts i
      `wget https://archive.org/download/DragonMagazine260_201801/DragonMagazine0#{i}.pdf`
      sleep 0.25 # just a good habit
    end

    Then I converted all the PDFs to easily searchable text:

    find . -name "*.pdf" -exec pdftotext {} \;

    And finally, grepped the .txt files for something I could remember from the story. "Druid" turned out to be too many hits, but "seed" was only 20 or so, and it was quickly obvious that the usage in issue #54 was from a story. It took about 20 minutes from waking up thinking about this story to being able to find it and read it again for the first time in ~40 years. That's a great way to start the day! The story is as powerful as I remembered, although I had forgotten important bits, particularly that it is told from the point of view of the wilderness itself. Also that the druid was a half-elf, which was always my choice of character to play in AD&D since I was a half-Asian half-Caucasian myself.

    Besides the hapa-based identification with the hero why has this story stuck with me all these years? The month this issue came out, I turned 14 years old. I was a poor-not-white-enough-trash kid growing up deep in the actual woods of North Carolina. My home life with my retired Marine Corps alcoholic adoptive father was physically and emotionally abusive. I was bullied at school by racists (both white and black). We lived pretty far from other houses, surrounded mostly by a forest owned by the local paper mill and I spent a lot of time alone by myself venturing into the woods with my dogs, playing adventurer. I didn't feel powerful though, and was troubled with my own burdens of anger. I didn't feel I could change things although I desperately wanted to.

    At 14 1/2 I started working as a dishwasher, and made enough to buy a Commodore 64. Coding became the new forest to explore. Christmas of 1982 my mother bought me a 300 baud modem and I've been online ever since; it took the rest of the world almost two decades to catch up. Somewhere along the line in this digital online world I started to live, as the short story ends, "for life and not hate, free to have good with my evil and calm with my violence."

    | | Comments (0)

    | | |

    How to Become a Demonstrably Better Engineer

     

    A friend who was looking for a new job texted me "how does one become a demonstrably better engineer?"

    Given what I knew of their context, I assumed they were looking for something actionable that would ratchet them up a notch in interviews (perceived more senior). The question stumped me. I just didn't have a good answer. Given the longstanding situation where companies interview in a manner optimized for the software engineering challenges of last century, there are only two ways I really know of that typically manner: be recruited directly by ex-colleagues who know your skills well, or excel at those wrongly optimized tech interview shenanigans. Sometimes the timing is off for the former to work.The problem with the latter is  that the longer you spend actually doing typical 21st century engineering work, the less you remember how to pass those useless puzzles that rarely come up in real work (and when they do, are more quickly and reliably solved by doing a litle research rather than trying to implement something from 30 minutes at a white board).

    It stumped me so much, I didn't reply for a few days while I mulled it over. Then I went on vacation for a couple of weeks, feeling guiltier every time I remembered I still didn't have an answer.

    I've spent a couple of decades hiring engineers off and on. Most of that time I've conducted the exact same pair programming interview, but that would be a whole other post and not likely to be relative to my friend's interviews. I considered how I would start to believe someone was a senior level engineer in the absence of my usual rubric.

    I still don't have a great answer but I do have a couple of thoughts.

    1) I believe that the best software engineers are like blacksmiths.

    Blacksmith in Dong Yang, China

    Photo credit: Yi Chen

    Both blacksmiths and software engineers make their own tools. The tools they use on the job are made of the same stuff they produce, so a master of the craft should be comfortable doing this. Making your own tools demonstrates not only that you understand how to do basic tasks for your job, but you probably also understand which tasks are the most important to the overall goals, and have creative thoughts about how the approach to those tasks could be improved. So one way to demonstrate your skills are to be able to talk about the tools you have made and how they helped you and/or your colleagues reach team goals better.

    • Maybe you automated a tedious task that used to waste time and/or allow human error to creep in.
    • Maybe you extracted data on your processes and built a report to show where bottlenecks lie.
    • Maybe you built a tool to visualize your app logs in a richer way, allowing issues to be found quicker.
    • Maybe you extracted code to a sharable package so that it could be shared by system components.
    • Maybe you developed an IDE plugin that improved support for a custom part of your system.

    I believe conversation about tools you've built reveal a lot about how an engineer thinks and can highlight the skills with which you feel comfortable. It can also be interesting to discuss the tools you didn't build and why.

    2) Have a portfolio

    Screenshot of Github project Issues

    One of the major problems with demonstrating your skill at interviews, is that probably all that great code you've written for past employers is closed source and unavailable to show. One solution to this is to have contributed to open source projects. Not everyone has time to start and maintain their own meaningful Open Source Software project, or even to make significant contributions to one, but just like the professional artists' need to maintain a public portfolio, there is a benefit to having something on Github you can point to and talk about.

    I don't plan on ever being a hiring manager again, but if I were I would consider the following as an addition to my usual pair programming exercise: ask the interviewee to be prepared to talk about a few contributions they made to OSS projects. It could be simply finding open Issues in an existing project and submitting a PR for it. Some things that might be interesting to discuss:

    • Why did they choose the project?
    • How did they communicate with existing contributors? (if the communication was public on Github, walk me through it)
    • Why do they think the Issue had not already been resolved?
    • What approaches did they consider in implementation? Why did they decide on the one that they did?
    • What tests did they add to ensure their implementation was correct?
    • How did they handle PR feedback?

    There are similar opportunities to have something in the OSS ecosystem without even contributing shipping code:

    • They could pick a project with a lot of open PRs and in a technology they know well and simply code review them. In fact, given modern prevalence of code reviews, I think this would be a great thing to demonstrate to an interviewer.
    • They could contribute tests to low code coverage projects. It's an even better story if these tests exposed previously unknown bugs!
    • They could contribute failing tests that highlight an open Issue.

    Obviously the interviewee could cherry pick their best OSS contribution narratives to demonstrate, but as an interviewer I would value recency so even if you have a great story to tell and show from years back, I would still put a little time into having one or two recent examples as well.

    3000 year old Turfan Man Pants

    Some hipster retailer needs to make replicas of these 3,000 year old horse mounted fighter pants and sell them on Etsy.

     

    Screen Shot 2022-06-20 at 3.52.54 PM

    The pants' basic design is strikingly similar to the pants most of us wear today, but closer inspection reveals the level of engineering that went into designing them. [...] And all of those components were woven as a single piece; there's no evidence of any of the fabric having been cut. [...] The Turfan trousers are an extremely functional design, but they’re also pretty damn fancy. As the weaver was working on that stretchy, roomy crotch piece, they alternated different colors of weft threads to create pairs of brown stripes on an off-white background.

    Source credit: The Prepared newsletter

    30 years of ideas

    Since the early 90s I've been keeping a list of various ideas I've had for software products. It's not an exhaustive list, just the ones that I took seriously for some period of time. There are many others that never made it past the "wouldn't it be cool" concept phase and thus never made the list. Many of these listed below didn't make it much further than a couple of weeks of design and/or proof of concept coding, but some were actually pretty fully realized. Some were collaborations but the bulk were solo efforts. A lot of these read as kind of "so what" now, but at the time I was working on them, they were novel ideas that didn't really exist yet! For instance the genealogy one was a couple of years before Ancestry.com and the like appeared. I recall my beta version of that mapped out the Simpsons family tree since that was one most people knew well at the time.

    I would use this list for the common "Prior Invention Disclosure" you provide when taking a new job. I'm starting a new job this morning, and it could well be the job I end up retiring from. I figured I'd retire this list as well, but posting it here for posterity. I might come back later make longer posts for some of these.

    • VR app for decorating and sharing 360 media
    • VR team sport game that mimics rules of rugby and can include players not in VR.
    • VR training app for rugby wisdom
    • AR app that allows creating puzzle mazes overlaid in the real world that can be navigated by players.
    • AR app that visualizes a heliocentric stable grid of nodes through Earth’s orbit.
    • Tool to create & interact with quizzes based on importing a spreadsheet.
    • Periodic True/False/Confidence quiz and social system.
    • Warehouse Management Tool for creating/processing picklists, and purchasing/printing shipping labels.
    • Professional rugby 7s production with specialized pitch allowing multi camera option for viewers.
    • Rugby club app for tracking game stats in real time
    • Rugby 7s fan site for tracking players/staff across social media, collecting and visualizing data and tournament info
    • BideAndSeek tool that takes text input (usually from paste buffer) and uses known patterns to match it to a particular URL. 
    • FamilyBank, an Alexa skill that allows a family to manage child allowance balances in Spending/Savings/Charity accounts.
    • Tadima/Okaeri mobile app and server system utilizing BT beacons to do tasks when the device nears the beacon.
    • Mobile phone based dating app with reverse social graph and in-app economy features. (with Romain David)
    • ExqCor system for audience-collaborative real time script writing and on stage site-reading.
    • Handheld locative devices and support system.                   
    • Group notification system with web and voice drive components.
    • Online retail management system with general shopping cart and browsing features.
    • Online invitation management system.
    • Online retailer aggregation system for gift registries.
    • Ephemr: way to send ephemeral photos not subject to screenshot capture using biological vision technique.
    • EyesOn: system for geolocation photos of a stationary object and aggregating into a fly-through visualization experience.
    • Skedu: easy to use conference schedule creation and sharing tool with mobile app.
    • iBurn: app for burning man attendees
    • Real estate locative software for tracking home sales via user defined neighborhoods.
    • Collaborative system for creating, distributing and reviewing instructional audio content.
    • Genealogical collaborative online software.
    • Personal contact organizational system for “social hubs” (with Joi Ito).
    • Collaboration studies interdisciplinary mapping system (in conjunction with The Institute for the Future).
    • Travel planning site that aggregates travel fares and lodging rates from a given destination.
    • Adult social network with Flash-based interactive creative facilities.
    • Sailors social network with educational, trip planning and historical reference facilities.
    • Video blogging tools with special integration with programming interpreters.
    • System for displaying synchronized videos on mobile devices for multidimensional storytelling or informational purposes.
    • iNag reminder system with custom text and voice delivery (in conjunction with Todd Siegel)
    • Taste Profile Builder multiplayer game (in conjunction with Todd Siegel)
    • Internet loan system that facilitates offering and managing of loans.
    • Blank White Server technology that allows user-driven server process customization.
    • Systems that assist in strategy and real-time game history analysis for online poker players.
    • 3-D anaglyphic (red/cyan) rendering and visualization software.
    • Peer to peer social darknet that allows encrypted peer to peer communications via a user relative authentication and authorization system.
    • Captcha software.
    • Distributed (telecommuting) software engineering, consulting and management processes with a focus on “follow the sun” development.
    • Virtual world/real world interface via RPC and audio/visual transmission.
    • Online chess game analysis system.
    • Photographic virtual tour software assembled from still photos..
    • Social network and group messaging system mediated via mobile device and the internet.
    • Flash mob coordination system via web network and mobile devices.
    • Collaborative educational software that allows creation, sharing and engaging in “pop quizzes” tied into browser and OS activities.
    • OpenCinema software that facilitates collaborative script writing, storyboarding, casting, shoot production management, marketing and distribution of cinematic works. Animation/graphical design and display software for decorative LED displays.
    • Electronic Lab Notebook for chemists with fast molecular substructure search capabilities.
    • Point of Sale retail management system for DOS systems.           

               

    Designed By a Tree

    I love this concept of creating a font which is carved into a tree and then updated yearly by capturing how the tree has modified it by growing.

     

    Screen Shot 2022-05-25 at 11.35.45 AM

     

     

    Food Delivery 2021

    Ran across an interesting project which at initial glance is about food delivery called Free Food. As I explain below, that's free as in speech not beer.

    The creator of it, Noah Levenson, has a pretty good intro video:

    image from github.com

    Given the project name, at first I thought it was about getting food that would be thrown out distributed to hungry folks, but watching the video, it became clear that this is more about being able to order food directly from verified local restaurants on a decentralized trust network and avoiding the (almost criminally) inefficient middle man services like DoorDash, GrubHub, UberEats, etc. The README for the project explains the goals well and has a quick run down on why the middle man food "delivery" apps/services are so bad.

    Using a decentralized network (think BitTorrent more than BitCoin) it allows for restaurants owners to verify their ownership of a particular local restaurant and publish their menus. This protects against the type of unauthorized listings and other fakery that the middle man services engage in, so you know you're dealing with the real restaurant. Hungry people can find the menus of nearby restaurants and place orders. Reference implementations of the diner and restaurant clients are shown, although I didn't see the source for them available. Presumably the restaurant uses its existing delivery staff for the delivery, or you can pick up.

    This is an interesting project, particularly because it's potential goes well beyond just restaurant delivery. Really any resource that can benefit from decentralized (no valueless middle man required) localized (relevant to you, where you are now) discovery can benefit from this type of system. In theory a delivery drivers could advertise themselves as resources and the system could do the matchmaking. Since the network is decentralized this would mean they wouldn't have to share their fee with a middle man network provider.

    I'd definitely give this a shot if it started up in my area. In the meantime there is a better sort of food delivery service that I've been using lately and have been quite happy with. It is called Club Feast (use my referral code dav1 if you try it out!). While it still is a middle man service, they have a twist on it that should benefit both the restaurants and the delivery drivers. It requires you to order your meals hours in advance (it used to be the previous day but in the past month they have been able to move it up to same day). This allows the restaurant and delivery network time to optimize the food preparation and the routes. It is a subscription service, which means you sign up for a certain number of meals a week and pre-pay for them as credits. It lets unused credits stack up and you can pause, so it is fair to the subscriber. The meal credits themselves are $7 each, so the meals are inexpensive although limited to what the restaurant decides to make available for $7. There are tons of options though so that has not been a problem for me in San Francisco. It seems like a great win-win-win compromise for the restaurants, drivers and customers, although I would love for a journalist to investigate and report on the actual outcomes.

    Screen Shot 2021-10-26 at 10.11.51 AM

    Would a robust Free Food network be better than Club Feast? Perhaps? CF optimizes a somewhat different problem, but perhaps that could be layered into FF as well? Is there additional value CF could bring that benefits from its centralization? Not really sure. Some things I am sure about are that both of these are better than the dominant centralized apps, and that Free Food really needs to change its name, and the paltry amount of tests in `libfood` is scary 😂.

     

    An Ode to Roblox as a Gathering Place

    I haven't spent a lot of time in Roblox, even though both of my kids have spent significant amounts of their time and my money there, but this essay about how it compares to those places where teenagers hang out and create their own space away from the rest of the world really resonates. It makes me want to give it a try again.

    Some choice excerpts:

    image from i.imgur.com

    On his first experience in Roblox:

    In one of the very first games we played together (a work-in-progress safari game, the link to which I have since lost), V became a zebra, and I was a lioness. We ran around a broad plain populated by other animals, trees in the distance, low clouds overhead, and the buzzing of insects on a 2-minute loop. The chat was full of messages from prey to prey, predator to predator. V was almost immediately killed by a cheetah who then got in the chat to say, “Overyone come to pr,” “theres meat.” Summoned, I did so, and as I ate the still-living digital body of my friend in the company of a stranger in the shape of a wild dog, I thought, “Oh. This is special.”

    On the game creation tools:

    But perhaps the most interesting thing about Roblox Studio is the Toolbox. Other game engines have assets stores, but none of them feel like this: a rollicking, copyright-fucked, messy, virus-filled, unsortable pile of labor and of love.

    On the long tail of forgotten worlds (games) waiting to be stumbled upon:

    But the things I am making in Roblox are not what are unique or compelling about Roblox, and the same could be said for most of the big games that populate the platform’s front page. Instead, what is so special here are the millions of bizarre little worlds, all networked together and waiting (mostly empty, sometimes for over a decade) to be dropped into and explored with friends.

    On the "brutal" monetization situation:

    As a developer, you can monetize your own games in a variety of ways, from the above-board (tip jars! cosmetics!) to the scammy. Developers earn 70% of Robux spent in their games, which is a pretty standard cut for an app store/developer split. However, getting USD back out of Robux is a different story. The payout exchange rate drops to $0.0035 USD per 1 Robux, meaning the takeaway in real world currency is roughly 24.5% of any in-game commerce—a brutally extractive exchange rate.

    Fighting Date Rape With Nail Polish

    Now that Bill Cosby got an early release from prison, my friend Paul brought my attention to the company Undercover Colors that developed a clear nail polish that allows you to check a drink for drugs by dipping a fingernail into the drink. The nail polish changes colors if drugs are encountered.

    Brilliant! And love that it was founded by NC State students (didn't to school there, but did participate in their rugby club as a townie).

     

    image from i.imgur.com

    It looks like the product has evolved slightly to a more typical strip test kit though. I supposed the manufacturing costs proved too high? Hopefully they are still working on the more subtle version.

    Post Pandemic Predictions

    I started compiling this list before George Floyd was murdered, and its triteness bothers me now so I'm just going to post it and move on.

    In no particular order:

    • Masks largely stay culturally accepted in flu and allergy seasons from now on in the USA, but will always carry a political connotation so some groups will never wear them and mock those that do, but like punk rockers have always mocked people in suits.
    • 15 years from now, a common trope will be determining how old some young adult is by what basic K-12 subject they seemed to have completely missed. "How old is Alexandra? Well she can never remember what a gerund is, she must be 27-28."
    • It'll be seen as the inflection point for polyamory going mainstream when the released masses just can't get enough of each other 😂.
    • 2021: long hair on dudes is back in fashion.
    • The artist live stream phenomenon is too beloved to simply disappear, but outdoor live music venues are going to see a boom. There might even be a combination of the two.
    Next »