Saturday, July 11, 2020

My Basic Programs for the Maximite


I have started placing all the basic programs I write for this website on my Google drive and made it public. This is for those of you who do not want to type them in by had. Personally, I think you should type them in by hand, especially if you are just learning to program in MMBasic. Typing in the programs is a good way to start learning and retaining computer programing. Besides that, most of these programs are fairly short. So if you have been following my tutorials and such, the programs are here;

Google Drive Link

As I progress, I will add more to the drive.

The Practical Maximite Part 3

In this tutorial we are going to learn how to take advantage of the Arduino compatibility of the Maximite. All of the Colour Maximites have the headers, but not al of them have the sockets soldered in. Mine came with the sockets, if yours did not, you will have to stop here.

When I was making the choice as to what Arduino hat I wanted for my Maximite, it was actually a pretty easy choice. An LCD hat gives you another readable output, which is good for a number of things like error capturing when debugging programs and providing secondary information. These also provide you with a set of buttons that you can use to trigger events. The hat I got can be found here; 16x2 LCD Keypad Shield 1602. These hats are made by many companies, are readily available and are cheap, since you can generally get them for under $10. Make sure if you are buying one of these from a different manufacturer, that is is built on a HD44780 LCD chip, MMBasic has built in support for this chipset.



There are a couple of caveats with these hats, first, there is a reset button, this is handy for resetting your Maximite if, like me, you do not have a power switch. The downside is, if you accidentally press it, you will loose any unsaved programs you have in memory, so be careful and save often. Second, there is a select button, this does not work, it is hooked up to the 5 volt rail, but I have no idea what Pin it is connected to. Lastly, if at first you cannot get anything to display, the contrast is probably set way too low. The contrast is controlled by a screw on top of the blue plastic thing in the upper left corner of the hat. Give the screw 10 complete turns clockwise, and that should make your text become visible and you can adjust to taste from there.

 Now, lets get on with doing useful things with this hat. I am sure the first thing you want to know is how do you get text on the screen. The first thing you must do is initialize the LCD by telling your program which pins it will be using to communicate, 99% of the time, this is d4,d5,d6,d7,d8,d9 and this is done by simply adding "LCD INIT d4,d5,d6,d7,d8,d9" to the top of the program. Next we issue the LCD command, the first number tells the Maximite which line to print the text on (1 or 2), the second number tells the Maximite what position in the line to put the text (1 - 16), this is then followed by the text you want displayed. The following program displays "Hello World" followed by the date.

'lcdtxt.bas
LCD INIT d4,d5,d6,d7,d8,d9
LCD 1,1,"Hello World"
LCD 2,1, Date$

That is the easy part. The next thing we want to do is make the buttons do something useful. All of the buttons are connected to Pin 35, when in use, Pin 35 will constantly output 3.3 volts, when one of the buttons is pressed, that voltage is reduced and the button can be determined by the voltage. Unfortunately, the voltage differs from board to board, which means you need to determine what these voltages are. The following program configures Pin 35 for Analog Input, this is so we can read the voltage being put out by the pin. The program then starts polling the pin, if no button is pressed and the voltage is 3.3, it does nothing, because no button is being pressed. If the voltage drops, meaning a button is pressed, it prints the voltage on your monitor. Press each button and make a note of the the output for each button.

'bttnvolt.bas
SetPin 35,AIN

Main:

  Volt = Pin(35)
  If Volt <> 3.3 Then Print Volt

GoTo Main

My results were Left=2.01, Right=0, Up=0.49 and Down=1.26, the numbers actually went out 5 decimal places, but don't worry about that. The Right button is easy, Voltage is 0. Left and Down are both fairly close to 2 and 1 respectively, so by using the Int() function, I can round those values down, without worrying about minor variations in the voltage. Up is a bit more complicated, for this, I need to check to see is the voltage is less than 1 and greater than 0, not tough, but something you have to pay attention to. Putting this altogether, the following program configures Pin 35, initializes the LCD, and displays "LCD Button Test" on the first line. The program then polls Pin 35 for a button press and the displays on the second line which button was pressed. The trailing "*" are there simply to make each string the same length, and no characters are left over from the last button press.

'bttntest.bas
SetPin 35,1
LCD INIT d4,d5,d6,d7,d8,d9
LCD 1,1,"LCD Button Test"

Main:
  Volt = Pin(35)
  If Volt = 0 Then LCD 2,1, "*Right"
  If Int(Volt) = 2 Then LCD 2,1, "*Left*"
  If Int(Volt) = 1 Then LCD 2,1, "*Down*"
  If Volt < 1 And Volt > 0 Then LCD 2,1, "*Up***"
GoTo Main

If you have the LED's from the previous tutorial still connected, you can use the buttons to blink the LED's.

'bblink.bas
SetPin 12, DOUT
SetPin 13, DOUT
SetPin 14, DOUT
SetPin 15, DOUT
SetPin 35, AIN
LCD INIT d4,d5,d6,d7,d8,d9
LCD 1,1,"LCD Button Test"

Main:
 Volt = Pin(35)

If Volt = 0 Then
    LCD 2,1, "*Right"
    Pin(15) = 1
      Else
        Pin(15) = 0
  EndIf

  If Int(Volt) = 2 Then
    LCD 2,1, "*Left*"
    Pin(12) = 1
      Else
        Pin(12) = 0
  EndIf

  If Int(Volt) = 1 Then
    LCD 2,1, "*Down*"
    Pin(14) = 1
      Else
        Pin(14) = 0
  EndIf

  If Volt < 1 And Volt > 0 Then
    LCD 2,1, "*Up***"
    Pin(13) = 1
      Else
        Pin(13) = 0
  EndIf

GoTo Main

________________________________________________________

Here are some useful programs for handling the LCD Hat.

'bloff.bas
' This turns the backlight off
SetPin31,DOUT
Pin(31) = 0

'blon.bas
'This turns the backlight on
SetPin31,DOUT
Pin(31) =1

'lcdcls.bas
'This clears all text from the LCD
LCD INIT d4,d5,d6,d7,d8,d9
LCD Clear

The Practical Maximite Part 2

In this tutorial, we are going to add 3 more LED's for a total of 4, then make them blink randomly. For added joy, we will draw matching circles on the screen and depending on how annoying you want to be, we will add sounds to go along with the random blinking. Before I go into the program, you will need to wire up 3 more LED's, if you made it through the last tutorial, it should not be too much of a stretch to wire up these other three. Just remember the Ground needs to connect to the short wire on the LED and the the Data Pins (13,14 and 15) hook up to the long wire on the LED through a resister. Here is mine, the green wires are Ground, the Orange wires are the Data Pins.


Blinking LED's: I went over this in my first tutorial, if you have not worked through that, I suggest you do. We need to configure each Pin for data output, so we can turn the LED's off and on.

Random Numbers: The point of this exercise is to make the 4 LED's blink on and off randomly. We do this by setting the variables G, Y, R and B to either 1 or 2 and we want to assign this randomly. MMBasic has its own random number generator built in, to use it the first thing we must do is seed it off the system clock, this ensures the numbers will be as random as possible. We then use the RND function to generate a random number between 0 and 1, in order to get a number between 0 and 2, we need to multiply the number generated by the RND function by 2, this will generate numbers like .0005432 or 1.0274591, what we want to do is round those numbers to the nearest whole number, being 0 or 1 by using the Int function, then we add 1 to it, so we get a 1 or 2. This is done with the following code; "B = Int(Rnd * 2) + 1". If we wanted to produce a number between 1 and 6 (think 6 sided dice) we would use "Dice = Int(Rnd * 6) + 1".

Circles: When I was originally messing around with my Maximite, I wanted to put matching colored circles on the screen that would flash along with the LED's, that way if something went wrong, I would have some sort of indicator of what might be happening, plus it kind of adds to the show. The circile function is used something like this; "Circle (x pos,y pos), radius, color, aspect, fill/nofill". In the parenthesis is the X and Y positions on the screen, (50,100) would mean the circle is centered 50 pixels from the left and 100 pixels from the top. Radius is exactly that 25 would set the radius of the circle to 25 pixels. The aspect will define the aspect ratio. Because the Maximite's pixels are rectangular an aspect ratio of 0.833 will result in a perfect circle (more or less) on most monitors. Other ratios can be specified for a variety of ovals. If nothing is specified the default is 1.0. So, "Circle (50,100), 25, 2, .833" will produce an empty green circle. Adding an "f" to the end as such; "Circle (50,100), 25, 2, .833, f" will produce a solid green circle.The following shows the numbers assigned for each of the basic 8 colors, 0 is Black.



Sound: This is really just an annoying add on, which I actually did not find use for until later on. But I am putting it here, because, well it is annoying. The Sound function is an easy way to play crude musical notes. The format of the function is fairly simple, "Sound Frequency, Duration". For instance "Sound 440, 250" will play the A note for 250 milliseconds ( one quarter of a second). For this program I am going to use 4 notes and they are as follows; 440 - A, 454 - B, 523 - C and 587 - D. If these are not correct, blame this site, it is where i got these numbers from. I determine the note to play by generating a random number between 1 and 4 with "S = Int(Rnd * 4) + 1", set the S1 variable to the frequency depending on the value of S and then play the note with "Sound S1,250".

Now lets tie this altogether, we start the program with seeding the random number generator, initialize the Data Pin configurations for Data Output and draw out initial circles on the screen.

We then move into the main program, where we randomly determine which LED's will be on and what key we will play and plays it. Then you will see for each of the variables G, Y, R, and B, we check to see if they are a 1 or a 2, using If-Then-EndIf statements. If the variable is set to one, it does not light the LED and draws an empty circle. If the variable is 2, it turns the LED on and draws the corresponding circle filled in. The program then pauses for half a second and goes back to the Main label and starts over again. The program will cycle through this until Ctrl-C is pressed.

' rndblink.bas
Randomize Timer

SetPin 12, DOUT
SetPin 13, DOUT
SetPin 14, DOUT
SetPin 15, DOUT

Circle (50,100), 25, 2, .833, f
Circle (101,100), 25, 6, .833, f
Circle (151,100), 25, 4, .833, f
Circle (201,100), 25, 1, .833, f

Main:
  Cls

  G = Int(Rnd * 2) + 1
  Y = Int(Rnd * 2) + 1
  R = Int(Rnd * 2) + 1
  B = Int(Rnd * 2) + 1
  S = Int(Rnd * 4) + 1

  If S = 1 Then S1 = 440
  If S = 2 Then S1 = 454
  If S = 3 Then S1 = 523
  If S = 4 Then S1 = 587



  Sound S1,250

  If G = 1 Then
    G1 = 7
    Pin(12) = 0
    Circle (50,100), 25, G1, .833
  Endif

  If G = 2 Then
    G1 = 2
    Pin(12) = 1
    Circle (50,100), 25, G1, .833, f
  Endif

  If Y = 1 Then
    Y1 = 7
    Pin(13) = 0
    Circle (101,100), 25, Y1, .833
  Endif


  If Y = 2 Then
    Y1 = 6
    Pin(13) = 1
    Circle (101,100), 25, Y1, .833, f
  Endif

  If R = 1 Then
    R1 = 7
    Pin(14) = 0
    Circle (151,100), 25, R1, .833
  Endif


  If R = 2 Then
    R1 = 4
    Pin(14) = 1
    Circle (151,100), 25, R1, .833, f
  Endif

  If B = 1 Then
    B1 = 7
    Pin(15) = 0
    Circle (201,100), 25, B1, .833
  Endif

  If B = 2 Then
    B1 = 1
    Pin(15) = 1
    Circle (201,100), 25, B1, .833, f
  Endif

  Pause 500

GoTo Main

Thursday, July 9, 2020

The Practical Maximite Part 1

Over the last week or so, I have been experimenting with the Colour Maximite. I have discovered two things as I have been moving along. First, the people at the Backshed forum, where most of the Maximite community hangs out, is not terrible helpful. They are not mean or anything like that, they are just somewhat insular, and are not helpful to newcomers. The second thing I found is there does not seem to be much in the way of useful tutorials. Certainly there are some guides and such, but mostly they are a hodge podge of things mixed together, making it difficult to know where to begin or even to find what you are looking for.

With this in mind, I thought I would create two, maybe three tutorials on what I learned in the last week, starting with how to use the thing with a breadboard, hooking up an LED and making it blink. From there I will work in an LCD panel, and along the way we will draw some circles and play some sounds, maybe even some music. What I am not going to do is go over setting the Maximite up or using the editor, there are plenty of places you can go to learn this. I am also not going to go too deeply into programming in Basic. My goal here is to get you started doing some simple things, so you can get an understanding of how this works at its most basic level.

What you will need is either a Colour Maximite or Color Maximite 2, the  Colour Maximite is cheaper, but the Color Maximite 2 is easier to get at this point. You should not spend much more than $100 to $130 for a fully assembled machine. You will also need 1 breadboard, 2 jumper wires, 1 470 Ohm Resister and 1 LED.

The first thing we need to do is wire the LED to the Maximite. Plug one jumper wire into Pin 12 on the back of the Maximite, in my picture, I use a yellow wire. Next plug another wire into Ground (GND) on the back of the Maximite, I used a red wire. Once that is done, we need to plug those wires into the breadboard. In most breadboards, the holes in each horizontal column are a connected set of five, the holes going vertically, are not connected. You will notice a gap in the middle of the board  separates the set of five on top and the set of 5 on the bottom, these sets are also not connected. So plug Pin 12 wire into the top left corner hole, then take the resister and plug one side into the one of the holes connected to Pin 12, and plug the other side into top hole just across the gap. Next, plug in the LED so the long wire is in the same horizontal column as the resister. This connects the LED to the resister, which is needed to reduce the voltage, then on to Pin 12. The short wire on the LED should then plug into a hole vertically next to the long wire, then plug GND wire into one of the other holes in the same set of 5 holes as the LED short wire. Your wiring should look similar to mine.




Now we start programming. Start up your Maximite and type edit. We need to start by telling the machine which Pin we are going to use and what we expect to do with it. In this case we want to use Pin 12 and we want to tell it to turn off and on. "SetPin 12,DOUT" is how we do this, when using SetPin the first option is the Pin number, the second is the how we want to configure the Pin. In this case we want Digital Output, here are the other options;



After that we simply loop the main commands Pin(12) and Pause, until Ctrl-c is pressed. Pin(12)=1 turns the LCD on and Pin(12)=0 turns it off. The Pause 500 command simply tells the program to wait for half a second, then continue, by increasing or decreasing this number you can speed up or slow down the blinking.

'blink.bas
SetPin 12,DOUT

Main:
  Pin(12) = 1
  Pause 500
  Pin(12) = 0
  Pause 500
  GoTo Main

And that is pretty much it for my first tutorial. If it does not work, make sure you have wired it up correctly, specifically that the long wire on the LED is plugged in with the resistor and Pin 12, then check to make sure you typed in the program properly. Also, do not forget to save your program, we will be expanding it in the next tutorial.

Monday, June 29, 2020

RE: Basic Program for making a D&D Character

I am messing around with a Maximite Basic Box, which is a small computer like device that boots straight into a Basic programming language environment, in much the same way computers did back in the 70's and 80's. I updated my D&D Character generator program to run on it. Obviously, I took out the line numbers, but I added Hit Point Bonus for high Constitution, updated the attribute roller to roll 4d6 and take the best 3 and some cheater code to ask if you want to keep the character after the dice have been rolled for attributes.

Randomize Timer
DIM DICE(4)

Main:
  GoSub Roll4d6
  STRENGTH = TOTAL
  GoSub Roll4d6
  INTELLIGENCE = TOTAL
  GoSub Roll4d6
  WISDOM = TOTAL
  GoSub Roll4d6
  DEXTERITY = TOTAL
  GoSub Roll4d6
  CONSTITUTION = TOTAL
  GoSub Roll4d6
  CHARISMA = TOTAL

  GoSub ShowStat

  Print: Print "Keep Character?"
  GoSub YesNo
  If YN = 2 GoTo Main

  Print "Choose your Race:"
  Print " 1 Dwarf"
  Print " 2 Elf"
  Print " 3 Halfling"
  Print " 4 Human"
  Input CHOICER
    If CHOICER = 1 Then RACE$ = "Dwarf"
    If CHOICER = 2 Then RACE$ = "Elf"
    If CHOICER = 3 Then RACE$ = "Halfling"
    If CHOICER = 4 Then RACE$ = "Human"
    If CHOICER = 1 Then STRENGTH = STRENGTH + 1
    If CHOICER = 1 Then CHARISMA = CHARISMA - 1
    If CHOICER = 2 Then DEXTERITY = DEXTERITY + 1
    If CHOICER = 2 Then CONSTITUTION = CONSTITUTION - 1
    If CHOICER = 3 Then DEXTERITY = DEXTERITY + 1
    If CHOICER = 3 Then STRENGTH = STRENGTH - 1

  GoSub ShowStat

  Print "Choose your Class:"
  Print " 1 Cleric"
  Print " 2 Fighter"
  Print " 3 Magic-User"
  Print " 4 Thief"
  Input CHOICEC
    If CHOICEC = 1 Then CLASS$ = "Cleric"
    If CHOICEC = 2 Then CLASS$ = "Fighter"
    If CHOICEC = 3 Then CLASS$ = "Magic-User"
    If CHOICEC = 4 Then CLASS$ = "Theif"
    If CHOICEC = 1 Then HITPOINTS = 8
    If CHOICEC = 2 Then HITPOINTS = 10
    If CHOICEC = 3 Then HITPOINTS = 4
    If CHOICEC = 4 Then HITPOINTS = 6

  DICE1 = Int(Rnd * 4) + 1
  DICE2 = Int(Rnd * 4) + 1
  DICE3 = Int(Rnd * 4) + 1
  DICE4 = Int(Rnd * 4) + 1
  DICE5 = Int(Rnd * 4) + 1
  GOLD = (DICE1 + DICE2 + DICE3 + DICE4 + DICE5) * 10

  GoSub CheckCon

  Print: Print "What is your Name"
  Input NAME$
  Print
  Print "D&D Character Sheet 1.0"
  Print "------------------------------": Print
  Print "Character Name: "; NAME$
  Print "Character Race: "; RACE$
  Print "Character Class: "; CLASS$
  Print "------------------------------"
  Print
  Print "STR: "; STRENGTH
  Print "INT: "; INTELLIGENCE
  Print "WIS: "; WISDOM
  Print "DEX: "; DEXTERITY
  Print "CON: "; CONSTITUTION
  Print "CHR: "; CHARISMA
  Print
  Print "Hit Points: "; HITPOINTS
  Print
  Print "Gold: "; GOLD
  Print "------------------------------"

  Print: Print "Save Character?"
  GoSub YesNo
  If YN = 2 GoTo FinishUp

  Open NAME$ + ".txt" For OUTPUT As #1
  Print #1,
  Print #1, "D&D Character Sheet 1.0"
  Print #1, "------------------------------": Print #1,
  Print #1, "Character Name: "; NAME$
  Print #1, "Character Race: "; RACE$
  Print #1, "Character Class: "; CLASS$
  Print #1, "------------------------------"
  Print #1,
  Print #1, "STR: "; STRENGTH
  Print #1, "INT: "; INTELLIGENCE
  Print #1, "WIS: "; WISDOM
  Print #1, "DEX: "; DEXTERITY
  Print #1, "CON: "; CONSTITUTION
  Print #1, "CHR: "; CHARISMA
  Print #1,
  Print #1, "Hit Points: "; HITPOINTS
  Print #1,
  Print #1, "Gold: "; GOLD
  Print #1, "------------------------------": Print #1,
  Print #1, "EQUIPMENT:"
  Close #1
  GoTo FinishUp

Roll4d6:
  DICE(1) = Int(Rnd * 6) + 1
  DICE(2) = Int(Rnd * 6) + 1
  DICE(3) = Int(Rnd * 6) + 1
  DICE(4) = Int(Rnd * 6) + 1

  Flips = 1
  Do
    Flips = 0
    For Count = 1 to 3
      If DICE(Count) > DICE(Count+1) Then
        Swap DICE(Count),DICE(Count+1)
        Flips = 1
      ENDIF
    Next
  Loop While Flips = 1
  TOTAL = DICE(2) + DICE(3) + DICE(4)
  Return

  Sub SWAP X,Y
    Local Z
    Z = X
    X = Y
    Y = Z
  End Sub

CheckCon:
  If CONSTITUTION = 15 Then HITPOINTS = HITPOINTS+1
  If CONSTITUTION = 16 Then HITPOINTS = HITPOINTS+2
  If CONSTITUTION = 17 Then HITPOINTS = HITPOINTS+2
  If CONSTITUTION = 18 Then HITPOINTS = HITPOINTS+2
  GoSub CheckFighter
  Return

CheckFighter:
  If CHOICEC <> 2 Then Return
  If CONSTITUTION = 17 Then HITPOINTS = HITPOINTS+1
  If CONSTITUTION = 18 Then HITPOINTS = HITPOINTS+2
  Return

ShowStat:
  Print "STR: "; STRENGTH
  Print "INT: "; INTELLIGENCE
  Print "WIS: "; WISDOM
  Print "DEX: "; DEXTERITY
  Print "CON: "; CONSTITUTION
  Print "CHR: "; CHARISMA
  Print
  Return

YesNo:
  Print "1 Yes"
  Print "2 No"
  Input YN
  Return

FinishUp:
End

Dungeons & Dragons News

There are a couple of things going on in the world of D&D, both on a personal level, and the world at large.

First off, I just started DMing again after a nice 6 month break. My group decided they wanted to play some good old fashion AD&D 1E. This game has been out of print since 1991, and has been out of favor longer than that. The core 3 players all said this was what they wanted to play, they said they were tired of bonus actions, reactions, feats and weird combinations of multiclassing that breaks the game. Back then there was not a lot of options, characters were not differentiated by their race, class, or attributes, but rather how the player played that character.It did not matter if you were a fighter with a Strength of 13 or 18, what mattered is what you did and what you contributed to the game.

The other thing that is slipping in, is The makers of D&D, Wizards of the Coast (WotC) has decided it is going to change the game to add more diversity by eliminating all evil races, not really eliminating them, but rather make races like orcs and drow just as morally and culturally complex as other peoples, meaning they will no longer be culturally evil. A lot of people are upset about this, you know because why not. Personally, I say play the game you want to play and don't worry about what WotC or anyone else wants. The bottom line is, this is our game, sure they publish the rules, but we are the ones who bring it to life. Really, it is not a big deal.

Sunday, June 7, 2020

Review: The Sparrow #1

The Sparrow (The Sparrow, #1)The Sparrow by Mary Doria Russell
My rating: 3 of 5 stars

The Sparrow is a somewhat difficult book to enjoy. This is not to say it is a bad book, it is in fact a very well written book with a very interesting first contact story. The reason it is difficult to enjoy is because some very terrible things happen to the primary character Emillio Sandoz. I am sure the author's intent was to write a modern day Book of Job. Father Emillio Sandoz is a Jesuit priest blessed with many friends and a happy successful career, serving God. When one of his friends detects radio transmission from space, this sets Father Sandoz on his path to destruction, where his friends, his freedom and his purpose in life are all stripped from him as he slips into slavery and degradation. Father Sandoz's faith is tested to the very limits.

The Sparrow is a story of how NOT to send people 4 light years to make first contact with an alien race. I get it, the idea that an organization like the Society of Jesus (Jesuits), has the resources and the ability to make a unilateral decision to send 8 people into space and make it happen, is an interesting one. The author explores this idea pretty well and makes it abundantly clear how bad of an idea it really is. None of these people were truly equipped to deal with cultural differences and their doom was inevitable, because they simply did not understand what was happening around them and why. Missionaries have historically always been on the leading edge of exploration, after all, bringing the word of God to heathens is part of the very DNA of almost all religions. This, however, does not make them the best candidates for such things.

From the point of view of speculative fiction, this is a really interesting book, from the view point of an empathetic human being, this book is rather depressing and it is difficult not to put the book down as the fate of the crew unfolds. At this point I have not decided if I am going to read the second book or not.

View all my reviews

Monday, May 25, 2020

It is Memorial Day

Summer is book ended by two holidays, Memorial Day and Labor Day. Every Memorial Day I have high hopes for the summer, but usually by Labor Day I am disappointed. You would think by now I would have learned my lesson. This year, my expectations for summer are very low, not because I learned my lesson, but because COVID-19 is here and it is not going anywhere. Sure there will likely be a slow down the infection rate, but it will not go away and come fall, we will see the second wave and everyone will be surprised.

So I would like to turn my attention to Memorial Day itself, not as the beginning of summer, or a day of BBQ, but rather as a solemn day of remembrance. To be clear, Memorial Day is for soldiers who lost their lives during conflicts. Veterans Day is when we show our gratitude to those who survived those conflicts.

I am a veteran, I have been to war, but more importantly, I have seen the results of war. I am going to state clearly and without regret, that war is never worth the end result. I am not going to tell you the United States should not have entered World War II, we had no choice and it was the right thing to do. However, World War II never should have started in the first place. Adolf Hitler's dream of world domination was not on any level worth the lose of even one life, let alone millions. I say the same thing about the 2nd gulf war, whatever reason George W. Bush had for starting that war, was not worth the end result.

I am certain I will receive criticism for this point of view, after all, isn't the world a better place without Saddam Hussein? The answer is, no the world is not a better place, because nothing has particularly changed. The middle east is still a mess and has turned into nothing more than meat grinder for American troops. Certainly Iraq is a democracy now, but it is one that is being propped up by 25,000 American troops who remain stationed there and the billions of dollars a year we send in aid. If we were to withdraw, the people of that nation would likely vote themselves into another dictatorship in just a few years, so no meaningful change has occurred in the world as a result of that war.

I do believe we should remember these men and women who sacrificed themselves and we should show them the respect they earned, we should not fool ourselves into thinking their sacrifice had meaning, because it did not. War should not be glorified, it should be viewed as a failure of humanity.

Edit:
So think about this when deciding if the Iraq war was necessary or not. If Iraq's primary export was strawberry jelly rather than oil, but everything else was the same, would we have still found it necessary to invade?

Sunday, May 10, 2020

RE: Mothers Day Thoughts

My wife and I never had children. It was not for lack of trying, because we did, but my wife's health issues made carrying a baby to term very difficult to say the least. By the time we were in our 40's, her getting pregnant would have been a danger to her life, but going on birth control was not really an option, again, her health issues. So we made the decision that I would get a vasectomy and that was pretty much the end of it.

For myself, I am sad that we never had children, but I cannot say I regret it. I maintain that I would probably have net been terribly good at being a father. I had no real father figure in my life and the one I did have was himself a terrible father. I know I would have loved our children, and I would have done my best to give them the life they needed. However, I don't think I would have lived up to even my own low expectation. Perhaps this is just an insecurity left over from my own childhood where I watched my own father fail at fatherhood in real time. I am sure I would have done a better job than he did, but i could never shake the feeling, that i still would have been bad at.

What I do regret, is not being able to give Shannon children, I know she wanted them and I know she regrets that we never had any. In spite of that, we have made a good life for ourselves and we have many nieces and nephews who only mildly annoy us.

Shannon, I am sorry we never had children, I think you would have been a wonderful mother, who would have more than made up for my shortcomings as father. I am sure you also would have let me name them Fafhrd and Gray Mouser, or Conan and Elric. I love you, Happy mother day.

Mothers Day Thoughts

My mother was a single mom raising 5 kids on her own after my dead beat alcoholic father left. I know she had a rough life raising us, but I also know she loved us and made many sacrifices to make sure we were clothed and fed. I love my mother, she is a saint and as far as I am concerned above reproach. Thank you Mom, I appreciate everything you did for me.


Tuesday, May 5, 2020

My introduction to Tarot

This is page 19 of the comic book Doorway to Nightmare #2, published in 1978 and was my introduction to Tarot Cards.

I have been interested in Tarot cards off and on since then. Shortly after reading this, I bought a deck of my own, a Rider-Waite deck if you must know. Although that deck was lost long ago, I have replaced it and I even own a Crowley Thoth Deck now as well.

Recently DC Comic released all five issues of Doorway to Nightmare on Comixology and I purchased them, because I remembered reading and enjoying them as a kid. Reading though them again, I realize these were very adult comics even for a 15 year old. I also realize that comic books introduced me to a lot of things that I still find interesting today. It is very apparent to me now how influential comics were to my development as a person.

Wednesday, April 22, 2020

Depression Era Hoarding

When I was a kid, my grandparents saved weird things, plastic bags bread came in, the card board center of toilet paper rolls, scrapes of cloth, to name just a few odds and ends. At the time, I had no idea why they did this, and when I would ask, they would simply reply, you never know when you might need them. This made some vague sort of sense to me, but not really. When I got older, I noticed that other peoples grandparents did the same thing, and learned a little bit about history, I realized they did this because they had grown up during the Great Depression and during that time, you did not throw anything out, absolutely everything had a secondary use.

I began thinking about this, because several weeks ago when this whole COVID-19 thing came into the broader public awareness, and people began hoarding toilet paper and it was getting difficult to get, while I had plenty to last me for several weeks, I felt that I needed a backup plan. I was hoping that once everyone had filled up their spare bedroom with boxes and boxes of toilet paper, they would realize they were being stupid, but I was not going to count on that. I went on Amazon and saw that basically all toilet paper would take 4-6 weeks to be delivered, I ordered an 18 roll bundle and figured it was going to be more like 6-8 weeks, which I ended up being right about. At the time, I was thinking, that was going to be cutting it close and that where I started thinking about plan B.

A few days later, I had just been to the drive through at McDonalds and when I opened by bag, there were napkins, I pulled them out and went to toss them in the backseat, where I had accumulated a small pile. I keep them, because you never know when you will need them, wait this sounds familiar and my plan B solidified in my brain. I would save all the napkins I could get by hook or by crook.

Here we are now, 6 weeks later, my toilet paper from Amazon has arrived and here is my accumulation of napkins.

I think my grandmother would be proud of me.

Sunday, April 12, 2020

Postmortem on my FaceBook Reading Challenege

I finished all the book recommended to me at the beginning of the year by my FaceBook friends except 1. My very dear friend Alan recommended VMWare for Dummies, I did not read this book because my sense of the world right now is somewhat bleak and I really need good escapist fantasy, and VMWare for Dummies just seemed to much like work to me, too real. So I am very sorry Alan, I apologize, in this respect I have failed.

The biggest surprise of the challenge was Looking for Alaska by John Green. This book took me by complete surprise. This is not the type of book I generally like, I did not enjoy my teenage years very much and so I am not inclined to like books about the subject, I generally cannot relate. But Looking for Alaska was a genuinely good book with some interesting insight into the teenage psyche, mind you, I still cannot relate, but it was a good book anyway.

The biggest let down was Stiff: The Curious Lives of Human Cadavers by Mary Roach, this book did not work for me in any way. The subject matter did not bother me at all, but I found the authors humor annoying and writing style to be completely wrong for this type of book. Stiff was hard to read and undeniably bad.

All Systems Red by Martha Wells was a big hit with me, I have always enjoyed her writing and this book is some of her best work, its fast, its funny, its well worth the time to read. The Circle by David Poyer was a book I wished I had liked better than I did, it was not a terrible book, it really just failed to draw me in.

I really enjoyed this challenge, it was fun reading books my friends enjoyed and sharing experiences with them. I hope everyone followed the links from FaceBook and took the time to read my reviews. Thank you to my Niece Elizabeth for suggesting I review the books when I read them as part of the shared experience. I am definitely doing this again next year

Wednesday, April 8, 2020

Review: A River Runs Through It and Other Stories by Norman Maclean

A River Runs through It and Other StoriesA River Runs through It and Other Stories by Norman Maclean
My rating: 2 of 5 stars

Oh my god, I am glad to be done with this book. This book was a serious slog for me and the biggest problem is, even after finishing the book, I am still not sure what it was even about. I am not going to apologize for not liking this book. I did not like for the same reason I do not particularly care for Steinbeck and Hemingway, they are people who talk and talk for hours, but never say anything consequential, they don't talk about anything meaningful. This is all fine and dandy in a casual conversation with your friends, but when reading a book, it is really boring.

I will say Maclean is a serviceable writer, his prose is clean, it easy to read and the story does flow well, even if it takes him 3 chapters to get to a point, not the main point, just a point. However, the subject matter was just not engaging in any sense. Not every bodies life is worth reading about, 99% of us live quiet boring lives, in which there is maybe one good short story. Maclean decided his story was worth 240 pages and it really wasn't.

Okay, I suppose I have blown this book up enough. I can see why people like it, it is low key, very folksy and I am sure there is a decent audience out there for books where fly fishing is a metaphor for life. It is not a stressful book to read and if I were in the right mood, this would probably be a nice book for a slow Sunday afternoon read in a warm quiet place. This is probably the books saving grace.

View all my reviews

Monday, April 6, 2020

Review: Far-Seer by Robert Sawyer

Far-Seer (The Quintaglio Ascension Book 1)Far-Seer by Robert J. Sawyer
My rating: 4 of 5 stars

Far-Seer is a very good book. The story explores the the affects of science on society as old beliefs and faith are replaced by and with scientific discovery. On earth this took centuries and in many ways still goes on today. In Far-Seer, the reptilian race of the Quintaglio must make this journey in decades rather than centuries. The writing is smooth for the most part, there are some rough spots, but nothing that interrupted the flow of the story for me. The characters were a tad on the shallow side, but this is often true of books that are intended as series instead of stand alone books. What the author really excelled at in my opinion is world building. I really liked the culture of the Quintaglio, he did a very good job of laying out the political structure, the religion of the Quintaglio and the world they lived on. If you are looking for something different and enjoyable, this is the book for you.

View all my reviews

Saturday, April 4, 2020

Creating a Zero-level Character in D&D 5E

Zero-level characters are just that, the ZEROES of the world. They are the Inn
Keepers and Bar Wenches, the owner of the general store and the sailors manning the ships at sea. Most of these people never earn the 300 experience points needed to obtain 1st level and become one of the truly remarkable people in the world. This system is primarily for building NPC's like Torch Bearers or Scroll Caddies. However, it can also be a challenging way for player characters to start their careers. 


Ability Scores:
Players have 12 points to spend on ability scores, per the Players Handbook, page 13. You may also choose to use the Zero-level character standard array (12, 10, 10, 10, 10, 8)

Race:
The player chooses one of the races from any book sanctioned by the Dungeon Master. Modify abilities accordingly.

Alignment:
All Zero-level characters are neutral. The player will choose an alignment when the character reaches 1st level.

Hit Points:
Zero-level characters have 6 hit points plus Constitution modifier.

Background:
The player may choose a background for his character from any book sanctioned by the Dungeon Master.

Weapon Proficiency:
All Zero-level characters are proficient in a single Simple Weapon.

Equipment:
A Zero-level character begins play with the weapon they are proficient with, a set of common clothing and a pouch with 10 gold pieces to purchase additional equipment prior to play.

Experience Points:
Zero-level characters begin play with -300 experience points.

During play: 
PC's will be given the chance to learn to use weapons, cast spells and pickup skills, prior to becoming 1st level. These abilities will be retained after they become 1st level, but cannot be improved up unless the player chooses the appropriate class. 

Weapon Proficiency: 
Any character may attempt to learn to use any specific weapon by using it in two fights and then making DC 12 Intelligence roll, on a success, the player becomes proficient with that weapon. If the roll is failed, the character may make the roll again after another fight in which they use the weapon. Only one weapon proficiency can be learned in this fashion. 

Spells:
Any character may attempt to learn a Cantrip by attempting to and successfully casting the spell two consecutive times. The character must spend 1 hour studying the spell from a spellbook or scroll. After studying the Cantrip, he may attempt to cast the Cantrip by making a DC 12 attribute roll against the controlling attribute of the spell, ie Wizard spells use Intelligence, Cleric spells use Wisdom, Sorcerer spells use Charisma, etc. Warlock spells may not be learned in this fashion, as they are pact gifts. Upon two consecutive successful castings in this fashion, the character has learned the spell and may now use it, using the normal Cantrip rules. If the roll is failed, the character must further study the the Cantrip for 1 hour and then can attempt to cast the Cantrip again. Only one Cantrip can be learned in this fashion.

Skills:
Zero-level characters roll at Disadvantage when attempting any skill they are not proficient with. Any Character may attempt to learn a skill they do not have a proficiency with. To gain a Proficiency, the character must attempt to use the skill on two separate occasions where the the skill is appropriate to the situation. Upon succeeding at two consecutive attempts to use the skill where the DC was 12 or higher, the character no longer rolls at Disadvantage when attempting to use that skill. After two more consecutive attempts at using the skill where the DC was 12 or higher, the character gains proficiency in that skill. Only one skill may be learned in this fashion.
 
1st Level:
Once a
Zero-level character earns 300 experience points, putting them at zero total experience points, they advance to 1st level, the player has an additional 15 points to increase the characters ability scores, chooses a class and assign an alignment. The player may also choose a Feat as a bonus for going through the process of being a Zero-level Character.

Friday, April 3, 2020

Review: Wool by Hugh Howey

Wool (Wool, #1)Wool by Hugh Howey
My rating: 3 of 5 stars

Wool is a short story, normally I would have blown through this story in a single sitting, but I actually stopped reading another book to pick this one up, then I went back to the other book and finished it. This probably says something about both stories. However Wool is actually a good read, in just 58 pages the author built an interesting setting, constructed an interesting leading character, and walked us through a compelling story.

I have two problems with this story, first I think this was the authors first work or he did not have a good editor, there were some rough spots that a good editor and another draft probably would have fixed. The second is the primary focus of the story does not really make much sense. I don't think I am giving much away by saying, this is a post apocalyptic society living underground, their only connection to the surface world is cameras that give them a view of the blighted landscape. Periodically the lenses of these cameras need to be cleaned, but instead of sending out trained professionals to do maintenance on sensitive equipment, they send criminals and dissidents out with a rag and Windex on a one way trip. While this makes for an interesting personal story for the main character, it is really kind of silly.

Wool is a good story, well worth the read in spite of the rather minor problems I found.


View all my reviews

Thursday, April 2, 2020

Review: The Circle (Dan Lenson, #3)

The Circle (Dan Lenson, #3)The Circle by David Poyer
My rating: 2 of 5 stars

I am somewhat torn in my opinion of this book. On the one hand, I understand what the author was trying to convey. He was paining a picture of the what it is like to be aboard a combat vessel during the cold war, when there were frequent stand offs between American and Soviet ships at sea. These stand off must have been stressful and dangerous beyond belief, the captains of these ships had to make hard choices about what to do and when to do, and I am sure this often caused the lose of life. I think over all the author did an okay job of bringing that across.

On the other hand, I did not find the authors writing style to be terribly interesting. The plot moved along too slowly, sometime getting mired in unimportant details. The book was really two stories, had the book ended after the first part, I think I probably would have rated it higher, but the story went on for another 200 pages. I did not find any of the characters particularly compelling and it was fairly obvious how any given character was going to react to the situation at hand.

So over all, this was a decent book, not a great, but okay. I admit, part of that is I do not particularly care for this type of fiction. If you enjoy military style fiction, you will likely enjoy this book, however if you are looking for a fast moving adventure novel, this is not it.

View all my reviews

Tuesday, March 31, 2020

Playing D&D Online

With COVID-19 sweeping the world and everyone wondering where all the damn toilet paper went, there is a mass migration from playing D&D in person to online. My group and I have been playing online now for 18 years. I doubt we are the longest lived online game in existence, but we were certainly pioneers in playing RPG's online. We have certainly had our ups and downs, players have come and gone and we have certainly almost broken up at least once, but somehow we just keep traipsing along, year in and year out.

In 2002, I had not played in a regular game since I was in the Army in 1995, we played D&D for about 6 months before before we deployed to Bosnia, which pretty much killed the game. Prior to that, I played 2 or 3 games of GURPS in 1992 and before that was 1990. So the 90's were pretty much an RPG wasteland for me, I wanted to play, but I just never found a group of people I was comfortable enough with to actually get down to playing.

I discovered two things in 2001 that changed all of this for me. First I discovered HackMaster, I came across the players handbook in Barns and Noble, the cover was designed after the Advanced Dungeons & Dragons first edition cover, I was suddenly washed away by the nostalgia of it, I sat down on the floor and started reading it right then, right there. The wife found me an hour later still sitting there wondering what the hell I was doing. I bought the book and all the follow up books for the RPG and I WANTED to play again, I missed my old group from Montana. Sometime later, I discovered OpenRPG, a program for playing RPG's online. OpenRPG was definitely ahead of its time, providing the capability no one else was. It had built in chat, a drawing board, dice rollers, interactive character sheets, the whole nine yards. The big problem of course was, OpenRPG was not a very good program, but it was better than just about everything else out there, and for a long time, it was the only thing out there.

In early 2002, I decided I was going to run a game using HackMaster and OpenRPG. I started contacting all my old friends in the various groups I played with in the 8o's. I sent letters, I emailed and I called them. One by one over 2 or 3 months, I finally got 4 people to agree to try it. In April of 2002 on a Sunday afternoon, we all successfully installed the program and logged into the server and started rolling up characters. We played our final HackMaster game in December of 2015, when we switched over to playing D&D 5th Edition, around the same time, OpenRPG stopped being developed and we needed to switch to a new platform. We experimented with a couple of others Like Battle Grounds and Fantasy Grounds, before finally settling on Roll20, which we have been using ever since.

So to all of you new comers out there, just now starting to play your games online, welcome, pull up a chair, grab some dice, we have been waiting for you.

Saturday, March 28, 2020

Character development in Dungeons & Dragons

Back when we were playing in the early days, I put very little thought to the way my characters would develop over the course of any given campaign. Back then there were not a ton of options anyway, a fighter was pretty much a fighter differentiated only by the attributes you rolled and the personality you provided him. The only time characters developed in weird ways was when an unusual magic item would popup. If I started the character using a Long Sword and a shield, and a +1 two handed sword came along, you bet your ass I would drop sword and board in a heart beat and still later, if a +4 Spear dropped, that two handed sword got sold off for scrape.

In the current version of D&D, there are a lot of options available. Even at first level, the background you choose or the skills you take can have a lot of affect on a character. As the character levels, he gets to choose his subclass, increase his attributes, and take feats. Two fighters starting out at 1st level together, will probably look very different by the time they are 4th or 5th level, depending on the choices the players make as the characters progress. Most players these days, when starting a new character, generally has a plan as to the type of character they want to play and how they are going to develop that character as the game moves along. I am no different in this respect.

My latest character, Haakon started out life as a pretty stock fighter. I like human fighters, while I certainly play other races and other classes, human fighter is more or less my preferred character type. When I started Haakon, my plan was to build him as a sword and shield type of fighter, concentrating on his ability to sustain large amounts of damage and or avoid damage altogether rather than how much damage he can deal out. The theory being that combination of a good armor class and better than average hit points, would ensure he could outlast his opponents and live to land the finishing blow. Needless to say, I multi classed into Barbarian to get some damage resistance and a few levels of that sweet d12 hit dice. The addition of a flaming sword, was just icing on that cake.

Two games ago, Haakon acquired an animated shield, a shield that dances around you, doing all the things shields are supposed to do, all on its own. This freed up a hand, this was unexpected. I had been developing Haakon as a single weapon fighter, I had taken the Duelist fighting style and I had never considered the possibility of becoming a two weapon fighter. Haakon was simply not optimized for this type of fighting. Now I could just give the shield to someone else and move on, and I may do that, depending on how things shake out in the next few games. In the mean time, this adds some interesting choices to Haakon's development. This would allow me to trade the +2 damage bonus Haakon gets for taking the Duelist fighting style, for an additional 1d8 damage attack. There are pros and cons to this choice, the +2 damage is guaranteed on any hit and could potentially lead to 4 extra damage per turn, as he has 2 attacks, which is more or less the average of a 1d8 die roll. Adding the extra attack could lead to extra damage, as the die roll could be a 5, 6, 7 or 8 and I will roll above a 4 at least half the time, (although I will roll less than 4 at least half the time as well). However, the extra attack also gives me addition chances to roll a critical hit.Going this route also forces me to take the Dual Weapon Fighting Feat, so I can use heavier weapons, and since I chose Battle Master as my subclass, I will not be able to gain the two weapon fighting style.

So over the next couple of games, I am going try it out and see how dual wielding works out, if it is meh!, then I will give the shield away and go back to being a Duelist.

Thursday, March 26, 2020

Review: The Zero Blessing (The Zero Enigma, #1)

The Zero Blessing (The Zero Enigma, #1)The Zero Blessing by Christopher G. Nuttall
My rating: 4 of 5 stars

This books was better than I thought it was going to be. Usually young adult fiction is is not my thing, although there are some really good ones out there. The Scythe series for instance is a really good series and the fact that it is YA is a side note. I came into this series with some low expectations, I was thinking "Okay, yet another Harry Potter clone", but I was pleasantly surprised. While it is standard fare The Chosen One goes to wizard school, there are some interesting twists in the story. I am usually pretty good and figuring out plots twists before the characters in the book do, but in this case, the author fooled me completely until the main character figured it out herself, which pleased me, I enjoy it when an author gets one over on me. Good book, well worth the read, especially if you like YA stories.

View all my reviews

Thursday, March 19, 2020

Review: Once an Eagle

Once an EagleOnce an Eagle by Anton Myrer
My rating: 3 of 5 stars

This was a long damn book, probably a lot longer than it needed to be. I am pretty sure this book could have been done in 500 pages, there was a lot of unnecessary sections to the book, chapters that did not move the plot forward or contribute to character development. The authors writing style was often rambling and one too many times changed the scene mid paragraph. While the characters, specifically Sam Damon and his wife Tommy, were well developed, the author clung too hard too stereotypes, especially with the secondary characters.

Having said that, this was actually a good book, following the career of General Damon from a farm boy through being an enlisted man, and through to becoming a General. Sam Damon lived a good life, one that many of us only wish we could have had. He was strong, proud and never wavered, except for once, in a moment of weakness, which he regretted the rest of his life. His character was obviously based on every character John Wayne ever played and his wife was Maureen O'Hara, red hair, green eyes and a fury personality. Don't let all of this fool you though, this is very much an anti war story, war is not glorified in this book in any way. Even World War II is portrayed as it actually was, bloody, messy and corrupt. While reading the story, I was often reminded of Catch-22, where the villains are not the Japanese or Nazi Germany, but rather the upper echelons of the military, horrible people who mismanaged the war and made questionable decisions that cost more American soldiers lives than was needed.

I can see why this book is on every 2nd Lieutenants reading list, the book portrays Sam Damon as a man's man and leader among leaders. A leader who is willing to go out on a limb for his men and even crippled his own career at times to do the right thing. The sad thing is, I think a soldier like this would be washed out of service before he ever made Major. Sam Damon is how every officer in the military views himself, but in reality an officer like him would be branded a wild out of control renegade and no one would except him into their command.

View all my reviews

Wednesday, March 18, 2020

Re: Donald Trump vs COVID-19

I am cross linking this from Leigh's Nurseferatu blog, it is a very nice follow up to the Sunday podcast and my own blog post from a few days ago. I share this not just because I agree with everything he say says (I Do), but because it is important that we know where we are and how we got here. People are scared and I don't blame them, I am scared too. Its not a hoax, its not fake news, this shit is real. Every presidency is faced with its moment of tragedy, and the difference between the great presidents, the simply good presidents and the terrible presidents, is how they handle this moment. The leadership of this country has failed us and we need to never forget this.

https://nurseferatu.net/2020/03/17/a-pr-problem-is-all-this-is/

Sunday, March 15, 2020

Donald Trump vs COVID-19

Here is a link to today's Nurseferatu Podcast, as promised we discussed the Corona Virus for nearly 2 hours, specifically the political incompetency we have witnessed for the last 3 months. Enjoy!

https://nurseferatu.net/2020/03/15/podcast-4/

COVID-19 aka The Corona Virus

I suspect Leigh and I will discuss this ad nauseam today on the Nurseferatu Podcast. I am not going to tell you to wash your fucking hands, I am not going to tell you too stay the hell home. If you are not doing these things, you are screwed anyway. What I want to discuss is the political leadership or lack there of we have had around this outbreak.

Lets touch on the last major outbreak of a highly contagious virus, H1N1. 61 Million People contracted this virus in 2009, something close to 12,500 people died of it here in the United States. The first case of H1N1 was reported on April 15, 2009, and the government declared H1N1 a public health emergency on the April 26. The first test to detect the new virus was approved by the FDA two days later. Shipments of the new CDC test began May 1, just 15 days.

Now lets look at the Trump administration's reaction to COVID-19. The first reported case of COVID-19 in the U.S. occurred on January 19th, it is now March 15th and this administration was still claiming Corona Virus was a hoax up until last week, and just got around to declaring an emergency two days ago. The CDC does have a test for it, however the first batch was error prone caused more than few false positives. The new tests are still being developed and the CDC is saying the new tests will not become available for 3-4 weeks.

When H1N1 was spreading, there was no wide spread panic, in fact it barely registered on my person radar at the time. Today, we are seeing panic buying, people are buying out the stores of toilet paper and hand sanitizer. The news is full of "WE ARE ALL GOING TO DIE!" segments. If you want know why this is happening and why the stark differences between the two events, the answer is very easy, Leadership.

The Obama administration lead from the front, The President was worried about people and livelihoods, he did exactly what he was supposed to do, he gathered his people together, built a plan and executed it, mind you, he had been president for 3 months at this point. Mistakes were made, there were things that did not go as planned, some of the things planned did not work out as well as was hoped for, and President Obama owned those mistakes, he took responsibility for it, he owned the bad as well as the good.  President Trump on the other hand did not even acknowledge COVID-19 existed until February and that was just to call it a hoax and no big deal. When it came time for him to own up to it and was asked said and I quote, "I don't take responsibility at all.". This is not what a good leader does.




All the leadership in this crisis has come form House Speaker Pelosi. When it became obvious the White House was not going to act, Speaker Pelosi put together a bill appropriating money for the things that needed it, giving money to the CDC, whose budget was cut earlier in the year, specifically for research and development of a new testing kit, money to States for handling the crisis and many other projects, totaling 8 billion dollars. Speaker Pelosi then followed up with another bill guaranteeing free testing to those without insurance, paid sick leave and tax credits to help small businesses survive the labor shortage. Without Speaker Pelosi's leadership, the Trump administration would still be fumbling around in the dark trying to figure out what to do and how.

Wednesday, March 11, 2020

The Hacker Files

From August 1992 to July 1993 DC Comics published a comic book entitled The Hacker Files. The story was about a computer hacker named Jack Marshall who exists in the DC Universe. The 12 issue mini series contained 4 story arcs touching on different real world historical events of the time; the spread of computer virus's, FBI cracking down on computer crime, the Tiananmen Square protests and the rise of artificial intelligence. The series was not well received at the time and pretty much dropped off virtually everyone's radar even before the end of the series. The series has never been reprinted or even discussed much.

The reason I am bringing up this little known comic book from the early 90's, is DC is about to publish a new graphic novel The Oracle Code, a book about Barbra Gordon's (Batgirl) time as the computer hacker Oracle. For those of you not in the know, In the aftermath of Batman: The Killing Joke, Barbra Gordon was left paralyzed from the waist down when she was shot by the Joker. She would later regain her mobility, but while she was in a wheelchair, she acted as an intelligence collector and an operational overwatch for many heroes and was the leader of The Birds of Prey. Barbra Gordon was one of the hackers picked up by the FBI when they began cracking down on cybercrime, and appeared in The Hacker Files briefly and the two have encountered each other.

I realize The Oracle Code has already been written and the art is probably all but done at this point, however I think this would have been a great opportunity to revisit Jack Marshall in the modern post New 52 DC Universe. While he failed a lead in his own book, I think Jack would make a great backup character or perhaps as a replacement for Barbra as Oracle, though I have to admit, I am not terribly warm to that idea. I think he would be better suited as one of those normal people that superheroes goto to get things done. He is a middle aged, balding, overly serious and grumpy man, a great foil to the young, pretty and energetic Batgirl. I would love to see a scene where no one is taking him seriously, until he starts using everyone's first names, showing that none of their secret identities is safe from his skill.