Vow Unbroken – Faerie Tales, Book 3

Faerie Tales, Book 3

Dark Fantasy, Epic Fantasy

Release Date: May 28, 2021

In the third book of the Faerie Tales series, the story expands. In the outset story, Fergus, Aoife, and Niamh hunt down the reincarnation of Tamlin so that they might break the curse.

On the inset story, Aoife attempts to find Cu Roi Mac Daire’s weakness, so she can use it against him. She finds darker secrets await outside his castle’s walls.

Fagan, now going by Fergus, takes up Tamlin’s offer to train with the fae warriors so that he might gain favor with Mab. The prospect of ever seeing Aoife again is bleak until the legendary Cuchulainn, Mac Daire’s sworn enemy arrives.

(This book is written to stand alone, but reading Warrior Tithe will give you the backstory of the characters.)

If you’re a fan of Maas, Black, Armentrout, or Martin, you’ll love this take on the fae and legends of ancient Ireland.

Tam Lin: A Modern, Queer Retelling

Faerie Tales, Book One

Published: October 2020

Never break a promise to the fae…

After a fight with his fiance, Tom Lane needs a change of pace–more accurately, an escape so he can lick his wounds. He travels to Ireland in search of his Ulster-Scots roots.Though he was adopted as a child, Tom is adrift in adulthood and hopes the history of his biological family will help him understand himself and what he truly desires.

While on holiday, he meets Fergus and Aoife, sexy tour guides looking to show Tom a little more than the scenery. Their whirlwind romance sweeps him off his feet, and Tom dreams of making a life with his new lovers. But not all is merry and twee in the Emerald Isle.

Tom soon learns the truth of his past…and the history of his legendary ancestor. The stories he’s heard his entire life aren’t stories at all: they’re warnings. But when Tom finds himself facing the Wild Hunt, it might be too late to listen.

Warrior Tithe

Faerie Tales, Book Two

Published: March 2021

Sparks fly between an unlikely pair with a spurned sorcerer hot on their trail.

Aoife, a kelpie, flees a marriage trap laid by her father, Mannan mac Lir and the sorcerer king Cu Roi mac Daire, only to fall prey to an iron snare in the mortal realm.

Fagan, a poor cottar, with nothing left to lose takes pity upon the kelpie he finds in his snare, setting her free. When the kelpie transforms into a beautiful fae maiden and offers to take him to the queen of Sidhe to repay him for his kindness, he joins her on her journey.

However, Aoife is keeping secrets.

Her betrothed Cu Roi mac Daire will not let his betrothed go so easily. His life and his kingdom depends on it.

About the Author

T.J. Deschamps likes to build worlds with words. She lives in the American Pacific Northwest with her three children, two cats, and a very friendly tortoise. In her spare time, she loves to enjoy her beautiful state, read, dance, lift weights, and might possibly be a dragon.

Contact Links





Purchase Link


My Job Gen Z: Finding Your Place in a Fast Changing World

Finding Your Place in a Fast-Changing World

Non-Fiction, Careers, Business

Date Published: March 2021

Publisher: Skees Family Foundation

Nonfiction business/career studies, sociology of work, real-life vignettes of young people at work along with how-tos for job hunting and career building.


–provides hope and help to young adults launching careers during a pandemic and recession,

–defines the unique qualities of Generation Z based on field research and our survey,

–profiles “ordinary” and famous Gen Zers striving toward and succeeding in their dream jobs, and

–offers resources on how to identify your skills, apply for internships and jobs, negotiate terms and salary, work remotely, and forge ahead with your dream job in a fast-changing world.

MY JOB Gen Z, written by and for Generation Z (born in and after 1995), combines research into the unique experiences and qualities of this rising generation with the results of our own global survey.

We compare what the “”data”” say about Gen Z with who YOU say you are, including an array of real-life profiles of ordinary Gen Zers–how they feel about work, what they want most from their careers, and the challenges they encounter along the way.

We spotlight famous Gen Zers who’ve already had impact on society, built companies, and made millions–and reveal what drives them to succeed.

Then we guide you through best practices for creating your own resume and professional profile, applying for internships and jobs, conducting online and in-person interviews, discerning your valuable skillset and pursuing your own dream job.

The real-life examples and pragmatic advice offered in MY JOB Gen Z will convince you that you are not alone, in an often-challenging and isolating world. It will leave you inspired by your peers doing amazing things and motivated to pursue your own dream job.

About the Authors

SUZANNE SKEES works in international development as director of the Skees Family Foundation and as a storyteller who travels from schools to slums, prisons to farms, writing for nonprofits and their courageous clients who toil every day to end poverty and create equality. She holds masters’ degrees in English literature from Boston College and world religions from Harvard Divinity School.

SANAM YUSUF is a student at Occidental College in Los Angeles, focusing on religious studies and diplomacy/world affairs. She was trained in dialogue and conflict resolution at Seeds of Peace International Camp and spent five years as a delegate with Model United Nations (MUN). Through these experiences, she was able to truly see the power of narratives and storytelling–which is why she’s so excited to coauthor this book!

Contact Links






Promo Link

Purchase Links





Google Play

RABT Book Tours & PR

Long Hours Kill You

The WHO (World Health Organization) recently published a study claiming working long hours will kill you. I agree, though I routinely do it.

Here’s the difference for me. I routinely work 80-90+ hour weeks when on a project. This is an on-site project far away from home. I don’t do touristy things. I don’t often, if ever, hang out with coworkers on weekends. I’m there to bank as much money as possible.

At the end of my contract I go back to the family farm to decompress. Sometimes I stay here three months, sometimes it is close to two years. You can work 80-90 hour weeks, but you have to lead a semi-retired kind of life. Long breaks between projects. Only take projects you find interesting. You don’t even realize you are working like a slave when you truly enjoy what you are doing or are simply fascinated by it.

I’ve blogged before about how technical recruiters cannot understand a semi-retired life consultant. They are using to low wage slaves who can’t miss more than one paycheck without being on the street. When your bill rate is high enough and you are working 80-90 hour weeks, you can take a lot of time off, if you live cheap.


I talk quite a bit about this topic in my latest book. In particular you probably want to read Karoshi – Do More With Less. There are other essays and conversations about the people I know of who died in IT. Some of them I personally knew. Others I came to the client site after the death. Others were just local lore about managers killing themselves in the office to buy their development team more time to complete the project.

I kid you not.

Management at most companies seems to want at least 60 hours per week. You can read this lengthy thread on Quora if you don’t believe that.

If you grew up on a farm you can generally work all the time. At least if you grew up on a farm when I did because that’s all there was to do. We had three television stations; five if the weather was perfect and we turned the antenna. There was no air conditioning and no Internet. You could sweat while reading a book or you could sweat while working. At least when you were working you were moving.

Featured image by Miguel Á. Padriñán from Pixabay

Was Getting Rid of Norton on Your Weekend To-Do List?

What started off as “fix Norton” became a “get rid of Norton” item on my to-do list this weekend. I am soooooo happy now.

Let me be up front and state that professionals don’t use Microsoft products. Of the six to twelve machines in my office at any given time there is no more than one that has a Microsoft OS on it. Professionals simply don’t use Microsoft products for anything.

Having said that, there is always one client that demands documentation in actual MS Word and on rare occasions one wants something cross compiled for Windows. Because of that, you have seen me blog about this computer before. From time to time when I’m feeling nostalgic I think about setting up a retro computer with XP or Windows 2000 (and no Internet connection) so I could play Lords of the Realm II, but who has that much free time even during a pandemic?

Lords of the Realm II cover

I think that will be for the winter months after I officially retire. I never cared for the first person shooter games. The turn based strategy things captivated my attention for far too long though. The DOS version of World of Warcraft was pretty interesting too.

Warcraft – Orcs & Humans

So, this machine sits here on the other side of the office, idle most of the time. I let it run BOINC to help cure cancer, AIDS, COVID-19, etc. Unless I physically need to actually do something under Windows or feel like playing Windows Solitaire, it helps make the human species better. Because it has an Internet connection and Microsoft products are inherently unsafe, I installed Norton.

Reasons to Get Rid of Norton

You had to understand just how little I use the machine to understand just how annoying the Time-Share Up-Sell pop-ups from Norton really are. In and of themselves it would be enough to justify getting rid of Norton.

This particular machine provided an added incentive. I had installed a second hard drive because on even rarer occasions clients want me to use a Ubuntu/Linux VM to do development under Windows so they can communicate with me using Windows. Don’t try to understand, just cash the checks.

I believe Norton is hiring developers that are “priced right” rather than qualified.

Honestly, I really believe that. It’s like Apple dropping serial port support from CUPS because Apple doesn’t make real computers with serial ports.

Lots of ports including serial and parallel

Got news for you boys and girls, engineers need a lot of ports. This very computer came with both a serial and a parallel port. I recently took out the add-in video card but all else remains.

Bad Design Decisions

In the 1990s laptop era you had one hard drive and one CD/DVD. Many of today’s newer laptops make you buy an external DVD. Many of today’s desktop computers come with one hard drive and one DVD. Even more of those pizza box computers come with one hard drive and no place to add more drives.

Some developer at Norton decided that one hard drive was standard and the second drive must always be the DVD. Any additional drives must be actual drives to be scanned. Adding insult to injury, another developer removed the capability of excluding an entire physical drive from scanning in the settings UI. You can only map a path to a directory. Nice huh? There is no way to tell it Drive E should not be scanned because Drive E doesn’t have any media.

Yeah, you aren’t seeing the problem yet. The problem couldn’t be seen, it had to be heard.

During “idle” time Norton periodically runs it’s little scans and what-not. Once per second it was bumping the DVD to see if media had been inserted or some such thing. When I was head-phoned out the other side of the room this was not an issue. When it was head-phones off deep concentration time this was that dripping faucet in the middle of the night.

Even Worse Support

On Friday I decided to contact support. I endured the automated insult bot to the point it transferred me to someone. That someone had to give me a case number. I could wait an unknown amount of time for a call from a mystery 800 number or I could call a specific 800 number and sit eternally on hold. I opted to sit on hold.

Yee-gads! Norton support sucks! I forget how long I sat on hold. I was debating about plugging my phone in to charge as I watched the battery dwindle. When I finally got someone they weren’t much help. They run you through this gauntlet of things trying to tell you it is a hardware problem. Finally they remote in and claim to fully uninstall Norton.

Once Norton was “removed” they told me to monitor the system to see if the DVD bumping went away. I would get a call back in 2-3 hours. I spent much of the day on another machine and didn’t hear any bumping. When I finally came over to wiggle the mouse I saw a big dialog from Norton (the thing that was supposedly removed). It said “This version of Norton 360 isn’t compatible with Windows 10…”


Get Rid of Norton – Last Straw

Early Saturday morning, once AT&T had turned the towers back on in my area, I called back in to the 800 number, sat for quite a bit of time on hold. I finally got someone who was working from home and had no ability to remote in.

I’m all for letting people work remotely, but dammit, make sure they have the tools they need to do their job. He had an Internet connection which means you didn’t send him home with a properly configured company laptop. One has to go to a Web site Norton has to let them in. Norton didn’t properly set up a VPN for their own workers. Gotta wonder how good their VPN really is, don’t you?

I physically wanted them to look at the dialog so they could file a bug that the Norton Remove & Re-install tool they were using didn’t ()*&)(*&U)(*ing work. If Norton really was removed that dialog wouldn’t show.

Ultimately I had him sit on the phone while I searched for and nuked every file that had “norton” anywhere in its name. He said he could escalate my call to some supervisor that might have remote-in capability but I wouldn’t get the call back for 48 hours. Again, it would be a mystery 800 number.

Your manufacturer vehicle warranty is about to expire.

If you life in America and have a telephone, you recognize that line or one very much like it from “Auto Warranty Center.” The current scourge of robo-calls.

48-hour Callback is Not Support

I politely pointed out “48-hour callback is not support.” Not by any definition is that support. If Norton has too many customers to adequately support them then I could help with that problem.

McAfee had a 10 machine special going on. While I’m a professional, I have family members who are “just users.”

I spent Saturday getting rid of Norton from just about everyone’s machine. Just have to drive to my Uncle’s place to get rid of Norton on the last one.

Business/Enterprise Class Computing

We now have a generation of kids who never worked on real computers, only x86 platforms; so Business Class Computing needs to be explained. This all started with an exchange I had on the qt-interest list with someone I respect.

-Text isn’t a stream.

Katepart would disagree.

part of the exchange, their response to my previous message

I run into this a lot when people have only worked on x86 based platforms or Unix. They don’t know what constitutes a Business/Enterprise class system or why. Some believe if you string a bunch of AWS modules together and run your enterprise on it then it must be a Business Class system. Nothing could be further from the truth.

We will start with some pictures to ease you into the conversation. This is a Class 8 truck.

Class 8 truck
What many of you think of when you hear truck

The Toyota Tacoma is generally considered a Class 1 truck. A light truck like this is what many of you think of when someone says “truck.” Yes, some of you will think of Class 2a like the Ford F-150 or the Class 2b like the Ford F-250 or Chevrolet Silverado 2500. The point is that most of the x86 platforms are one of these truck classes, and Business Class computer platforms are the Class 8 lines.

Yes, as long as something could be put into boxes that fit into the bed you could probably transport it with one of these lower class trucks, but should you? The answer to that question will probably become clear with this image.

FedEx truck and tanker truck on Interstate

Just how many little trucks would have to be on the road to keep your local gas station supplied with fuel? How cheap do you think FedEx (or anyone else’s) overnight delivery would be if they were limited to what could fit in the back of a light duty truck? Just how soggy do you want your packages? To round out the discussion and stop all of the “but but but” chatter, just how far do you think your light or medium duty pick-up will get hauling this?

Oversized load on truck with air tag

No, your eyes aren’t deceiving you. The tractor has an air-tag axle in front of the tandem drive axles. It only gets put on the ground when they are hauling something really heavy. This load obviously doesn’t qualify. Not that it matters for this discussion, but highway rules and regulations cap the maximum per axle weight, even with a permit, because roads and bridges simply can’t take much more. The only way to haul something really heavy is to put a lot of axles under it.

Computing platforms are not much different than the truck world; there are just fewer classes. Previously, we had the home hobby (x86), midrange (VAX, HP, AS/400, etc.), and the mainframe (IBM 360/370, Unisys, Amdahl). There were many makers, those are just examples, not intended to be a complete list.

Business Class Computing Differentiation

OS Understands Logical and Physical Record

Lots of people try to spin everything so that the x86 platforms can be considered Business Class Computing. As of this writing they cannot achieve the class. Oh yes, you have N-times the floating point calculation speed of a Cray; Y-times the memory and I/O capabilities of the VAX 11/780 that was used to feed work into said Cray; and some other multiplier of some other hardware point. None of that matters. You don’t yet have a business class operating system.

I know Windows and Linux fans are wailing at such a statement, but it is a simple fact. We will explore that fact in this post.

A Business Class operating system is required to provide and support both the logical and physical definition of a record.

This doesn’t mean simulated with streams or any other hack you will find on the current x86 based operating systems. The definition of a record is the foundation for all other business class functionality. This is how you do locking; have indexed files; and have file journalling. This is how you get something like MQ Series to restart after a hard system crash due to power and automatically re-dispatch the messages it had dispatched at the time of the crash. This is how robust systems work.

OS Provides At Least One Native Indexed File Type

Indexed files are still numerous in their existence. While “new” development should avoid them, they still must be maintained. If you don’t have a relational database on your box, then they are state of the art. You just have to be careful not to lock yourself in. I talk a lot about the multi-typed record in this book.

The Minimum You Need to Know to Be an OpenVMS Application Developer

It was the norm back in the day.

 Key 0:
     Order number    char 10        15 in systems written later.
     Rec_type          char 2
     Sequence_no       char 2         Sometimes called line number
 Generic map with filler at the end for some amount.

 Record Type
 10        Invoice header
 20        Bill to information
 30        Ship to information
 40        Carrier information
 60        Invoice detail
 61        Detail comment
 62        Credit or discount line
 70        Credit or discount summary
 80        Invoice summary

This is a typical example of a multi-typed record for an order file. Not a full record obviously. The primary key started with some character based order number followed by a two character record type followed by a sequence number. Depending on the file type the sequence number (usually character as well) could be either two or three characters. It depended on how many “comment” type lines were allowed on the thing. Usually 01 – 99 was more than enough for most applications.

Why was this design used? It was incredibly fast. You did a keyed hit to the 10 record for a specific invoice then sequentially read until the invoice number changed or you hit end of file. When you are building an order entry screen that has has the bill-to, ship-to, etc. at the top and a limited scrolling region for detail lines, this perfect. Keep in mind these were green screens.

green screen example

You would just have a field for Vendor/Customer ID. You would navigate to it and hit some key combination to bring up a screen like the one above.

This was amazing. It was fantastic. This was a trap. The sheer amount of code written for these types of files made it almost impossible to bring in relational databases. For companies that never grew beyond the limitations of the indexed file system it was okay. Everybody else eventually had to bite a really big bullet.

OS Provides Record/File and Other Resource Sharing

These platforms were designed to be multi-user from the start. Even back when PDP 11 machines maxed out at 2 MEG of RAM and every process had to fit (with the OS) inside 64K Words (it was a word, not byte, addressed machine) we still handled more than 60 simultaneous users plus various batch jobs. Here is an educational and entertaining side trip.

Because these operating systems were designed with business in mind they considered the need for 40+ data entry clerks all having terminals running the same order entry application writing records to the same file. Initially that file was a sequential transaction file that was periodically closed and fed to a batch job for processing. Every clerk was appending records to it, then required to log off and take a break.

Data Entry

If you can’t comprehend having a room full of data entry clerks manually keying orders in get yourself a copy of this book and read up on IT history. In particular you want to pay attention to “Please allow 6-8 weeks for delivery.”

These operating systems could allow multiple users into indexed files, but disk was incredibly expensive. The transaction files were originally punched cards and data entry was a keypunch operator.

Keypunch machine with operator

Later things went to paper tape from a terminal of some sorts. Eventually that went to magnetic tape. All still a batch transaction file to be fed into one or more master files.

The whole transaction file batched into master files architecture started going away as companies found they could afford more disk. Now data entry was a terminal writing directly into the master indexed files.

IBM 3270 terminal

Don’t get fixated on the phrase “a terminal.” It was one or more rooms full of operators at terminals. The typewriters just got changed out for computer terminals.

It was nothing to see 40 people (mostly women) in a room performing data/order entry. Every one of them entering orders into the same master file. The records management system provided all of the record locking and I/O. Depending on the indexed file type and the platform it could also dynamically expand the file.

Languages Work Together on Business Class Computing Platforms







      1        FILE=DRAWING_DATA,
      2        STATUS='OLD',
      3        ORGANIZATION='INDEXED',
      4        ACCESS='KEYED',
      5        RECORDTYPE='FIXED',
      6        FORM='UNFORMATTED',
      7        RECL=K_DRAWING_RECORD_SIZE/4,
      9        KEY=(1:8:CHARACTER),
      1        DISP='KEEP',
      2        IOSTAT=L_DRAW_STAT,
      3        SHARED,
      4        ERR=999)

Above the line of ==== is a snippet of COBOL from a program found in this book. Below it is some FORTRAN from the same book. While it may not be obvious to you, both of these programs operate on the same file and can do so at the same time. This is because the records management system provides the definition of the file and all access goes through the records management system.

Languages Required to Support Indexed Files

COBOL, FORTRAN, and most other languages for business class computers had/have standards mandating support for indexed files. Said support is usually somewhat generic so it doesn’t favor just one OS.

You may not have guessed this if you only worked on x86 based platforms, but language specifications of many languages actually require indexed file support. One of the reasons it has taken so long for a “free” COBOL compiler on Linux is that Gnu COBOL had to find an indexed file library that had all of the functionality required by the language specification. They settled on Berkley DB but it is behind a login screen with Oracle. You can read more about that at this link.

Common Calling Standard

Here’s where the x86 platform really falls apart. For the most part it lacks a common calling standard. This is also where some wiggle room was granted in the language specifications. Technically there is a FORTRAN calling standard, COBOL calling standard, DIBOL calling standard, insert-name-here calling standard. That means that a function or subroutine written in language-x is required to have a certain interface. A given method of arranging/receiving parameters, points of entry, points of exits, and methods of returning values; if you will.

On business class computing platforms you will find they try to respect that desire, but they tend to create a universal calling standard. This is how COBOL can call FORTRAN passing an array as a parameter even though FORTRAN stores arrays in a completely different manner.

When it comes to languages like C/C++ that like to pass things via pointer you can get into all kinds of trouble. To get around such trouble VMS (and probably other platforms) pass parameters by Descriptor. This is a well documented structure that contains all kinds of information about the string, array, custom object, whatever, along with the address of said object. This allows for under the hood “glue code” to re-arrange data if needed.

Try writing a system using six different languages on Linux. Don’t cheat by making each language it’s own stand-alone program. Have one program calling library routines written in five other languages. As an additional restriction don’t use transpilers that convert all of the source to C/C++ and compile that. You haven’t gotten any of the language’s benefit and you haven’t really completed the test.

Try doing the same thing on Windows and don’t cheat using DOT-NET.


Business Class Computing platforms provide a Records Management System that puts the multi in multi-user. It’s not some hokey SHARE hack like DOS had. It’s not something you can bolt on at a later date either. The kernel has to use and rely on the records management system.

Business Class Computing platforms generally provide a common calling standard. You can write your libraries and applications in as many of the languages supported on the platform as you want as long as the compiler works with the common calling standard.

x86 based systems generally don’t do this. OpenVMS is currently being ported to the x86 platform so soon there will be one business class operating system on the architecture.

For more interesting reading along these lines check out my latest book.

Edit: a few minutes after publishing

When Bill Gates was working on DOS he was working on an OS for a personal computer. There was very little storage and little memory. No thought was given to 64+ people trying to use it all at once.

When Ritchie was creating first C then Unix he was using a PDP. Every operating system I ever used on the PDP had a records management system. It wasn’t that he didn’t have exposure to such things. He was writing an operating system for a telecom switch and just wanted multiple people and processes to be able to happen. It was never supposed to get out into the wild.

When Linus Torvalds was creating what we now call Linux he was creating a “free” Unix like operating system for ordinary people. Even today Linux really only supports streams. You have to cobble together other things like PostgreSQL, Berkley DB, etc. if you want multiple users in the same data at the same time. Yes, there is a difference between a journaling file system and file journaling. File level journaling is done to participate in transactions, usually across multiple files.