I know that running a blog on my own server has a lot of friction. I understand that making an account just to make a comment is a pain. At one point in the life of this blog, I had Facebook integration for comments, but that plugin stopped working and I would have probably deleted it anyways because… Facebook.

So, there’s a new plugin that makes WordPress instances ActivityPub compatible, and I’m trying that out. Let’s see if this post makes it out into the Fediverse…

Granblue Fantasy: One Year In

Last year, after holding out for as long as I could, I finally got sucked into Granblue Fantasy. A Final Fantasy XI collaboration had been announced, and that was the final straw that got me to actually commit to it. The 8th Anniversary event was about to start, so this was a great time for a new player. I got showered with more SSRs and free stuff than I would normally. I settled into a somewhat regular play pattern, but progress has been irregular over the last year.

I thought it might be interesting to give a state of where I am now, at almost exactly one year in. We’ll see if I do this again in another year, but here goes.

A few caveats: Unlike established players, my grids are not always fully leveled. I’ll point out where most of these are, but enfranchised players will be able to tell by the weapons not being at the right skill cap. (Not that I’d be able to remember them all off the top of my head, I don’t know how you guys do it).

General Progress

I’m currently Rank 168. I’m in Chapter 96 of the Main Story (yeah, I know, I’m so far behind). I have all Row I, II and III classes and most of EX I (missing Dancer and Mechanic) unlocked. In Row IV, I have Berserker, Chaos Ruler, Elysian, and Lumberjack fully leveled and mastered, and am working on Relic Buster and Spartan. I’m also working on Viking in Row V. I haven’t unlocked any EX II yet.

I have a Sword of Bahamut at Lvl 200/200, Skill Lvl 18/20. I was favoring Humans and Draph in my grids, so this is my primary Bahamut weapon. Man, those last two skill levels are paaaaaainful. I also have a Dagger of Bahamut and an Axe of Bahamut, both at Lvl 150/150, Skill Lvl 15/15.

I have been slacking a bit on my Dark Opus weapons. I’ve been making them, but I’ve been waffling on what pendulums to use, so they haven’t found their way into most of my grids.

Most days, if I remember, I do Omega Pro, Omega Hard Pro and Angel Halo Pro. Depending on how much time I have, I’ll also try to do the event fights, but if I’m busy at work that sometimes takes too much attention and time. I’ve also been doing the Omega Impossible and Regalias for M2 weapons, but that takes a big chunk of time so I’ve been doing it in spurts.

I didn’t realize how quickly I managed to get damage capped, so I’m still floundering a bit on how to increase my damage output. My current next step is replacing the M1s with M2s according to guides I found online, and I’m close to done collecting them, but many aren’t in the grids yet because I’m still so short on weapon exp and uncapping mats.


  • Seraphic: 4★ Lvl 150/150, Skill Lvl 15/15
  • Dark Opus Ω: 4★ Lvl 100/150, Skill Lvl 5/15
  • Dark Opus N: N/A
  • Xeno Awakened (True): 5★ Lvl 200/200, Skill Lvl 20/20 [C.A. DMG +5.5%, Stamina +1]
  • Xeno Awakened (Other): N/A
  • Beast Malus: 5★ Lvl 150/200, Skill Lvl 20/20
  • Proving Grounds (Ushumgal): 5★ Lvl 200/200, Skill Lvl 20/20 [Attack 15/15]

Primary Team: Lumberjack MC, Elmott, Medusa (Summer), Luffy

I really like where my Fire team is currently. Because AESes are the easiest of the M2s to get, I managed to finish them out by throwing Prestige Pendants at them. I’m still not happy with that Summer’s Mirage in the grid, it really should be a Dark Opus weapon or something.

I’m really happy with Medusa and Luffy. I’ve been trying out a few characters in the last slot. It’s currently Elmott because he is decent at feeding Medusa and Luffy charge meter. I had Zeta for a while, but she wasn’t synergizing enough with the team.


  • Seraphic: 4★ Lvl 150/150, Skill Lvl 15/15
  • Dark Opus Ω: N/A
  • Dark Opus N: N/A
  • Xeno Awakened (True): N/A
  • Xeno Awakened (Other): 4★ Lvl 135/150, Skill Lvl 15/15 [C.A. DMG +6.5%, Supp. C.A. DMG +4]
  • Beast Malus: 4★ Lvl 150/150, Skill Lvl 15/15
  • Proving Grounds (Clarion): 5★ Lvl 200/200, Skill Lvl 20/20 [Attack 15/15]

Current Team: Lumberjack MC, Lily, Cupitan, Clarisse (Summer)

I’m almost done collecting Tyros Zithers (7 of the 8 I need) to replace some of those Leviathan Gaze Omegas (although probably not the free 5★ one I got from the 8th Anniversary). I still have to throw exp and skill points at them. I also still have those two random Beast weapons in there because I don’t have other good options, although the Progression on the Aquamarine Hatchet probably does good work, as this team is very grindy.

Much like many of my other teams, I really like two of the members (Lily and Cupitan) and the third is just there as a placeholder until I find a good replacement. In Water’s case, I have that replacement in mind: I’m close to 5★ Feower. I’m 20 White Dragon Scales short and then taking the time to actually assemble and shard all the weapons, etc. That’s also assuming I haven’t accidentally used up some of the mats on other things since the last time I did inventory.


  • Seraphic: 3★ Lvl 100/100, Skill Lvl 10/10
  • Dark Opus Ω: N/A
  • Dark Opus N: 3★ Lvl 100/100, Skill Lvl 10/10
  • Xeno Awakened (True): 4★ Lvl 100/150, Skill Lvl 15/15
  • Xeno Awakened (Other): N/A
  • Beast Malus: 4★ Lvl 150/150, Skill Lvl 15/15
  • Proving Grounds: N/A

Current Team: Lumberjack MC, Melleau, Metera (Summer), Hallessena

Earth has historically been my weakest team, but it is also one where I’ve managed to get the M2s in (still 3★, though). At some point, I’ll actually switch to a staff class so I can MH that Kraken Club and get some FFXI representation going.

I really grew on Melleau when I managed to 5★ her, and I’m looking forward to Hallessena getting her rework. I’ve also used Sara and Alexiel in the team in the past, but I’m staying pretty offensive-focused for now. Melleau is decently tanky at 100.


  • Seraphic: 3★ Lvl 100/100, Skill Lvl 10/10
  • Dark Opus Ω: 4★ Lvl 147/150, Skill Lvl 15/15
  • Dark Opus N: 3★ Lvl 1/100, Skill Lvl 1/10
  • Xeno Awakened (True): N/A
  • Xeno Awakened (Other): N/A
  • Beast Malus: 4★ Lvl 150/150, Skill Lvl 15/15
  • Proving Grounds (Windhose): 5★ Lvl 200/200, Skill Lvl 20/20 [Attack 15/15]

Current Team: Lumberjack MC, Petra, Shion (Summer), Narmaya

Wind is in a weird spot. I’ve got my Dark Opus in there, with a gaping procrastination-sized hole where a pendulum should be. I’ve got that 4★ Ewiyar’s Beak that I got from a reward ticket of some kind. I have enough to make a second Last Storm Harp, I just haven’t yet.

Narmaya makes this team one of my strongest. I’m so glad I sparked for her. The other two teammates I’m less excited about. I have a few other options in my roster (Tiamat, Metera, Sutera) but haven’t experimented much.


  • Seraphic: 3★ Lvl 100/100, Skill Lvl 1/10
  • Dark Opus Ω: N/A
  • Dark Opus N: N/A
  • Xeno Awakened (True): 5★ Lvl 200/200, Skill Lvl 20/20 [C.A. DMG + 7%, Supp. Skill DMG +5]
  • Xeno Awakened (Other): Have the materials for it, but haven’t assembled it yet.
  • Proving Grounds: N/A

Current team: Viking MC, Kumbhira, Vira, Shiva (Summer)

My light team has always been my strongest. Even with that load-bearing leek in there. I swear, every time I think there must be something better, I replace it and my DMG goes down 20k. I should make a Dark Opus N for that slot or something. For the longest time, I put off the Seraphic because Shiva has a Seraphic multiplier, but I’m trying to become less tied to him. I am unlikely to replace Kumbhira or Vira for a while, though. I love this team so much and the three of them have gotten me through so much.


  • Seraphic: 4★ Lvl 150/150, Skill Lvl 15/15
  • Dark Opus Ω: 3★ Lvl 100/100, Skill Lvl 10/10
  • Dark Opus N: N/A
  • Xeno Awakened (True): 3★ Lvl 1/100, Skill Lvl 1/10
  • Xeno Awakened (Other): 4★ Lvl 150/150, Skill Lvl 15/15 [ATK +2%, Supp. Skill DMG +4]
  • Proving Grounds (Bismarck): 5★ Lvl 200/200, Skill Lvl 20/20 [Attack 15/15]

Current Team: Lumberjack MC, Magisa (Summer), Albert, Vaseraga

My Dark grid and team have always been in a weird spot. I never got characters I really wanted, but I did spark for Vaseraga and Lich (who is currently still gathering exp and I have to do her Fate episode to unlock her third ability) so I’m a bit happier on that front. I have a second Abyss Spine, but it’s not 4★ yet, so it isn’t an upgrade. Not much else to say. I’ll see how much this works once I get Lich into the team.


The 9th Anniversary Event is about to start. It’s unlikely I’ll get as big of a boost this time around, and there aren’t as many characters in the roulette that will go straight into my grids, but I’m sure there will be other free stuff that will at least give me a kick forward. I still have to grind out more Arcarum for Evokers, and Earth and Light Proving Grounds when those come around. I also still need so many Qilin and Huanglong Omega Anima…

Social Media 3.0

Once upon a time there was LiveJournal.

Oh wait, we need to go back further? I mean, technically: Once upon a time there was Usenet. The Usenet Archives remember me. And I guess after that was Friendster and Orkut and probably a few others I tried, but LiveJournal was where I first found an online home. This shouldn’t be surprising. This blog is the direct successor to my old LiveJournal, with all the content copied over.

What is sad is that when LiveJournal was bought, people scattered. I had already started using Twitter (as you can notice that most of my later posts were just accumulations of my tweets), but still occasionally went for long-form content. I had already reconnected with many of my LJ mutuals on Twitter, but some just drifted away from social media entirely or used the opportunity to clean-slate their online personas and not reconnect with their weak social links. Twitter had the benefit of being a gradual process. It was hitting the critical mass and therefore was the place to be. Some of the loss is sad, but LiveJournal is still technically up and running, so all that content is still there.

This Twitter failure is not that.

It was sudden. There is no one place for people to go, that everyone can go without blowing it up. Twitter has grown so large that no one platform could replace it, so we are fracturing. So I’m gonna organize my options.


Pro: I have lifetime membership.

Con: My feed is literally RSS feeds and scripts collecting tweets from my friends, so that’s a non-starter.

Pro: Developed set of contacts.

Con: Almost completely separate mutuals from Twitter. Drowning in the algorithm. Evil.


Pro: Centralized

Con: Blew up with the slightest bit of attention. Very early in their feature set. Most of the people I went there to follow went elsewhere already.


Pro: Got the most traction of people I knew.

Con: Initial onboarding and general concept is off-putting for some, so they won’t go there. Is sometimes randomly slow as content from an impacted instance is loaded. Feels like I’m walking on eggshells around content police (sometimes I just gotta shitpost).

Hive Social

Pro: Centralized. Polished. Ads1. Might be getting traction?

Con: App-only for now. Ads2.


Pro: Developed set of contacts.

Con: Almost completely separate mutuals from Twitter. Drowning in the algorithm. Evil.


Pro: General vibe in line with what I’d want.

Con: Still hate the reblogging structure. Why can’t I just comment on posts?


Pro: Everyone loves it, we know what to expect.

Con: Owned by the dumbest rich man on the planet. Will meltdown catastrophically in a few weeks.

This blog

Pro: I know the site admin. It’s me.

Con: No one will ever read this unless I link to it from somewhere else.

So yeah. It’s probably going to be Hive Social or Mastodon, but I’m likely to keep a bunch of apps around and collect contacts until they fade away or something. Oh, and Discord is still a thing, but that’s different because it’s so siloed. I guess we’ll see where we are in a few weeks?

1Yes, that’s a pro, because ads means business plan, and a business plan means they’ve actually got a chance of sticking around.

2But yeah, ads. Ugh.

23 Years, 11 Months, and 1 Day

This is a post I have been thinking about for a while now. Today is my last day at Yahoo. It has been a long time since I started, as the post title subtly hints at. My employment predates this blog, even in its previous LiveJournal form. I thought I’d spend some time to summarize my Yahoo journey as I reminisce about the only job I’ve had since graduating college. It was so long ago, I don’t even have digital photographs of my first few years there, and I haven’t scanned that particular roll yet, so…

The Santa Clara Years

It’s a Y2K bug, get it?

When I was close to graduating college, I had started looking for work around the Bay Area. I didn’t have a car, so any time I had to go to a physical interview, I had to rent one. I only think this happened twice, and one of the times they actually put me up in a hotel and I interviewed with a bunch of candidates all at once. That was actually for a circuit design job, as I hadn’t figured out whether or not I wanted to do actual Computer Engineering or not. I ended up being referred to an opening at Yahoo by my brother (who never let me forget that fact for many years), and I don’t remember a whole lot about the in-person interview, but I do remember them asking me to code a Tic-Tac-Toe game in JavaScript as a test.

Remember, this was 1998. This was actually a pretty big deal back then.

I remember completely overthinking the problem (being relatively fresh from my upper-division AI class at Berkeley) and using a min-max algorithm instead of using a pre-canned bit of logic. I guess that either impressed them, they didn’t notice, or they didn’t care because I got the job.

I was hired late June 1998. That week was the largest group of new Yahoos (we were all Yahoos, no matter what our actual job title) that had ever started at the company. There were a whole 12 of us that week, and I was assigned employee #502. Yes, I could have been #500, but was not arbitrarily chosen. I was hired into the Gooey group by Dave Shen. He had been spread pretty thin and been helping out a bunch of folks, and I was hired to take over some of the more programming-style tasks. Particularly for the promotions team.

Back in the day, if you wanted to advertise on the front page of Yahoo, you couldn’t just book an ad. There was only one ad placement, and it was right under the Yahoo logo. You can see this with the help of the Wayback Machine. That placement was reserved for either in-house ads, or links to a promotional website, also hosted by Yahoo, that was required to be a sweepstakes for at least (but usually exactly equal to) $10,000 in prizes. In return, the advertiser got to keep all that sweet, sweet user data for all the entries to the sweepstakes.

We didn’t link random websites back then, because it was hard to overstate the overwhelming power of a link from the front page of Yahoo. This was the #1 site on the Internet, with billions of page views. Any website linked to it would likely blow up, so to keep the experience peachy-keen, we kept it in-house. For a while, the actual front page servers would host the promotional sites, but eventually it moved to promotions.yahoo.com, a set of servers I was responsible for maintaining.

When I first started, we were still at 3400 Central Expressway, where we only had the upper floor of the building. Yes, all of Yahoo (at least the Bay Area contingent) fit within one office floor. I was in with the Gooey team (what you’d call UI/UX designers nowadays) and it was dark. Part of the team had double-high cubicles (oh the days when we still had cubicles) and I was so new to the team I didn’t even have a cubicle so they literally stuck me on the end of the row where there used to be a printer. I had to bring a cord and a sheet from home to block it off to get some privacy. I have a picture of this, but due to my laziness to scanning my old analog photographs, you’ll have to use your imagination.

Eventually, the company expanded to the upper floor of 3420 Central Expressway. Then, also the lower floor. Then a couple more buildings in the neighboring area and a few down the street. Yahoo had even taken over one of the conference rooms right near us to set up a little studio where they had started filming custom video content called Finance Vision, where two anchors would summarize the financial news of the day. This was actually a pretty big deal back in the day, it was eventually nominated for a Webby.

Meanwhile, I was continuing on with a few other coworkers who were all hired on to help with the promotional websites. We all were doing the technical work — basically taking a Photoshop file from the designer and using Adobe ImageReady to chop it into smaller images and using HTML tables to lay them out, plug in the data collection form, and push them out to the servers. I was also the one who was responsible for the actual data collection scripts. What started out as a 50 line CGI-bin Perl script turned into a 10 line CGI-bin Perl script when I first got there due to some heavy optimization. But then it slowly grew as we added more and more custom logic to handle things like required fields and email validation. Eventually the Perl script was replaced with an Apache module written in C… because that’s how you had to do it back then. This was pre-PHP or anything like that, although there was an in-house bit of server-side templating called htmlforms, with a later version called hf2k, which allowed for some basic dynamism to the HTML pages. I was happily puttering around in my own little pond. An engineer in everything but in name, because I wasn’t technically in the engineering group.

Then in 2000, the dot-com bubble burst.

The New Campus

A sign that says "equiptment room"
Spellcheckers optional

Yahoo had started building the new campus before everything went crazy in 2000. They had bought the land (which ended up being one of the better investments they made in the long run) and built the campus on top of it. There were five buildings, A-E, with C being the cafeteria. Building E had satellite dishes on the top floor and a nice big studio for the Finance Vision folks.

We were part of the first group of Yahoos to move into the new campus in 2001. We moved into the first floor of Building B, facing the parking lot. Being the first team to move in, we had the privilege of naming the conference rooms. My boss at the time chose famous prisons, which, if I remember correctly, annoyed some people later who moved into that floor.

However, because of the dot-com bubble, Yahoo went through our first major round of layoffs. I survived (spoiler: I survived every round of layoffs ever at Yahoo), but a few on our team did not. We ended up having to rent out building E to Marvell. This meant they had to rebuild the Finance Vision studios, and they did so in the first floor of Building B, facing the parking lot…. so we had to move and leave the prisons behind.

Technology had slowly moved on, CSS was now a thing, and the front page of Yahoo was now more dynamic. A team was created to help with full-page ad takeovers, which I was helping with, in addition to my responsibilities with promotions and additionally helping with promotional pages for the SBC global integration. Then, this is where stuff happens.

I never got the full story, so there is some speculation on my part here, but what had happened is that I was working for three different departments, but as a salaried employee my cost center had to be assigned to a single one. As front page ads was the most profitable, that is what was chosen. Unfortunately, at one point, I think the front page ads teams was frustrated that they were paying all of my salary, but only getting a third of my time, so they started demanding more of me.

Unfortunately, this was work that I was not well-suited to. It was meticulous, repetitive, and required me to be online at 7pm when the ad went live just in case something went wrong. Things were not going well, and despite subtle nudges from my boss to try and transfer out, I was put on a personal improvement plan. One of the contingencies of the PIP was to always be online at 7pm for the launch of one of my ads. I missed one, and was fired. (Or I quit right before that, or whatever…)

However, the other two teams still needed me… but neither could pay my full salary. So I was brought on as a contractor with the in-house contracting agency and started filing two timecards and splitting my time between the two.

The Ever Dwindling Contractor

Spiderwebs are not a metaphor

For the next two years, I continued to work on the promotional sites, but with fewer and fewer billed hours. I started at about 30 hours a week, then started taking every Wednesday off. I was playing more and more online games, and less and less work. Eventually I hit the two year mark of being a contractor which (at the time) was the limit for how long you could be a contractor without being hired full-time or let go… and obviously with so little work, I was just let go.


I started looking for work elsewhere. I interviewed at a bunch of online companies, some in San Francisco (a commute I would have hated), some in the south bay. I had some interesting experiences. But, if you notice in that (copied over from LiveJournal) post, someone mentioned a job posting for a position in Yahoo! Autos. I commented saying I wasn’t interested.

Yahoo! Autos

It’s hard to believe I still was using a PC

Well, I guess I changed my mind after that post, because I ended up interviewing for that contract position. They saw an engineer who already knew all the proprietary Yahoo technologies, or maybe they liked me for other reasons… or both, and two months after that previous post (and almost a year after the previous contract had ended), I was hired back as a contractor. This time, the limit was one year, as the policy had changed.

My time in Autos was eye-opening. This was my first time in an actual engineering organization, as opposed to the small-pond work I was doing before. I had peers who were competent engineers I could learn from. I was eight years into my career, and in many ways I was finally starting. At this point, engineers had finally bifurcated into front-end and back-end engineers (as opposed to when I started when front-end work wasn’t complicated enough to be a specialty). As a surprise to anyone who knows where I ended up, I was actually a back-end engineer for Autos. I wrote Perl scripts and maintained servers. I integrated with the ad systems and maintained Hotlist nodes. I got lots of experience dealing with product managers on a property.

It was also a bit disorienting, as Autos, along with a bunch of other property teams, were not on the main Yahoo campus. At this point, Yahoo was nearing its peak employee count, and we had overflowed the main campus, even after reclaiming building E and building two new buildings, F and G. So we were in Mission College 1 and 2, leased buildings next to Mission College near Great America. We had different cubicles and a much smaller cafeteria and in many ways it didn’t feel like Yahoo, but it was similar in enough ways, and I did get back to the main campus every once in a while.

But then a year had come up. This time, however, they didn’t want to let me go. However, Autos didn’t have a headcount for me, but one of the other teams in the group, Travel, did. So I was hired full time to Travel. The lease on MC1 and 2 had expired at this point and we had moved across the street to GA1 and 2. I was all set to start learning how Travel was set up and I was notified that I had been volunteered for a new project.


But all these books were online by now, this was just for show

At this point, every few years Yahoo re-wrote its ad system. The previous iteration had been rewriting the search serving system, a project internally called Panama. Because they were high priority and required a lot of temporary assistance, they put out calls for volunteers throughout the company. When not enough people volunteered, they were involuntarily recruited. This had happened to me. The Travel team was told they needed to give up two of their team to the new display ad system rewrite, and I was lowest on the totem pole, so off I went.

I don’t remember what the original code name for the project was, but it was quickly known as APT. (It was written in all caps, but it wasn’t an acronym as far as I know.) I was particularly useful to them, because the application was to be written with Java as a backend (Panama was previously written in Java because the core of the team was from another company who knew Java, and this continued from that) so very few of the team were front-end engineers. They had decided that it was easier to find engineers who knew JavaScript and had an OOP background to learn Java than to teach back-end engineers how to code front-end.

After a rocky start while we shuffled teams around, I eventually ended up on the Demand app team. There were three major app teams: Demand, Supply and Admin (I think?). They started off pretty siloed, but eventually as time went on, we managed to communicate a bit more. The entire team was gigantic. We had taken over most of MC2, then across the parking lot, a new building, MC3 was leased. It was state-of the art, with a brand new open office layout that looked really cool, but was a harbinger of standard changes to come. Gone were cubicles. We had half-open work areas with adjustable desks, but we still had shelves and a table and half-height walls. Oh, if we ever knew how much we’d miss even what we had then.

It was in APT that I finally started coming into my own as a developer. I was back in front-end engineering, and in a project large enough that it actually required real engineering. I was surrounded by other people to learn from and collaborate with (at least one of whom I actually said goodbye to today… we were still working together that long). The project went on for years, and although as front-end engineers we struggled to earn the same level of renown and seniority that the back-end engineers did (a problem which continued for quite some time) I was full-time, I had a career, I was getting promoted. Even though I felt like my career was a bit delayed, at least it was progressing.

Eventually, after many years (and quite a few managers) APT wound down. By this point, the company had shrunk a bit (through some of those layoff I mentioned earlier that I always survived) so we ended our lease on MC1-3 and we moved back to the main campus. The core functionality of APT was passed to another team, and we were spread out among other projects within the ad technologies group.

Intermission 2: The Dark Days

Yes, it’s not that dark, but this was my desk during this time

I actually don’t remember how long this period of Yahoo lasted for me. It feels like a year, but that might just be how long it felt. This is about the time I moved from LiveJournal to Twitter as my primary social media, so my historical record is a bit terser. I know I worked on a lot of little applications that were showing data from other systems or providing a new UI to some combination of systems and most of them never saw the light of day. It was not very fulfilling work, and I also didn’t get along well with my manger at the time. The company was losing people left and right. I even started interviewing, and got as far as a job offer, but I was about to accept it when…

The Gilded Renaissance

The new logo displayed in all its glory

Marissa Mayer was brought on as CEO and immediately the spirit of the company was lifted. We had gone too long without an actual leader (the last two CEOs had been an interim CEO and one who got into a controversy about his college degree), so having someone come in and make immediate changes and give us direction breathed a life into the company that was sorely needed. It was enough to make me change my mind and not accept the other job, a decision which I have never regretted.

I actually had a minor interaction with Marissa when she was first brought on. She had asked if there was a page where she could look that listed all the Yahoo properties and how much money each of them had made the previous day. We didn’t have anything like that, and because the department I was in was all about internal dashboards, the projected ended up in my lap. So I got some instant recognition, which was nice.

However, even though morale was higher and the company as a whole was being overhauled, my day-to-day was still boring…


My office for a week

A dictate had come from on high. There should be a new type of ads, similar to what Facebook was doing: native ads within content streams. The front page of Yahoo was the test-bed, and a team was being recruited for a fast-paced, high crunch-level project to go from zero to finished product in 45 days. I was reached out to by Peter Chan, and I had to decide that day if I was going to move to the group. It did not take me the day to decide, and the next day, a group of about 20 people had been assembled and started meeting every day in the Aquaman conference room. This was such a big deal, there was an article written about it. I was one of two UI engineers in charge of creating the web application that would be used to create the native ads, but also helped out with some of the content pre-generation and other integrations. I had based the webapp off of a project I had just recently worked on in the previous group, so we had a starting point with a YUI-based application. After long hours and weekends, we managed to deliver two full days early and after 43 days, native ads were appearing in the front page of Yahoo.

As the image above and the article indicate, a reward for that original team (plus a few of the ancillary folks who helped out) was a week-long trip to Maui in December, where we went from one of the coldest weeks in the Bay Area to the tropical warmth. This was also just as we were staffing up to turn Moneyball into a full-fledged system from the quick proof-of-concept that it was. That 20 or so people turned into a hundred as we rolled into project Curveball, which was integrating search ads for more content, and eventually the project became to be known as Gemini because of the search + native aspect of the project.


Sometimes, there aren’t spiders on the sign

Gemini was the last project I worked on at Yahoo, and it surprises me how long it actually lasted. From Moneyball to now was almost seven years, longer than I worked on any one project. Over the course of the project, the team grew to take over the old network operations room, then eventually a whole floor of one of the buildings. The UI was re-written twice, once where we replaced the PHP servers-side code with Node.js, and again when we replaced the YUI client-side code with Angular. Most of the original team members drifted off, either returning to their original positions in the company, or leaving completely. Some of the temporary help we had early on joined us full-time, and we were also hiring more and more engineers. We had a science team in Israel, a front-end Reporting team in London (who were all sadly let go because the office was too minor) and a supplemental back-end team in Taiwan.

Yahoo was doing a lot better. We had released a new weather app for iOS that got rave reviews, then got overshadowed by the official Apple weather app that looked eerily familiar. We had weekly company-wide meetings every Friday where the senior leadership and other employees from all over the company would present genuinely interesting updates on new things throughout the company and answer questions in surprisingly honest ways. Company pride was strong enough that we managed to keep quiet for decent periods of time, so the entire company became privy to upcoming plans in a way we’d never had before.

Gemini got more and more complex, and went through multiple rebrands as the product name changed. But the biggest rebrands of all were just over the horizon.

Oath / Verizon Media

The Yahoo campus from on top of the landfill hill

It was surprising, but in some ways not entirely surprising, when we learned that Yahoo was going to be sold to Verizon. The new renaissance that Marissa had brought had lost its momentum. The early wins we had earned weren’t followed up by any continued success, and we continued to lose users, advertisers and key employees at a rate which started to feel like the dark days again. Verizon would choose to combine us together with another ancient internet company it had acquired just prior to us, AOL. So we were now being merged with the company which was, at one point, our major competition. The new combined company was called Oath (confusing almost everyone I ever talked to).

Technically, Yahoo was not acquired by Verizon. Instead, Yahoo sold its employees, intellectual property, and most of its holdings (land, colos, etc), and held on to the large cash reserves and investments (Alibaba and Yahoo Japan). Then, the company formerly known as Yahoo, which had very few employees left, was renamed Altaba. This only further confused people, especially those of us now owned large chunks of Altaba stock. Altaba has since been dissolved, and all of the assets had been sold-off and dispersed to its shareholders, so technically, the corporate entity that started with Jerry and David in 1996 no longer exists.

Anyways, back in Verizon, most of the senior Yahoo leadership did not come along to Oath. We were instead being led by senior AOL executives. AOL was headquartered in Virginia, but Yahoo was the larger company, so the Sunnyvale campus was the “main” Oath campus. This four thousand mile and 3 timezone separation between the two major parts of the company did not provide for a smooth transition. There were also many arguments (way above my paygrade) about which internal services to standardize on. Everything felt like it ground to a halt as corporate infighting and technical integrations kept any real new development from going on. Eventually, after not too long, the Oath name was dropped and the division was known as Verizon Media. (So that was two more rebrands we’d gone through in almost as many years.)

Gemini continued on, now one of many ad systems within Verizon Media. We had started integration with the BrightRoll DSP, an application which I helped with on a very surface level. The front-end was written in Ember, a framework I did not really want to learn. Ironically, had I accepted the job offer back in 2012, I would have been working in it, another reason why I’m glad I didn’t accept that job. We just kept our heads down and kept working on new features, as we added new ad formats and new targeting and migrated to new systems once the higher-ups had decided what the company-wide direction was on various global services.

However, we had a huge blow to morale when we learned that Verizon had decided to sell the Yahoo campus to Google. Google has been expanding into all over north Sunnyvale for many years, and ours was a prime location. They announced a new campus in San Jose, near the airport and the soccer stadium, and it would be ready in a few years. However, that move would be delayed.


Things were already slowing down when COVID-19 hit us. We stated working from home, which was a pretty smooth transition. Yahoo had always been good about its global IT infrastructure, and everyone’s primary computers were always laptops already. We had been using the Google enterprise software, so virtual meetings and screensharing were things we were already accustomed to. However, it did not help the downward spiral it felt like we were falling in to. Working from home made it difficult to hire new people, not that we were hiring beforehand, so every time someone left the company, we just got… smaller.

Projects were being handed off between project managers. Engineering managers were transferring around. I can’t speak for anyone else, but I became very disconnected from senior leadership. The regular company-wide meetings were less and less frequent, and most of the time lacked any substance. Just keeping our heads down and doing our jobs was starting to feel like it wasn’t enough.

This was the flip-side of the longevity of Gemini. As APT before it, and Panama before APT, every seven or so years had seen a rewrite of the ad systems at the company, as senior product and engineering leaders could examine all of the use cases and technical needs that had evolved over time and create a new system from scratch that could address those needs in a robust way. We never got that. Even before COVID, it felt like we needed it, but it never came. The pattern had been broken, and instead we just kept slapping more and more code on an ever-fragile system as brain drain and technical obsolescence made it harder and harder to meet the needs of our customers. Long-time engineers (myself included) felt like our voices weren’t being heard, and quick-fix solutions were chosen over holistic rewrites for (I assume) short-term cost effectiveness.

Moving to the new campus was delayed. Construction was slowed because of COVID, but our lease to Google had run out. Employees had to go into the office to pick up our stuff, but only a few of a time for exposure reasons. We never got a big farewell to the campus that had been a part of my life for almost 20 years. It was just… an hour window to pack, and a quick trip around the old campus that I’d never work at again. Bay area employees were officeless, only working from home.

Everything Old is New Again

A conference room named "Yokahama"
New campus, same lack of spellcheck

Verizon had long tried to figure out what to do with Verizon Media. Their original goal seemed to be “roll out 5G, then synergize our customer base with our media properties” but they never quite got the first part, so the second just kinda sat there. Eventually, they sold us to Apollo Investments, taking the company private and (ironically) renaming it back to Yahoo. We received platitudes about how we’d be taken care of, but we knew in the back of our minds and spoke to each other in hushed whispers that we knew what was going to happen: we’d be chopped up into pieces and sold off.

And that’s where things ended up for me. My job was becoming routine. Gemini had stopped development, but I wasn’t working much on the new ad system (which was really not a new system, but an amalgamation of other systems to try and address all the use cases). I had other small projects I was working on, but my day-to-day was mostly site-up on Gemini and other small projects. I was perfectly content to keep doing this, as it was comfortable, but I was reached out to by a former coworker about a job opportunity. I didn’t accept at first, but when another coworker of mine left the company and her responsibilities ended up on two of us, it forced me to reevaluate what I actually wanted to do with my career, and I ended up accepting the offer.

I’d never really been excited about advertising systems. As I mentioned, I was volunteered into it, and only stayed because I was lazy, and I knew that’s where the safety was. I had survived every layoff at Yahoo because I was always situated in a revenue center. But it felt like, even though my job may be safe, the entire business was at risk. I felt like we were just prepping a carcass for slaughter. Also, I was not the first to feel the drag, and over the last few years we have been losing a constant stream of employees, to the point where it was becoming harder and harder to do my job due to lack of domain knowledge and overall manpower. Yes, I know I’m contributing to this, but I still think it’s the right decision.

The Future

The San Jose campus

Two and a half weeks and ago, the San Jose campus finally opened. There was an opening event and I got to see all these people who had only been faces on a computer screen for two years. Sadly, I wasn’t quite ready to tell people I was leaving, so I said hello to everyone and said how excited I was for the new campus and “oh, I’m not sure if I’ll actually come in because the team is fine working from home.” The campus is nice, but so much of it is symbolic of the company as a whole. It was lovingly decorated with pieces of Yahoo history, but still with a modern office sensibility. It’s an amazing facility, but it was designed for a company four times the size of what we are now. We already know we aren’t going to be here for long, and it will be converted back to a generic office building as Yahoo moves to a smaller facility somewhere.

Yesterday, I actually went in to the office and worked for the day at a desk. It was surreal. In some ways it felt like the first day at a new job, in an unfamiliar environment. But it also felt familiar. It doesn’t have the same impact as if my last day had been at the Sunnyvale campus, but it still gave me closure on my almost 24 year journey.

Goodbye Yahoo. I will forever bleed purple.

Everything old is new again

It looks like I might start using this again, if Twitter becomes dead to enough people. Of course, who can find me here? I’m talking to a void. Yes, there’s an RSS feed for this, and maybe RSS feed aggregation of blogs will become en vogue again.

I haven’t made a post to this blog in a while. I mean, obviously, you can see all the entries below this one in the list. This post composing tool looks neat. Dreamhost has been keeping this hosted WordPress instance up-to-date in the background and it’s gotten a lot better in the last few years.

I have no idea how much of a hurdle the comments are for people. I recognize the allure of just being able to type a response into a box without having to log in or enter an email or whatever, but the bots. Oh, the bots. Everything is horrible on the Internet. Speaking of horrible things on the Internet, I used to have Facebook comments enabled on this thing. I deleted that plugin.

The problem is that what is this for? What is any blog for? My dream on Twitter was to go viral, that never happened (unless you count the one time I got like 30 likes on a tweet “viral”) but that’ll never happen. And if it does happen, people will see the rest of the blog, copied from my LiveJournal, going all the way back to 2001 and oh god I don’t even want to think about what 2001 Andy was like…

Things that have happened, or have they?

So yes, I haven’t posted here as much as I’d like. I don’t even know if this will ping back to Facebook when this is posted. I could just be posting into the void. It’s hard to get into a mindset where typing more than 140 characters is an option. To write language that flows from sentence to sentence — that builds and culminates. I keep having ideas for posts that I think about while riding my bike but forget to write when I get home and they float away into memory.

I want to write more. But every time I start to think about it, I get shot down in my own head by the idea that no one will care about what I write unless it can be easily digested. Hey, it could be worse, at least I think people care at all about what I write.

Another thing that kept me from writing was the last post of my LiveJournal. Every time I wanted to write something, it always felt small and unimportant following that. But as time goes on, it gets pushed further down the page by test posts and excuses.

Maybe it’s time to move forward.

Die, spammers, die.

So I made this blog separate from LiveJournal just because I wanted to have a place where I had more control over things, away from the apathy, instability, scary business practices and spam of LJ (while still having a long-form place for my thoughts that don’t fit into 140 characters).

Before I even manage to get my thoughts together about how I’m going to make this work, one of the entries I migrated over from LJ already had a spam comment on it.

How did they even find this?

Hello world!

This is my first post.  I’ve got WordPress installed, even though I’m a permanent member of Livejournal.  We’ll see if I actually use this thing.

One day older

Today I turn 33. I had a whole joke planned how I was going to say it’s my 21st birthday in hexidecimal, but I’m not feeling in a joking mood. On Sunday, Rannie Yoo (although she left the world Rannie Reid) finally lost her battle with cancer and left the world surrounded by loved ones, leaving the world a sadder place. I’ve been tossing around in my head what I was going to say in this post. I knew it was going to happen. As soon as we found out she had cancer and the type and stage of it, we knew it was coming, but it only really started to hit me hard this last week, when we knew the end was near.

I can say without a doubt that of all the people I’m not related by blood to, Rannie was most directly responsible for my life happening the way it did. If it were not for her, I most likely would not have been an officer of Cal Animage, which introduced me to a circle of friends that I still have to this day. Without her, I would not have staffed Fanimecon, nor Anime Expo, which between the two caused me to meet more people than I can count and affected me in immeasurable ways. But more than anything, Rannie was the first person I ever really got past an initial crush and got to the plateau of friendship without confusion that existed for years.

Just now I opened up the private diary file that I kept before I had this LiveJournal, which contained things which were for my eyes only. In the section about Rannie, it contained stories that I had long forgotten about the path from random person to friend, most of which are not appropriate to share. The one I can share is the story of how she and I met… maybe. We don’t know for sure, but we were both fairly certain, but the first time I met Rannie was a Saturday morning in Bowles Hall in the Dungeon (a.k.a. the TV room) in our freshman year. I was there to watch cartoons, and turned the tv on before I realized there was a girl asleep on one of the couches. The TV woke her, and we ended up talking a bit while we watched TV. I never caught her name, but years later this came up in conversation, and Rannie says she had that same thing happen to her, and what are the odds of that happening twice?

This isn’t very coherent. I don’t suppose it could be. For the last week, whenever I stop thinking or doing anything, the space is filled with sadness and tears. Part of me should be scared that someone my age could die of cancer. But most of me is just devastated that I’ll never see her again. Any person should be happy to have touched as many lives as she touched. The outpouring of sentiment from people I’ve never met just goes to show that she continued to have an influence on other people past the point where we were hanging out regularly. I feel sadness for the people whose lives she was destined to brighten in the future that will never have that chance.

I should stop before I ramble too much. Tomorrow is going to be hard — I still haven’t decided if I will tell my coworkers what I’m going through or if I should just push through it and keep my mind occupied. I will try to have a happy birthday. Being sad goes against what she lived for.

When life gives you the raspberry, give the raspberry right back.

See you next time around, Rannie.