Halloween

I was lying in bed, my brain running through the the things it does as I’m falling to sleep when BLOG! popped into my head. So here it is, quarter to midnight and I am hunched behind the keyboard once again.

Yesterday was pretty busy, but I overdid it last night, staying up till 2AM playing Dyson Sphere Program. I didn’t get out of bed until 9AM. Missus had gone to bed at a decent hour and was up and about — something that never happens on a Sunday.

I spent most of the morning doing my regular Perp management. Funding brought in about $400 after last week’s decline in margin. I rolled it up aggressively, taking my liquidation price as high as I could to the growth line that I set several weeks ago. I’m still well under it for my main ETH position, and I did compound my IRA positions this time as well. I haven’t done that in quite some time.

After that I did my routine for SAIAdao. I didn’t DCA anything since our cash is reserved for the C11, and since ATLAS was so high I sold our ORCA emissions and recompounded the POLIS. That got me thinking…

I’ve been really confused about the availability of Serum market AMMs. There’s a pool program in the monorepo, which I had thought was an AMM. It’s not. It’s a basket of tokens, like a TokenSet or what have you. I had conflated it with the Solana Foundation token-swap program, which is an AMM program, but has been deprecated. I believe that Raydium and Orca may be using their own versions of it, but I haven’t verified that yet.

Point is I went ahead and made an POLIS/ATLAS Serum market today. I went through the DEX code and had to add the ref code for ATLAS pairs, created the market and got the update pushed out. I had originally done it as a prerequisite for making a Atrix pool, but their program locks 50% of the LP when you start it, not to mention 4 SOL to fund the crank, so no sir. I found out about the 50% lock after I had created the market. Whoops.

I hope the whole exercise doesn’t turn out a waste of the 2.8 SOL I used to create the market, but who knows, maybe we can do something with it.

Today is Halloween, and the day the Bitcoin whitepaper was released thirteen years ago. The kids didn’t really have costumes this year. Younger just wore a Minnie Mouse hoodie, and Elder had a green riding hood. She was supposed to be a wood elf, but kept losing her ears. We went to two Trunk or Treats, one last week at Younger’s school, and another yesterday by the Girl Scouts. We walked the neighborhood tonight, someone down the street did a really good haunted house. It was creepy as hell, I think I was more freaked out than the kids were.

Burning daylight

I went for a three mile run this morning. Missus and I went to bed at 10PM last night like a bunch of old farts. I was too worn out to do anything productive last night, so I watched an episode of Foundation and Y The Last Man and then read some more of the third Foundation book on my iPad while Missus dozed off.

I have to say I’m not impressed with the show. I mean, it’s well produced, but as an adaptation to the novels, I think it misses the mark. And Y, I didn’t read many of the comics, so I don’t have much to go on, but the whole production feels like The Walking Dead, and I’m just waiting for some sort of cringe moment that so far hasn’t come. And it’s funny, as I’ve been watching Squid Games that I’ve been less bothered by the body count in that show. I don’t know.

Yesterday I let myself get roped into an Ethereum development project for someone that I met via Twitter. It’s just a “simple” NFT staking contract and front end, but I should have said no. It’s probably something that I’m capable of doing, but it’s going to distract me from getting stuff done on Solana, and that’s not what I need right now. I have a call on Tuesday regarding a dev position, and this just seems like this was a mistake that I let myself get sucked into. Still, it’s not an insignificant sum of money for what should be a quick job, assuming that I can outsource the front end work to someone who knows what they’re doing better than I.

I want to get some coding done this morning. Younger woke up early and has been watching TV, but Missus and Elder are still in bed. I’m not sure how much time I have. It’s Saturday, so we need to clean the house, take care of any final Halloween prep, and deal with any other housework that needs doing. I may try to work in some landscaping work and dig up the stumps of three juniper bushes that I cut down last week. I also have a tree in the front yard that I plan on cutting down, but I’m probably going to wait until after Halloween to do that.

Star Atlas mentioned that they’re going to drop two new ships this week. I can’t imagine that one of them is going to be the C11, but still it reminds me that I need to finish prepping my update scripts for the DEX. The menu generator is working, but I still need to fix the tokens and mints for the DEX, as well as prepare some sort of update script for the backend.


Just got pulled off by a Discord DM. A founder who’s working on indexing Serum markets and data. Showed me the GraphQL API. There’s some good stuff there. So many opportunities in this space. It’s hard for me to focus right now. The Solana Ignition winners were released yesterday, and I spent some time looking over those. There’s a program called Bulldozer that is a UI built on top of Anchor, was playing around with it yesterday and talking to the developers. So much interesting stuff going on.

Here I am, it’s past nine now. I should get some work done.

This house is a mess and I am a wreck

Let me just say that there is a huge difference between a six-pack of 6% IPA and one of 9%. OMG it’ 11AM and I’m still on the couch. I have been productive.

I sent the actual email to my advisor/mentor for review. I don’t want to come across as a crass asshole so maybe he’ll tell me to tone it down a bit. Honestly I think I did a fair job, but it’s important to start off on the right foot with the HR/talent acquisition team. I’m confident we can work out the issues that are standing in the way of a deal. Probably the most significant deal of my life beyond getting married and having kids. Lord help me.

Much progress on Anchor yesterday, I learned a lot by going through the Travis yml files and some of the build commands. I actually want to do a podcast series where I walk through it, and go through the tests. They’re actually better learning experience than the tutorial examples.

I didn’t want to use my face though, and wound up looking at some avatar apps. ReadyPlayer.me has an avatar creator, and you can even export it into the FaceRig successor, Animaze. It’s a bit wonky, the lighting isn’t great upstairs at night, and I don’t think I can run it on Linux, so I’ll have to figure it out.

I’ve spent most of the day writing the email and farting around on Twitter. It’s currently lunchtime and I need to get some food and get to work. I got about two hours before I need to pickup Younger from the bus.

Speaking of who, yesterday she decided to take her rubber stamp to the walls and doors leading from the kitchen to upstairs. I swear that kid loves to destroy everything in this house. And I’ve been fighting with Elder over her Halloween costumes. She’s been acting entitled and I’m having none of it. They both seemed like they were trying to test me, Missus was sick in bed yesterday and it never fails that they always try me when that happens. Maybe it’s me.

Enough griping. Time to roll.

Thinking out loud

Missus is sick today, so I had to get both girls ready and out to school by myself. Younger gave me a bit of lip about not going, but Elder gave me the nth degree of Hell this morning. I woke her up ten minutes late because she stayed up way too late and I knew she was going to give me trouble, and yea, the shit started because I woke her up late. Took an hour to get her gone because she wanted to argue and skulk about everything. Ugh.

I got stuck with the DEX work yesterday. I have a data provider in a React component, but need the data in a non-React component, which is a problem because of the Rules of Hooks. I had to step away from it and decided to start focusing on Solana/Anchor stuff. I’m starting by building a series of scripts that will let me simulate deployment of SAIAdao tokens to members. I’m not really building out any contracts yet, just using the framework and copying tests to setup the way I want things to operate. So far I’ve just been able to create two token mints. The next step is to start the distribution simulation. I think I know how I’m going to handle the fact that I don’t have everyone’s Solana addresses yet. I should get started with some design docs.

Basically I’ll be starting with the known list of Ethereum addresses and the current shares and loot balance. I’ll get this in a CSV and import it into my script. We know the vesting schedule (2%/week for fifty weeks), so it’s just a matter of turning the crank and minting the requisite number of tokens. We’ll probably have to create an token account for each participant, and once we have the associated wallet address we can set them as the beneficiary. The question is whether we’re doing this with AMM LP tokens, or individual allocations.

There’s more prep work I’ll need to do first. I need to wrap up some proposals on DaoHaus, close off memberships and get an updated list. Then figure out whether we need to rebalance the shares/loot balance. I’m thinking ‘yes’. Then map out the logic a bit better.

At initialization, we’ll mint all the number of shares and loot in circulation, create an AMM, stake tokens and receive LP.

For staging, we’ll create token accounts for each participant and distribute their shares to the token accounts. I’m thinking that I’ll require each member to create a DaoHaus proposal with the associated Solana address that they want to use, I can just export these to create my map. Or maybe Collab.Land will be able to help us with this portion. We’ll see, I just schedule a meeting with them for this evening.

Lots to do, and I’m still trying to negotiate a starting position with unnamed as well. The question is whether I can do better with them than on my own. I honestly don’t know the answer to that question right now.

One-up

So I had my second call with the CTO of a prominent NFT gaming company yesterday. I was offered a position last week and finally got some compensation numbers yesterday. It was fair, but there are a lot of questions surrounding equity as well as my current obligations to SAIAdao that need to be resolved before I can formally accept any offers, but I’m really excited to have the opportunity.

For most of our relationship, Missus has been the primary breadwinner in our family. Save for a couple months when she was getting her licensure, she’s held a cushy government job with a pension and has provided health insurance for the family. Her base salary has always been around ten or fifteen grand more than me this whole time, and I’ve been fine with that. My last couple years with Zombie, LLC, it was more about the personal freedom than the pay anyways. I used to call it my minimum viable lifestyle job.

Now I’ve got an offer on the table where’ll be making over two times her salary, including insurance and unlimited PTO. She said she didn’t know how she felt about the whole situation, since she’s always been the one on top, not just during our relationship, but with all of the men she’s dated. We were trying to figure out whether the word emasculate applied here. The word does have a definition of “weakening someone” beyond the context of male power, but I’m not really sure it fits here either. I’ve just one-upped her, it’s all. It might change the power dynamics of our relationship a bit, but not that much as far as our net worth is concerned. I imagine that might change after a couple years, but we’ve got time to figure that out.

So today I need to fire off an email to the company HR man to get into the details of my compensation package, and figure out how I exit the dao. A buyout isn’t out of the question, but I’m hoping that I can get the tokenomics working and build out the lending platform as part of my ninety day plan.

I’ve been working on the dex the last couple days, trying to figure out a bit of Javascript. I have a working algorithm, but I was hoping to clean up the code and have been struggling with a reduce function. I’ll probably write more about this after I figure it out or abandon it. And then I’ve got to get the nftProvider into a token_and_mints module, to replace the static json files that we’ve been using. At that point we’ll be ready to deploy and have a dynamic dex that updates itself based on the Galaxy feed from Star Atlas.

Then I really must start focusing on Anchor development. I’ve got contracts to write.

Negotiating

When I started this blog, it was a place for me to write about my life anonymously without worrying about what people thought. These days, though, my pseudonymous identity is more real to me than the real me. Outside of my family, I spend more time on Twitter and various Discords that I do with friends. So the result is that this blog is no longer the place for me to vent and get shit off my chest. I have to think about what I put here now.

Not that I should really worry, no one reads this except for what they find on Google. My biggest hit is still the Windows error message post I wrote from two years ago. Still, I don’t want to speak about a particular opportunity right now as I don’t want to blow it. Let’s just say I have a very important phone call today, one that will likely bring me out of reFIREment, an offer I can’t refuse, so to say.

That’s what’s foremost on my mind this morning. I’ve got some reading to do this morning for research and then I need to write up some questions. Most of all, I need to prepare myself mentally. They say there are two kinds of stress, distress, a bad one, and eustress, a good one. I was trying to figure out the good version of anxiety, and anticipation is the closest word I can think of.

I am in a high state of anticipation.

What happens today will likely change the entire family’s life for the better, and is something that I’ve been working toward for several years. I can’t wait. I’m going to sign off here, knock out the rest of my research and take some notes, then get some work done while I wait for the appointed hour.

Life is now.

Get to it

We are ready to fire on all cylinders this morning, despite a slight misfire getting up this morning. The girls are gone, I’ve got my coffee, and a list of things to attend to today.

First up is the weekly status update for SAIAdao. The rebase proposal has passed and is in cooldown, so I’ve got to proceed with next steps, which will be the original migration proposal that I put together a few weeks ago. Since we’ve redistributed loot, now I want to move forward with stripping the claims from shares and make them a voting power only token. Hopefully the math I worked out a few weeks ago holds, and we preserve the exit value during the rebase. I’m not sure that we can preserve voting power with this, but it’ll have to be the way to go, I can’t imagine a two token system working on-chain like it does for DaoHaus.

Another important prerequisite to all this mapping member’s ETH and SOL wallets together. For later members we have the original membership transactions on Solana, but older members we only have ETH wallets. I spoke to the head of Collab.Land last week and messaged him this morning about rolling something out that can help us map the two addresses together. This may allow us to do our initial airdrop.

I’m really going to have to spend some time thinking about the tokenomics for our system. We can have unlimited minting for our loot token as it should be backed by NAV, but what to do about shares? We have an issuance plan that will double the supply in the first year, but I really don’t know what to do about the following year, or how a maximum cap will work. I suppose we can figure that out later or just steal it from what some other teams are doing. All I know is that it should remain relatively sparse for the next couple months, which should make it fairly effective as a rewards token.

And I’m thinking about my big meeting tomorrow, although I’m not sure whether to play it cool or issue a follow up reminder. It could be life-changing, and at the same time I need to play it cool. Breathe.

I have a phone call to make, and then it’s time to start writing.

Busy Sunday

It is the end of a long Sunday. I turned in fairly early last night and got a good start on the day. Both of the girls went to church, so Missus and I got to spend a nice day together here at the house. I cooked us breakfast and then we got on with our todo list. I cut the grass, cleaned the back ditch and finally put the hot tub cover straps screwed down, and also re-attached the lift bar. The two of us even had time to take a bubble bath together before the girls got back. It was pretty nice.

What was even nicer what that after the girls got back, they and their friends spent the next four hours outside playing. They didn’t even bother us that much. It was pretty amazing. We had dinner, watched a show, and now the two of them are passed out and I’ve got an hour to watch a show before turning in. I even managed to get in a workout first thing this morning.

I did a lot of my usually weekend yield-farming activities this morning, actually starting last night with a new OHM fork on Matic called Klima. This one is based around carbon credit capture, so it’ll be interesting to see how this one plays out. That makes three OHM projects, Olympus, Wonderland.money on AVAX, and Klima. We’ll see if we get lucky. I had some problems last night because I had all my MATIC tokens locked in Aave. I pulled a couple hundred dollars out and had staked it in QuickSwap, but then threw it into some WolfMoon project that failed. I had enough collateral that I could sell enough to pay off the loan and pull everything out, and into Klima it went. I don’t have time to be paying attention to all this stuff, to be honest, so I’d rather just set it and forget it.

This morning I checked my Perps. I was down overall, and only made about $50 in BTC that I threw on top with 10x leverage. I’ll have to make some tough decisions if funding continues to tank my margin. We’ll see how it goes.

I also spent some time moving my Alchemix pools around. I had some ETH-ALCX in Pickle, but I read that Tokemax has a single-side ALCX reactor now, so I moved everything there. It must have taken me a dozen transactions with all the approvals and swaps. Unstake and remove SLP from Pickle; sell pickle on Zapper; unstake SLP; unstake and claim ALCX and alUSD from Alchemix; approve and stake on Tokemax. It’s my IRA account so I wasn’t too worried about it, but something tells me I’m taking a loss on the whole exercise. As usual.

I spent the rest of the day working on Anchor stuff. I decided to try my hand at doing some stuff with Orca. Since Sunday’s is when I execute SAIAdao’s DCA strategy, I wanted to see what I could do there. Unfortunately, WSL doesn’t support USB devices and I was too lazy to go downstairs and work on it, so I did it manually and spent some time playing around with their API. I got some basic stuff working, but I’m nowhere near being able to clone something like SolFarm/Tulip. I’m just starting to get used to running Node scripts, and still trying to understand how to tie together TypeScript into everything. Let alone actually writing a program that does CPI calls to other programs.

I’ll get there though. It’s just a matter of time.

Long day

Yesterday was pretty busy.

I worked on the dex most of the day yesterday, and got pretty far along. I managed to pull the json fetcher into a React context and was able to pull that into the menu generator. I was tough to figure out, but it works. So now I just need to shore up the data map that we’re using so that the menu renders properly, then I get to move on to the token and market mints, which looks like it’s going to be an entirely different beast.

After I was done ‘working’ I wound up playing video games and staying up too late. There were tons of games that looked interesting but I didn’t want to buy anything with my unfinished collection being what it is, so I played a demo and went back through some games in my catalog until I was well and tired.

Today we took a road trip out to visit my dad. He invited us to breakfast at the VFW hall this morning, so we all trekked out there this morning. I don’t think the four of us have been out there together as a family, and I always get a sense of nostalgia driving around out there to places I haven’t been in some twenty years.

The breakfast itself was mediocre. Scrambled eggs, bacon, sausages, potatoes, and saltfish. The girls ate grits. It’s always good to see my dad, but I’m not sure why he wanted us to go there. Hell, I would have preferred Cracker Barrel myself. Still, it was good to get out.

We also managed to knock off a couple more things off our todo list while we were out there. We stopped by a farm store to pick up some pumpkins. They had a corn maze and farm animals: cows, a pig, a couple goats. The girls enjoyed it, I spent too much on pumpkins and even bought a pie that I have no intention eating. On the way back we stopped by the thrift store to unload some things and pick up some clothes for Elder. She got a good deal on one of those two-wheeled skateboard things called a RipStik.

After we got home Missus and I finished watching Dune, it was really good. I’m almost tempted to read the book again just so I can go and read some of the sequels. I think I have enough on my plate right now though, I’m still reading the Foundation series.

I spent the rest of the afternoon reading through Anchor’s example contracts, just reading and reading them, trying to understand just what’s going on with them. Some of them are really complicated and I’m trying to figure out which ones to look at first. It’s slow going, but I’m probably going to head back up there and pound out another hour of it, again and again until they make sense.

Right now we have about an hour before the girls need to go to bed, so I’m going to spend some more time with them, maybe play a card game or dominos.

Reacting

It’s the end of the week, yay! I don’t really have anything urgent to work on today, so I’m not quite sure whether I’m going to work on the DEX React dynamic menu stuff that I was working on or focus on Anchor development. Anchor is probably the most urgent, so I’ll probably start there and work on the React stuff this afternoon.

I had a pretty good day yesterday, I spent most of it digging into the aforementioned React code. We’re trying to make the StarAtlas.Exchange menu render dynamically off of the official NFT JSON feed. There’s a lot going on there though. First off we have to map the items, sorting them into the main itemTypes and categories. I did this using maps of maps of maps. Then we have to iterate through each level, rendering some AntD code at each level. It’s pretty ugly and took me all day to figure it out. The problem we’re having is that the top level submenu props are getting shared between all elements in the map, which is causing them to share the same mouse-over code. That’s where I finished up yesterday. Someone on the team figured out that if we pull the code into a parent component, where the menu gets rendered, that it doesn’t have the problem, but there’s got to be a way to separate the code to make it cleaner.

The next task is to pull the code that requests the NFT feed out of the menu generator. We need to use it for the token list as well, and there’s no point to having it called twice. So we’ll need to slap it into a context provider so that we can reuse the data in different places. Once we do that we should be able to do all sort of wonderful things like pull item details such as pictures on the individual market pages.

As far as Anchor goes, I went through the tutorials for the second time. Reading it makes sense, writing… well, I haven’t attempted that yet. Just knowing how to deploy these things and write scripts that can be used to interact with them is going to be enough for today. Since I’m done with the tutorials, the first thing I want to do is go through the existing examples and see what I can use. There’s a vesting contract that I’d like to extend. The way it works now is just one token address for one recipient, but I want to see if I can extend it to provide multiple token allocations for all SAIAdao members.