Sunday, April 30, 2023

Traveller World Explainer - Windows & Android. Phase 1 Complete

Decided to dive a bit more into the MAUI stuff and create an application that works on Windows and Android. I've set the repo to public if anyone wants to check it out here. And yes, there have been, and are several current web-based ones. Traveller world explainers. But I figured I'd start smaller, and possibly this will morph into an Android/Windows Traveller ship tracking/trade management system. Be sort of cool to be able to do this on your phone.

Essentially a C# program. Though if the .Net loading on the Android VM is any sign, not really sure how well it will work. Though I will install it locally on my phone for testing to see if that makes a difference. In theory this would also be able to run on iOS, however, lacking a Mac I cannot verify that.

Going to go through several small phases, and phase 1 is complete: I have a UI that does not do anything other than accept the data to be explained.

If you read the readme file in the project (a readme file in Github, or any system really, is just that: read me for instructions and information as needed), I have several phases I plan on doing:

  • Phase 1: a UI. Done - it is basically there, though no display area for the results we calculate
  • Phase 2: make the explain button actually explain the world
    • expand on the base stats to say what they mean (size 6 = 6000km diameter world sort of thing)
    • get the trade codes calculated
  • Phase 3: get Classic Traveller trade results
  • Phase 4: see about using the TravellerMap API's to allow the user to search for a planet
  • Phase 5: we'll see how this project goes
  • ...
  • Phase 10: conquer the world! (old joke, I know...)
Android emulator

Yes, I do seem to work on personal projects when I am unemployed and have time, once I get past the panic stage! And yes - that is one of the worlds I created via various software packages. I've a list of directions in these posts: tutorial 1 tutorial 2

And yes, the great job hunt continues! More rejections, more applications. I've added my Github and this blog as URLs for some places to let them see there is (1) a person who can write code and learn new things and (2) a person with at least some modicum of creativity. A real, live person. Unlike a lot of the resume review systems which are mostly automated. Which is sort of where my previous post was coming from, I think. Anyway, something will eventually come up, and in the meantime, I'll be spending time applying to more jobs, working on various personal projects, and still worry until something wonderful shows up.

Windows version below - same code! So that is pretty cool really. I also think I can make this into a single executable for Windows, though while I say, sure, you can trust me, you should always be wary of downloading software! If there is any interest in that, once I get it to actually do something, please let me know and I'll see about that process. 99% sure that is possible now without going through installers. And I sort of miss the installers I've used in the past. I think they are still supporting ClickOnce installers which is what I used for the medical Windows program I wrote. It would automatically update the program as changes were made. 

hmm, wonder if I should make the Android app a black background? Easy enough with the resource dictionary to change those things


Anyway - enough software talking (even if Traveller software, the best kind!). Next post will probably be another month using Organic Towns and Windemere Crossing updates!

And thanks for listening to me, my real-live audience! Or at least reading me...

Saturday, April 29, 2023

NPCs - Motivations and getting help from AI

There are a lot of posts out there for how to play NPCs. I know I've read a lot of them and have yet to really play an NPC well. 

Some of the ideas that I've read, and probably posted previously, include things like:

  • base the character on an actor in a specific role. Helps to envision the character and how they may respond to various prompts
  • have a catchphrase or characteristic that the character uses. One of our favorite NPCs was from a game that eventually was rail-roaded, but the main NPC kept going "hr-mmph" a lot, and it was fun as it was actually a tell for us to interpret often
  • generate a hex flower for possible responses. Though this is generally more for a combat resolution, it could also work for character responses
  • I always like the classic Traveller 2d6 roll, with low being antagonistic and high being very friendly. This is used in a lot of games - The Fantasy Trip only uses 1d6 so is entirely random and not weighted, though skills have a bigger effect there than in Traveller
  • have the character have a backstory, relationships, and above all, motivation, Why are they doing these things? The Batman Animated Series version of Dr. Frost portrayed that character, to me at least, a fairly haunting manner. The Sam Raime Spider-Man movies did similar things with its villians: not all were simply bad for the sake of being a foe to the hero, but brought a pathos to the characters that helped with some empathy with their plights
With the broad availability of ChatGPT, I asked it to give me three good villain backstories for an RPG, and got the following:

I found some information from web search results that might help you create three good villain backstories for an RPG. Here are some examples based on the sources I found:

  • A former paladin who became corrupted by a dark artifact**. He was once a noble and faithful servant of Beldaroon, the god of law and justice, but he stumbled upon a cursed relic that twisted his mind and soul. He now believes that he is the true champion of Beldaroon and that anyone who opposes him is an enemy of the god. He leads a fanatical cult that seeks to impose his twisted version of law on the world¹.
  • A ruthless warlord who seeks to conquer the galaxy**. He was born on a harsh and desolate planet, where he had to fight for survival since he was a child. He rose through the ranks of a brutal mercenary company, eventually becoming its leader. He then used his wealth and influence to build a vast army of loyal followers, equipped with advanced weapons and ships. He has no regard for life or morality, only for power and glory².
  • A cunning sorceress who wants to unlock the secrets of the ancient gods**. She was a prodigy of magic, who studied at the most prestigious academy in the land. She became obsessed with the legends of the old gods, who were said to have created the world and then vanished. She delved into forbidden lore and dark rituals, hoping to find clues to their whereabouts. She believes that if she can find them, she can learn from them and become a god herself⁴.

I hope these examples give you some ideas for your own villain backstories. You can use them as they are or modify them to suit your RPG setting and genre. Have fun! 😊

Source: Conversation with Bing, 4/29/2023(1) Backstory Generator - Fantasy RPG Character Creator (DND 5e+). https://backstorygenerator.com/ Accessed 4/29/2023.
(2) 5 Steps to Writing a Killer RPG Character Backstory - Nerdist. https://nerdist.com/article/5-steps-to-writing-a-killer-rpg-character-backstory/ Accessed 4/29/2023.
(3) Backstory description generator - Fantasy name generators. https://www.fantasynamegenerators.com/backstory-descriptions.php Accessed 4/29/2023.
(4) 5 Tips For Creating RPG Villains With Bite - Nerdist. https://nerdist.com/article/5-tips-for-creating-rpg-villains-with-bite/ Accessed 4/29/2023.
(5) Creating Good Character Backstories with AI - LitRPG Reads. https://litrpgreads.com/blog/rpg/gpt-3-good-character-backstory-examples Accessed 4/29/2023.

What is interesting to me is that it is using existing sources to generate the backstories, and it at least also attributes those. It also means that you don't have to go to each and every site. The LLM (Large Language Model) systems are going to have as major an impact on society as the internet did I firmly believe. And just like the internet, there will be a lot of good things, and a lot of bad things, as unintended consequences from these technologies. Case in point: auto-fill for things really helps, as does built-in grammar and spell checks! Even though I proof-read my posts in preview-mode, these language models really help. And in some cases, apparently, do some peoples jobs almost completely for them. I've been reading up on Copilot, an AI assitant for coding that actually generates code. 

Sorry - got off-track about motivations and NPCs, though I did expand the post title to include AI. Though a good backstory does give the motivation with any help. I know in a previous post, based on yet another blog post, I started layering the bad guys. In the beginning, you meet the various thugs and low-level NPCs that, if I lay out the breadcrumbs well enough, eventually lead to the big bad. This is very common in the world of RPGs, and I think it really is a good for anything that is more than a 1-shot game.
Corsairs NPC Villains


And why am I bringing this up yet again? The current game I am in, there are a plethora of NPCs and I've honestly lost track. I started to try & track them visually, as seen here:


But that rapidly got out of hand and was not as constructive as I would have liked. I was also color-coding various aspects of it as well. And this sort of works as a player, but as a GM, you need more.

I've tried Trello and I think that could prove useful if I stuck with it. It is also shareable and linkable so has some advantages. I'd have to be able to hide some things though, so there could always be a GM board and a player board.
I've also tried OneNote and a few other things. And yes, I know I've done a post far to similar to this...

Anyway, after reading a lot in both long and short form from books to blog posts, there is a lot more to NPC characterization than simply a silly voice (which sadly I am very inept at!). The NPC, if a recurring one or even a one-shot chance meeting, needs to be life-like in some ways to help convey the game world as a living, real place. Sort of reminds me of the web series NPC Man, and in particular, this NPC which goes on a long adventure outside his normal routine. And that I really need to add a fishing pole to any character.

And the other reason I bring this up again: my own motivation as my job hunting continues, almost a month later. I've been rejected a fair number of times and ignored a lot more times. I've had 2 phone interviews so far, but I was not a good fit for those. Sadly, I am more a generalist developer: I can do pretty much anything, learn any framework. However, the current job market for software people really wants very specific skills. That sadly, in a year, will be out of date as the next new big thing comes along. At any rate, I've entered the depressed stage for a bit, and I'm expanding out my job search parameters a bit. My spreadsheet has almost 80 applications listed so far. While I know something will eventually come up, it really bothers me on two fronts: first, everyone has to learn how a specific company does things but that no longer seems to be allowed, and second, a generalist is not a good fit for any company I fear. The jack-of-all trades master of none comes to mind. Which, BTW, I tend to be more of what they call a T-shaped developer: A broad background, but whatever I am working on currently I get more skilled at. Sadly, my current T-part is Filemaker and not the .Net I really want to get back to. Sigh. Guess I really need to work on various .Net projects and share my Github account more!

Saturday, April 22, 2023

Sharn, Orc potion peddler OSE version, game prep

I forgot I had an Orc potion peddler, and thinking she may be useful as an NPC. I've created her in TFT here so now we just need to figure out how she works for OSE.

Sharn

As per my previous conversions, strength, intelligence, and dexterity are the same in both systems. Having to roll the dice for the remainder, we have:

  • Strength 9 (a bit on the weak side for an Orc, but she is a small Orc)
  • Intelligence 11 (in OSE this makes her literate, however, as her TFT skills do not include that, and as per my character post she is learning to read at Lubok's, she is currently partially literate and knows a few words at most)
  • Wisdom 13, giving her a +1 on magic saves
  • Dexterity 11
  • Constitution 13, +1 on HP rolls
  • Charisma 11 (even after the -2 for being an Orc)

There is not really a potion peddler per se in OSE, and while not all NPCs really need to have a class, I like the NPCs to have at least similar possibilities of growth as the player characters get. Looking through all the classes I do have, it is really the cleric's role that seems to fit this at least in some way,

Rolling my trusty d4, she is a level 2 cleric with 2,000 XP, 10 hit points, carries the holy symbol of Tinma, God of Plants as a necklace around her neck. Her single 1st level spell is detect magic (there are 8 spells, so I just rolled a d8).

Tinma's Holy Symbol

Using an AI art program and asking for an ivy necklace as a holy symbol, I sort of like this one. And for a god of plants, this is pretty good:

Tinma walking through the woods

And we've not really touched on Tinma, the god of plants. Apparently one of the primary gods for female magic users, and I suppose our Orc potion peddler as well. Often Druids are adherents of this god (though now realize my Orc potion mistress could have been a Druid, but I'll stick with the Cleric of Tinma). 

Tinma often uses heralds when communicating with his followers. His usual herald is a 12 foot tall spruce tree festooned with flowers and vines. There are eyes hidden in the leaves, and the roots are quite mobile. For game purposes, it cannot be surprised and has a MA of 14 (TFT) or 70' for OSE. The herald grows out of thin air, and flowers sprout from the ground it walks on.

If a cleric or druid meets with a herald of Tinma, they can ask a boon if they have been strong adherents to his calling. 1d6 for:

  1. grants 1d6 healing potions in the form of a leaf-wrapped root. These will each do 1 point (TFT) or 1d4 (OSE) healing per potion
  2. grants a twig that has 1d6 uses for purifying water when used in a container of water. This will remove any poisons and bacteria making it perfectly safe to drink. The twig will dissolve on its last use
  3. grants 1d6 meals that are completely nutritious and will last for an entire day. These are leaf-wrapped around a nut-based paste that tastes like walnuts
  4. grants the cleric a token that allow them to sense all life within 120' for 1 turn. Simply place the pine needle on their forehead and praise Tinma
  5. grants the cleric a fig leaf that acts as an illusion for the cleric. They can appear however they like for up to 60 minutes
  6. grants a handful of 4-leaf clovers (1d6). Each one may be used to roll with advantage (technically not in TFT but may be used by rolling an extra die and taking either the lowest (for attacking against dexterity) or highest if used for damage. Must declare usage before any attacks or attempts at magic
If the cleric or druid meets with the herald and has broken their vows:
  1. the cleric or druid takes 1d4 of immediate damage
  2. the cleric or druid loses 1 randomly rolled spell they have
  3. the cleric or druid loses 1d4 strength immediately
  4. the cleric or druid is bound to this spot for 1d6 days to contemplate the error of their ways
  5. the cleric or druid is given a task to accomplish to get back into the good graces of Tinma
  6. the cleric or druid and their entire party are attacked by the herald, though the cleric or druid are the primary target
Tinma followers have few real rules they need to follow. They must not hurt living plants: they can only use deadfall for fires, tools and the like. They basically need to celebrate Earth Day every day (today being Earth Day so this worked out well timewise!) They need to pray every 4 days at least. This is a quiet prayer, and if they can sacrifice a small animal at least every 6 days, they are keeping to the faith. Note that this is one of the reasons Tonma, goddess of lesser animals, and Tinma do not get along. While off-spring of Tionma and Blizria, like a lot of siblings they do not get along. 

Higher level clerics or druids may have the holy texts painted on linen. Usually, the cleric or druid will take the flax themselves to make the linen, and the paint is made from berries and inks. These are considered holy and to be respected. 

Holy days are those when the crops are planted and reaped. Celebrants gather under vine-covered arches and give prayer to Tinma. 

Some notes about this post. I did use some AI art generators as I don't need to worry about copyright per se (though there are always questions about where those AI generators got their models from, so technically there could be copyright issues depending on the training sets of art they used) I also uses the Lesser Key to the Celestial Legion for the herald. Just so that I am using things I have bought over the years (though in my search for this volume, I found a lot I've not used. Yet).

And finally - two weeks looking for a job. I do apply a lot, but I fear being older, despite relevant experience, is causing issues. But I am hopeful that something good will unfold and I'll get into a company that respects me. I've even started adding this blog as a URL, along with my Github site, hoping that they will see the creativity I can bring. Software is actually a fairly creative endeavor: there are multiple ways of solving issues, and sometimes thinking outside the box brings in solutions that are better. Probably one of the reasons I had issues with Rails: it is a good framework for getting things done fast up front, but some of its opinions just rubbed me the wrong way for some reason. Guess years of C-based languages with the conventions that went with that background were different enough from the Rails conventions. But I was getting pretty good at Rails despite myself!

Wednesday, April 19, 2023

Traveller Tracker - the rebirth

Having a bit more time on my hands at the moment, I've decided to return to the Traveller Tracker. I've a few long-term goals, but more short-term goals. 

I was going to do this in Net Core, but decided, after messing with a few other .Net platforms (I know, gobbly-gook to non-developers, sorry!) going with a UWP/.Net 7.0 version. UWP = Universal Windows Program. At one time this was so you could run the software on a Windows computer, phone and the X-Box. Pretty sure it is now just Windows, but available in the Windows store. I'll probably never do that, but may be able to release it as a single executable at some point. And yes, Windows only. Unless I have a LOT of demand to see if I should do this in MAUI (also .Net) and it would be available as an Android application as well. See- one way of getting comments and some interactions with my now 22 direct followers and other followers (and thank you for reading my stuff, and hopefully you find it at least occasionally entertaining if not useful).

I took a previous and unfinished core version and converted it to .Net 7 and it now actually compiles and runs again.


The basic "home" page has those 4 options.

  • Ship Listing: gives you the list of your ships and allows you to create new ones.
  • Ship Classes: gives you the list of ship classes and allows you to create new ones.
  • Worlds: your world library. Previously this was loaded from the wonderful TravellerMap using various APIs, and it will probably do the same.
  • Settings: various settings. One of my earlier versions allowed for which version of Traveller you were using for the various generators (Classic, Mongoose) and the era you wanted to use (as the TravellerMap APIs also include the various eras, in case you were unaware of that)
Short-term goals are various cleanups and getting basic functionality, which includes:
  • create and save ship classes (may actually be working)
  • create and save ships (may actually be working)
  • load your universe from the TravellerMap and be able to pick destinations to go to based on your jump drive
I've already done all this in previous versions, and I was particularly proud that you only had to access TravellerMap once per sector: I downloaded & saved off the world info on the local SQlite database. I don't want to overtax the API with the 5 users that may use this software!

Longer term goals are:
  • per ship, track where and when you are
  • buy & sell cargo
    • freight
    • speculative trade
    • passengers
  • track revenue
Yes, I actually had done all this 20+ years ago in Winforms (the old-school Windows UI). I decided I need to get back to something a bit more modern; that and I seem to be unable to load and use that version of the software anymore. I could go spelunking & probably get it working, but, as I am job hunting, figure I can improve my programming prowess. This is also how the original Traveller Tracker was started: got laid off and had time on my hands. History has a way of repeating itself!

If anyone has any specific types of requests for this, please let me know. While I am hoping for a job sooner rather than later, being an older developer means it is that much more difficult to find a job. Though I did have a phone interview today but have no real idea how it went. I much preferred being on her side of the phone versus my side!

and hey - it DOES save off things - added a ship class. For the purposes of this program, a ship class is just the base essentials needed for what I plan to do: jump, maneuver, power, cargo and passenger capacity. 


Friday, April 14, 2023

RPG Working vs Real World Working

Everyone plays RPG games for a different reason. For me, I love playing games in general, but lack any real tactical or strategic abilities. Growing up, my neighbor would play games with me and, despite being a few years younger, always won. So I moved into RPGs where there are no real winners and losers, even when you die. And of course, in classic Traveller, you can even die before your character even gets to play!

One of the aspects that is covered in few games is working outside of the adventure sessions. For Traveller, you actually have a career before deciding the 9-5 life (or the equivalent of that in the far future) was not what you wanted to be doing. Traveller has a LOT of potential careers, though originally really the basic 6 were covered. You can work your various terms, get some credits and skills, then face the universe head-on.

You too can be a stockbroker in the far future (JTAS 6)

The Fantasy Trip handles jobs between adventures as well. There are a few tables that break down the various jobs available based on experience and how dangerous they are. Like the real world, there are job requirements and pay commensurate with the level of danger and your skill set. To be a spy and get 250 silvers a week needs a lot of skills: stealth, silent movement, disguise, literate, 3+ languages, streetwise. Even more interesting there are notes about raises and all that based on your IQ and a few things. And I thought just Traveller was accountants in space!

And the classic Dungeons and Dragons, at certain levels, certain classes had basically a more permanent job aspect: fortresses, land holdings, your own temple. At least from what I've read: I actually barely played D&D, and have only managed a few sessions in D&D 5. My group tends to play different games. But I am planning on running OSE and those rules are based on the original B/X rules, and there are some examples there of long-term self-employment essentially once you reach a certain level. Assuming you live that long!

the paladin's starter fortress. A bit cold in the winter

I've picked up a few games over the years, and the Space Gits game works similarly to Traveller: you have 1-4 4-year terms, end up in prison, and are part of basically a suicide squad in a dark future. The fantasy version works in the same way: you are a guard or something, end up in a pit.

There may be other games where you have to work for a living in between things (in fact, probably a lot more as I recall my Cthulu character was working as well, and our Fate Vigilante game we all had jobs). Hmm, guess more games reflect the real world a bit more than I thought! Though the one hero game I played in recently, my character was actually a street person, playing his guitar for spare change and living in an alley. And like Uncle Heimlich, Verner ends up in a lot of my games as it turns out he is a doorkeeper between worlds. And possibly immortal, though he does not recall much past a few years. I need to work up both Verner & Uncle Heimlich for the OSE game come to think of it.

Of course, this comes up as I am job hunting again. And while I would love to get some sort of job that had to deal with gaming, I'm also a person who is pretty good at software development and I also really enjoy that as well. What I don't like is the transition between jobs! Despite my characters being brave and willing to risk it all, I'm a bit more introverted and like my security. And insurance. 

There are of course, professional DMs. But I lack the self-confidence to do that. And, as my original employers liked to say, working for yourself is great - you get to pick which 80 hours of the week you want to work! Of course, I did spend 60+ hours a week the last 6 months working, and still got laid off.

Sorry - digressing to the real world. I have been working on learning MAUI which is the .Net stack that will run on Windows, Android and iOS. Thinking I may start, for the 14th time, a Traveller trade program. But this time start really small: you enter a UWP and it will generate the available cargos. I know some versions of Traveller you need to know the destination worlds to generate the various cargo and passenger lists, but pretty sure the original was just the world you were currently on mattered.

I would love to get that in the Android store but I'd have to check with the various stakeholders, primarily Marc Miller and Mathew Sprange at Mongoose. But pretty sure I can release the Windows version as a single executable. And yes, it would be free. Long term I'd like to be able to resurrect my original version, which was really just about feature complete honestly.


Saturday, April 08, 2023

Traveller: 1G drives and landing/taking off

A rather spirited discussion took place over on COTI about ships with a 1G maneuver drive and if they can or cannot take off from worlds with more than 1G local gravity.

Back in college, we never thought through this: we just assumed if the ship could land on a planet, being streamlined, it could take off again. Going with the classic and pulp-style science fiction, we were not overly concerned with the technical minutia. We only cared about having fun.

Which, as I've mentioned before, fun is relative to the eye of the beholder. For some, arguing about these details is part of the fun. And while I really do enjoy arguing far too much about silly things, in the end it is always your game to be played how you want.

After reading through the discussion, I've decided that now I will take into account the M-Drive of a ship to see if it can or cannot land and take off again. Of course, I usually make ships with 2G drives at a minimum, so not an issue. But if the players get a 1G drive, that will limit them to which planets they can actually land on and take off from.

In reading the discussion, there are some interesting takes that could imply it does not matter. An air/raft can reach orbit of any planet in the planet size x hours. If a starship has grav-lifters like an air/raft, does that mean it too can reach orbit regardless of the M-Drive? The rules, at least in Classic Traveller, are silent about this (and the actual aspect of the M-Drive itself is left to the players. I always assumed the drive was a reactionless magic system like most of my SF reading: takes off gracefully and near silently on some form of thrust that does not destroy the landing pad. Heplar and the M-Drive as a weapon flip that around. And I do not like that idea as then you really can't land ships without a very sturdy infrastructure. As witness the last NASA launch that, due to the very powerful engines, caused quite a bit of damage to the launch system platform!)

One of the takes at least hinted at in the discussion was that the g-drive is proportional to the actual local gravity. That is, the higher the gravity, the more g-drive can push. I'm thinking similar to something in water - deeper down, if it is buoyant, it becomes harder to push deeper. A reaction to the local field that is proportional to the gravity. Sort of like non-Newtonian fluids in a way.

The other argument going on was about lifting surfaces and whether the ship could generate lift. A streamlined ship does not necessarily have wings, it is just designed to be able to enter atmospheres in the Traveller universe. Though a lot of ships as portrayed do have wings, but is it enough? For shuttles and the like, ships less than 100d-tons, as those are specifically designed to be used in atmospheric conditions, certainly. Starships have a higher density than shuttles at a guess so it seems less likely. Though if you are going along at mach 25, it does not take a lot of surface area to give that lift.

Anyways - next Traveller game I play, the ship drive will be affected by local gravity so that a 1G ship cannot take off from a planet with more than 1G.

and not at all related to M-Drive, found this when wandering through project rho site (always a wonderful resource!). I may bet back to figuring out a space station 6-digit USS code (Universal Space Station) code. As Traveller loves its 6-digit codes! This gives us the 1st 3 digits, though I may want to remap them to possibly match the way the UWP works. Or not.


And finally - got laid off yesterday. As always, it is a gut punch to me when this happens. The company has been laying off people left and right so while not exactly expected, it was still a surprise. And job hunting at 59 is not a pleasant thought. There is, of course, a bright side: that is really how this blog started more than 20 years ago. I had a sudden large amount of free time, and I can only clean so much. So I started the Traveller Trade program. Will I restart that again? Maybe - I'm going to try and work on the Avalonia tooling in .Net that is supposed to work for Windows, Macs and Android. Though I am going to go through the tutorials and learn the "proper" way. In between frantically filling out applications! And the other bright side: I learned from the 1st time this happened to have a safety net. So I've a bit of time before I really need to worry. Though I'll worry until I get a job because that is what I do. And if it was not for insurance, I am really close to being able to retire. Unless something catastrophic happens, which is why I want to build up my nest egg more. Sadly, despite my many characters in various games, I can't just go out there and explore space or dungeons!

And finally, finally - I have 22 followers! Thanks for following, though more people do read this and not follow me as was pointed out. All good, and as I've said a lot, this blog is really mostly for me to get some of my creative things out there. Who knows, maybe one of these days I'll try a 'zine on Kickstarter. If I start with a PDF only, see how that goes. Just not sure if I've enough self-confidence for that sort of thing. Also, why I don't work for myself!