Posted on Art

Percy Animé

March 2020 will forever be remember by the world for at least one thing: the introduction of Percy Animé – inquisitive rogue; catman; avid journaler. Alignment: neutral, to avoid scientific bias.

Coincidentally it’s also when I joined a D&D campaign.

But who is Percy Animé?

As a kitten Percy was “adopted” by a hag. And though he eventually escaped, he is still haunted by his time with her.

To learn more about him, we need only inspect these few pages from his journal that I found, torn and stained, in a dusty alley somewhere in the dank side of Waterdeep:

Percy clicked the last ring into place and the whole thing came apart in his hands. Huh. Simpler than I expected, he thought. The rough stone at his back dug its way into his awareness as he absently reassembled the puzzle. He pushed himself off the wall and was midway through tossing it into the depths of the alley when the most intriguing thing caught his eye. 

A group of ne’er-do-wells entering a tavern, artfully painted with the filth of hard travel. There were five of them, mixed in amongst the rabble.  All strangers from the looks of it, apart from two. Those two looked similar enough to be brothers, though it’s difficult to tell with half-dragons. 

What were they doing in Water Deep, he wondered. What were they up to? 

Percy smiled, ever so slightly. An astute observer might have just glimpsed his needle-sharp teeth. 

What was a self-respecting tabaxi to do, but investigate further?

Slipping into the tavern, he edged along the wall as he took in its layout. The group of ne’er-do-wells stood facing one of their number, a human female, whose back was to the bar.  Integrating into the group was as simple as weaving his way through the common-folk, caught up in their own lives. Planting himself just close enough, and just far enough away, for it to be ambiguous as to if he were with them or not.  He focused on the female human as she began to speak.

“Introductions are in order.” She paused. “I am Zelinas Havellyn, member of the Knights of the Shield.  We specialize in legal services. And debt collection.” 

She raised her voice noticeably, presumably so as to carry to the rest of the tavern’s occupants. “So if you’re looking for legal services, look no further than the Knights of the Shield.”

“Now, if you would please tell me a little about yourselves.” She nodded to one of the towering half-dragons.

“My name is Sasuto, practitioner of the blade.  It is all I have in this life.” He had two, in fact.  Along with horns, and red scales which glinted despite the tavern’s glooms.  

The matching half-dragon, but for a third sword and deep, black scales, sighed.  He finished the drink in his hand and spoke next.

“I am Roronoa, master of the blade.  Sasuto is my brother.” He grumbled.

Brothers. He’d never doubted it.

“Hi! My name is Chadley and I’m an acolyte of Semuan.” Wide-eyed and with a cheerful grin, he looked to be half-elven. Or perhaps a dainty human.

The last of them – a firbolg – rumbled, “I am Gygg. Druid of the spores.” 

“Anyone else?” Zelinas asked, looking directly at Percy.

“Umm..” I should have seen this coming. Surely they’d see through his deception and mark him as the imposter he was. Surely. And then he’d have to injure one of them and flee.  Perhaps Chadley, he looked feeble. 

Percy’s mind briefly caught up in plans and contingencies, none of them ideal. There was nothing for it. He had to double down and hope they hadn’t noticed the interminable pause.

“Yes, it is I! Percy Animé. Famed catman of diverse interests and great skill.” He nodded to each of his presumed companions in turn.

Zelinas nodded back, and Percy let out a nearly audible sigh of relief.  He hadn’t truly expected that to work.

— Percy Animé’s private journal

I’m sure there must be more, hidden away somewhere. He’s reported to be a cagey cat. Perhaps it’s buried, or knowing Percy, he probably zagged, storing somewhere no one would expect. What’s the opposite of buried? No. There’s no way it could be in a cloud. Are there spells for that?

Just how handsome is he?

In short, very. There are no known pictures of Percy Animé, so I took it upon myself to render a portrait of him in exacting detail, through the art of digital painting.

Percy Animé

It looks a little washed out, printed on canvas. But now his portrait hangs behind me, in an elaborate wooden frame of custom make.

I went over it with modpodge to give it the texture of brush strokes.

What has become of him?

Unfortunately there have been few sightings of Percy Animé since his time in Borovia; we only know that he left it alive, and well, if somewhat changed by his experiences there. Strangely however, there was a sighting of someone going by a similar name (Persy Von Catsing). This “Persy” looks suspiciously like Percy, but younger. He is a bard, or so I’m told.

If this seems strange and confusing, I was right there with you, but then I began to think. What if Percy isn’t tethered by time and space in the usual manner? What if he isn’t weighted down by them as we are?

I started doing some research and I found an ancient document, of reputable source, that may explain it (which I’ve reproduced it here).

It describes, at a high level, a background which takes another as its parameter. What if there are multiple versions of Percy Animé, free of the constraints of time and space. What if there are many Percy’s, but only one will prove suitable to be the Percy Animé.

What if he is the Schrödinger Cat.

Posted on Travel

Whew 2020 was a busy year!

And I didn’t post a single time during it. But it wasn’t because nothing happened—things happened! So many things that I didn’t feel comfortable setting aside the time to stop and blog.

I got back from a month in Europe, which was really cool and, it turns out, convenient. Europe is neat, and I lucked out in a lot of ways. Traveling is fun, but the actual process of traveling itself is kind of grueling, especially when you’re tall. I haven’t really left my apartment in almost a year now, and I’ve found that I don’t really mind it. But maybe that’s just because I’ve been too busy to really notice.

As loyal readers (hey, that’s me!) will surely know, I do computer programming, and in 2020 I was successfully lured into accepting a job – I’m an employee for the first time in twelve years – and it’s been interesting and strange. To think that this is what it’s like for people, getting paid on a set and immobile schedule.

My Snapmaker 2.0 arrived, and it is awesome. I’ve used it to 3D print some things, and done some CNCing. I haven’t tested the laser cutter yet.

As you also know, I am prone to challenging myself to do ridiculous things just to see if I can, and in most cases, stubbornly following through. To that end, I wrote a terrible novel in a month. It wasn’t enjoyable, forcing myself to spew out ~1700 words a day, but it turns out doing things poorly is isn’t as difficult as you might think.

I started listening to Spout Lore, a podcast. Which makes me an official podcaster. Or a podcastee. Or a podcatcher. I don’t know how it works; whichever one listens to podcasts. I also wrote a Spout Lore fanfic, and made a new website for them. Check it out if you like cool podcasts.

I programmed the website for a neat Vodka Soda company, which had some interesting technical challenges that I’d like to break down at some point. It was designed by Sheldon Rennie, who is a cool designer that you should use if you need cool designs.

I joined a D&D game that lasted like nine months. It just ended. For the first few, after each session, I wrote out what happened from my character’s perspective. I stopped doing that somewhere around 45,000 words, but I would like to tell you a bit more about him if only so I can use it as easy reference. A new campaign is starting soon.

There’s a bunch of work stuff that I can’t really talk about, but I also got a pull request accepted into Apache Superset. Now you can do RLS (row level security) with it!

Yeah I’ve been to Edinburgh so what
Posted on Programming

Don’t Starve Together – crafting tool, revisited

I haven’t played Klei’s Don’t Starve Together in quite a while, but there was an update recently which got me thinking about my DST crafting tool. With all the new additions, my data’s bound to be out of date. And even if I update it, that doesn’t really solve the problem, only delay it until the next update.

With my Conan Exiles data tool, I pulled the data directly from the game files – which I could access thanks to their modding support efforts.

Don’t Starve Together supports modding. I’ve even made mods for it. Could I do something similar there? Could I retrieve the data directly from the game files?

If I could, that’d sure help solve the issue.

Turns out I could.

Don’t Starve Together stores its data in Lua, XML, and Tex files, packaged into zip archives. So it’s not overly difficult to read the data from those files. It’s slightly more difficult to extract it in a usable format – many of the definitions reference (and arithmetically modify) other definitions.

But now I have a script for that.

So next time there’s an update, I should just be able to run that script to refresh my data. Here’s hoping.

Also, here’s a link to my don’t starve together helper tool.

It should be pretty intuitive, but click on the ? Icon for further usage instructions in any of the sections. There’s some neat stuff in there. I integrated Logipar into it.

The first two tabs (What can I make, and What do I need) should be fairly helpful. I used them a lot in their previous incarnation. The third (Recipes) less so.

I’m not clear on how the Recipes section should work, yet. Or what it should be. So I just threw something quick up, in the hope that it would help toward figuring out where it should go.

 

Posted on Programming

Logic parsing & cat breeds

Logipar – an open source logic parsing library

Logipar, pronounced Lojipur (and soon you’ll see why), has a history.

It always starts out like this: I’m working on a project and it has some form of filter box – where you can type, and the results shown will be limited to those relevant to what you’ve typed. So you can type “cat” and it’ll show you all cats.

That’s easy enough. But then I want to be able to match multiple things simultaneously – to see all the cats as well as all the dogs.

Still easy, I normally split on commas – “cat, dog” would show all cats and all dogs.

And here is where things get troublesome. Sure, I can list all the cats and all the dogs, but what if i want to list only results that are both cats and dogs.

Okay this example is starting to break down. Where I’m going with this is logic parsing. Splitting on commas, I have to decide whether to join them with a logical OR (show all the cats as well as all the dogs) or with a logical AND (show only results that are BOTH a cat and a dog).

And sure, I can pick one or the other, but what if I want the option to use either?

So I made Logipar. An open source library for parsing logic strings. With Logipar I can type “cat OR dog“, or I can type “cat AND dog“. And it’ll parse that logic for me.

Logipar works in multiple languages, which is convenient because I work in multiple languages. Now to go back and add it to all the various tools I’ve ever written. JK, I probably won’t do that.

But all future projects.. That’s a different story!

You can use it too, if you want, I mean. No pressure.

 


Cat breed data

Having built Logipar, I wanted to create a demo for it. To identify any obvious bugs, sure, but more to better convey what Logipar does and is capable of.

For that, I needed some data. And the first thing that came to mind was cats.

When I went looking for a cat breed dataset, I found nothing. Sure, there were some websites with breed data – but they weren’t great. Fields would randomly be missing, or displayed in completely different ways.

I spent an entire day compiling the data from five different sites (wikipedia, cattime, petfinder, purina, and royalcanin), conjoining it, and then cleaning it up.

Now I have a cat breed dataset.

So if you want to see what Logipar can do and learn about cats, boy, do I have a tool for you: https://altef.github.io/logipar – conveniently iframed below:










It shows more or fewer fields based on the width of its container.



Posted on Programming

Conan Exiles — supplementary

I’ve been playing a lot of Conan Exiles lately and it’s pretty neat. But I’ve come to realize one of the best parts of a video game is making supplementary tools to aid in its play. Herein chronicles my Conan journey in that regard:

What started as a co-op session quickly descended into madness. In co-op you’re tethered to the hosting player, which can get strange. So we spun the world off into a locally hosted private server. Which proceeded to migrate from location to physical location.

The Conan world progresses as long as the server is running. Nobody has to be in it. Things happen. Possibly terrible things. As a self-described coward, that seemed somewhat less than ideal.

I didn’t want to leave it running at all times, but had no way to stop it (or more importantly) start it, once it was out of my direct control. So I wrote a c# server controller, which is also its own webserver, and exposes a page to control the server. So any of us can turn it on or off, etc. Everything worked fine until a new version of one of the mods was released. Now it updates those (and the game) as well.

Conan server control page

Now to frantically start and stop the server to see if anyone notices.

Everything was going fairly well until I hit level 60, when all of a sudden raising the level cap started to look rather alluring. But there are so many level cap mods. I couldn’t decide which to use. So instead I exacerbated the problem by making my own.  It’s called MoreLevelsPls. Now we have until level 250, scaling at approximately the same rate as prior to 60.

y ≈ ⌊86.4023x3 - 129.8326x2 + 61.0945x - 27.7356⌉

It sure seems to work.

Once you make level 60, new opportunities open up. You can make a slew of armours and weapons previously unavailable. Unfortunately, the information available on them, in game, is rather lacking. And they can be costly (in resources) to make.

Soon we were scouring the internet for information on armour and weapons – but nothing really worked the way we wanted. So I made a quick Conan data tool based on the game’s items list. It doesn’t include DLC, but what it has you can filter and, more importantly, sort.

Feel free to use it, if you like!

Posted on Programming

The Family Wishlist is finally mobile friendly

Ten years ago today (plus or minus two to five years) I made The Family Wishlist. And it’s been good. People have found it helpful.

But The Family Wishlist had a problem, one that I hoped – as all problems do – would go away if I ignored it long enough. Much to my surprise, it got worse. Worse and worse.

Or, if not worse, than at least less forgiveable.

The Family Wishlist, you see, wasn’t mobile friendly. Like, at all. But come on guys, it was 2008. Did smart phones even exist then?
It’s impossible to say. But what I can tell you is they exist now; moreover, people use them. Constantly and for everything.

So, after putting it off for ten years – through the power of procrastination – I finally did it. Or, redid it, as it were. I’ve rewritten it entirely, using my API framework (lull7) for the back-end, and react for the front-.

Also, no more ads. Who wants to see those, right? Especially on a phone, where space is minimal.

So if you and your family need to coordinate gifts this season (or any season), give it a try! I don’t know, maybe you’re running a Secret Santa or some such. It does that too. Also, family isn’t mandatory – orphans are welcome.

thefamilywishlist.com »

Thanks Greg, it truly did need an update.

Oh, also, I switched the email system over to SES so they should now arrive more reliably.

The Family Wishlist, 2018

The Family Wishlist