I got nothing, I sat down a couple of days ago to write something about 2020 and I really have got nothing. Happy New Year Everyone.
The public executioner at Rome, who executed persons of the lowest rank; hence, an executioner or hangman.
Thursday, December 31, 2020
In the closing days of 2020
Monday, December 21, 2020
Larceny in my heart
The first, was to get my mom to sign something, take tracing paper and trace over her signature with a heavy pen. Then I would turn it over and rub a pencil all over the back. Then when I needed my Mom's signature, I would just put my tracing paper on the line, and trace over the signature, this would leave a light pencil trace on the line, where I would once again go over it with pen. Worked like a charm.
The second method was to simply sign my Fathers name to whatever needed signing. Since I was always the one signing it, they could compare it all day long and it would always be the same. When someone would ask me saying, I thought your Father did not live in the house and your parents were divorced, I would simply say, yes, that is true, but I am staying with him for a couple of weeks. No one ever questioned me about it.
Tuesday, December 15, 2020
Review: Ready Player Two
My rating: 4 of 5 stars
My first question about this book was, did all the people who wrote bad reviews about this book actually read it? Okay, Ernie Cline is not the best writer ever, I doubt there will college courses taught on his works. However, with Ready Player One, he struck a cord, the story worked and he redefined the Cyberpunk genre for a generation. His second book Armada, fell very flat and was more or less a re-enactment of The Last Star Fighter. However, with Ready Player Two, he did regain most of his footing.
The weakest part of the book was the beginning, where Wade Watts is bringing us up to speed with what gas been happening over the last 3 years. This is fine, but way too much time was spent on it and it turns into a bit of slog as it is a lot like reading a Wikipeadia page at times. Cline could have easily compressed this down to maybe 6 pages and dropped anything else the reader needed along the way as it became necessary to know, instead it encompasses the first quarter of the book.
After that the story starts to pick up speed. We become engrossed by the new contest, a couple of the challenges are glossed over a bit, but several of them are quit fun to read. I was especially enjoyed the arena fight with the 7 aspects of the Purple One, Cline very obviously had fun writing this scene and I had a lot of fun reading it.
Over all, a good read, and a solid follow up to Ready Player One. If you are on the fence about reading it, I would say ignore the haters and go for it.
View all my reviews
Sunday, December 6, 2020
Things I should have probably talked about, but didn't
Wow, my last post was in October and it is now December. I feel a bit guilty about this, but frankly nothing I particularly wanted to talk about happened. I know, I know, some of you are saying "But Chris, what about the election!" or "Chris, you wife got COVID-19!". These things and lost of other things happened, but I just did not want to talk about them. I just kind of shelled up as the shit started to pile up, insulating myself from the bad things happening around me. I know this is not the healthiest way to deal with things, but I think now that the worst of it has passed, I will be fine. On the other hand, I did express myself pretty regularly on Facebook, so I have not been entirely silent.
The Election: Biden won, whew, bullet dodged. Trump will be gone in a few weeks, hopefully we can get this country back on track and Republicans can start feeling some shame for what they did these last 4 years.
COVID-19: My wife contracted COVID-19 from an idiot anti-mask co-worker. Yes, if you are one of those anti-mask people, you are a fucking moron and I ask that you do not procreate. This was a difficult time for us, this was definitely not "Just like the flu", this lasted 6 weeks, where there were times I thought I was going to have to take her to the hospital because she was having trouble breathing. Again, if you are one of those people, go fuck yourself.
Friends: My friends lives have been in turmoil to say the least I have two friends who are in the middle of divorces, no not from each other. I also had a friend loose her job, to make it worse her live in boyfriend caught COVID-19 and then gave it to her.
Dungeons & Dragons: So I has a spat of bad game sessions over the last month, both in my own campaign and the campaign I playing in.
In my own campaign, we put our foot back into Advanced Dungeons & Dragons 1E and Hackmaster, this was a mistake, none of us could really get back into it after playing D&D 5E. The old games are cool in retrospect, but really those old game mechanics suck and I think it detracted from the game, which lead to several sessions bad sessions where none of us could get into it and the final game ended in a near Total Party Kill and we decided to give it up.
In the campaign I am playing in, there are a couple of factors bothering me. First, I was not particularly happy with my character, which was 100% my own fault. When I built Du Lac, I did not want to optimize him to be a killing machine, instead I focused on making him a interesting character. Instead he ended up being terribly ineffective and terribly boring to play. The second issue I had, was in our last campaign, I dominated the game. I was the party leader and i directed the flow of play, as the DM put it, I was the puppet master. So when we started a new campaign, I wanted to be in the background, let the other players have their turn in the spot light, this did not go as planned at all.
In my own campaign, we started over with 5E, beginning as Zero level characters, writing the backstories of everyone to explain how they became adventurers. In the game I am playing, I have changed characters and I have taken the reigns of the party again. In both games I am now enjoying myself again, which I am very happy about. D&D is almost my only outlet these days, so disappointing games bother me a lot.
2020?: So what can i say, 2020 is finally coming to an end. I cannot honestly say this has been the worst year of my life, because it is not even close. I cannot honestly complain a whole lot about it, because I know many people are have a much rougher year than I am. I still have my job, I still have my wife, I still have friends, and some how I managed to avoid getting COVID-19. So while 2020 has not been a great year, I will survive.
Thursday, October 22, 2020
Maybe we did start the fire?
WOW, it has been awhile. A couple of things, the wife got COVID-19, so has several of my friends. So far I have been lucky, but I seriously doubt that will last. We are in the middle of the third spike, so I am sure my luck will be running out in short order.
We are on the brink of the next election, early voting has started, although I have not gotten out to vote yet, I plan to hopefully do so this weekend. I really do not have any predictions this year for how things will go this year, other than I suspect that Joe Biden will win. I would like to point out that this election is not about Hunter Biden or even Joe Biden. This election is a referendum on President Trump's first term. I am aware that Joe Biden is not a perfect candidate, he is old and not terribly exciting, however President Trump has been a terrible president. Certainly if you are a conservative you can claim he has had a couple of wins, such as the tax cuts and getting conservative judges confirmed. But does that counter balance his failures? Iran and North Korea are doing whatever the fuck they want, Russia has gotten everything they wanted, damaged relations with Ukraine, eased sanctions, withdrawal from START, we have lost a couple of what should have been easy votes in the U.N., and we were publicly laughed at by our allies when we suggested Russia be allowed to re-enter the G7. That is just foreign affairs, his domestic policy has been even worse. If this election is between Mr. Rogers and Mary Trump's crazy uncle, Mr. Rogers is looking really good.
I have been in a couple of discussions recently about late stage capitalism and what that really means and if it is good or bad. You can call me a socialist, first, it probably does not mean what you think it means and second, I don't care. Having said that, my view of capitalism is fairly simple. The definition of capitalism is in its most basic form is the acquisition of material wealth. The purest form of capitalism is organized crime, acquisition of material wealth at any cost. Late stage capitalism is that in between stage, where we are not quite to making it legal to sell heroine to school children, but we are at the point where human life is secondary to the economy. President Trump made the conscience decision to ignore the COVID-19 pandemic to preserve the stock market and he has refused to support lock down, or even the most basic measures that other countries successfully implemented, all in the name of the economy. Never mind that as of this writing, a quarter of a million people are dead, with a thousand more dying everyday. Mind you these people did not die for god and country, these people died for the economy and they did not do so willingly. Think about that for a little while.
Friday, September 25, 2020
Friday, September 4, 2020
Internet Quote of the day:
"Hope is what I need the most right now. I am tired of living in a proto cyberpunk dystopian near future."
Saturday, August 8, 2020
D&D 5E Interesting discussion about Bounded Accuracy
One of the design philosophies I like the most about D&D 5E is the idea of Bounded Accuracy. The basic idea is, player characters (PC), non-player characters (NPC) and monsters all fall into a limited range of characteristics. The highest bonus that can be obtained for PC's and NPC's is +5 for attribute scores, this can be higher, but this is and should be rather rare. Monsters can go up to +10, again in theory, they can go higher, but this would be rare. Further, the highest bonus a PC or NPC can get from experience and skill is +6. Additionally, magic bonus's are now limited to +3. In practical terms, this means there is soft limit of +11 and a hard limit of +15 for PC's in game. The video linked below has a very nice discussion about Bounded Accuracy and the affects of rolling with advantage and disadvantage.
To make things easy, I have provided the tables he talks bout below. and can be downloaded here; https://imgur.com/gallery/Y1RA9yq
Tuesday, August 4, 2020
Review: Too Much and Never Enough: How My Family Created the World's Most Dangerous Man by Mary L. Trump
My rating: 3 of 5 stars
This book was somewhat disappointing. Anyone expecting a tell all expose' about the deep dark secrets of the Trump family are not going to get what they want. Most of what is written in the book was already publicly known. Certainly she added some insider insight to the events, but I don't think there was much here we did not already know. It seems to me, the lawsuit filed against this books publication was a waste of time, if anyone in the Trump family had actually read the book prior to publication, I am sure they would have done what I did, which was respond with a shoulder shrug and Well Okay then.
From a writing perspective, Mary Trump is a pretty good writer, she is use to writing academic works rather than works of entertainment and that does show through, however she does manage to capture the moments moods and her own emotional state as the book proceeds. She is also very clever in how she presented some of the information within the book. She is a clinical psychologist, she is very aware of the the various psychological maladies that inflict her family, but is very good at actually very good at avoiding actually providing a profession diagnosis to any any of them. For instance, when talking about Donald Trump himself, she asks the question "Is Donald a narcissist?" and answers the question with "I don't know, but he does exhibit the all 9 characteristics associated with Narcissistic Personalty Disorder.". This was a great dodge.
Overall, the writing is good and does provide some insight into the Trump family, although the first half of the book focus's more on her father than the rest of the family. If you are expecting any huge revelations about Donald Trump, that is just not going to happen.
View all my reviews
Friday, July 31, 2020
How to kill Tiamat in 48 minutes
Friday, July 24, 2020
Simple Encryption with MMBasic
RND is a pseudo random number generator, I say pseudo because it is not a true random number generator. The function needs to be seeded with a number, which it then uses to generate other numbers. If you seed the function with the same number, it will generate the same numbers. To make this appear more random, Basic programmers often seed the function with the Timer function, which seeds RND with the number of seconds past midnight. In this program, I take the password entered, convert each letter to its ASCII number and add them all together and then seed the RND function with this number. The result of this is, each time you enter the same password, the RND function will use the same set of numbers to encrypt or decrypt the message.
XOR is a simple formula that always produces the same 3 numbers. For instance, 1 XOR 2 = 3, 2 XOR 3 = 1, 3 XOR 1 = 2. In this program, I am generating a number using the RND function, then I am taking the letters from the file I want to encrypt, one at a time and converting it to its ASCII number. I am then XOR'ing the two numbers, converting that number into text and writing it to a file. For instance say the RND function generates 35 and the letter from my file a small case "a". The ASCII values of small case "a" is 97. 35 XOR 97 = 33, I then convert 33 to its ASCII text equivalent, which is "!" and I write that to the encrypted file. Re-running the program, this time using the encrypted file as the file you want to encrypt, the process reverses itself. The RND function will produce the same number, 35, and it will read the "!", convert it to its ASCII value of 33, then XOR the two numbers (35 XOR 33 = 97), to produce 97 and convert this number to its ASCII text value of small case "a" and writes that to the decrypted file.
' encrypt.bas
' Uses the RND and XOR functions to encrypt text files
Input "Password: ", Password$
For Count = 1 To Len(Password$)
MyNumber = MyNumber + Asc(Left$(Password$,Count))
Next
Randomize MyNumber
Input "Enter File to be encrypted: ", FileName$
Open FileName$ For Input As #1
Input "Enter the name to save the encryted file as: ", EncryptedFile$
Open EncryptedFile$ For OutPut As #2
Print "Encrypting the file, please wait..."
For Count = 1 To Lof(#1)
Print ".";
RealPassword = Int(Rnd * 126) + 1
Temp$ = Input$(1,#1)
Encrypt = RealPassword Xor Asc(Temp$)
If Encrypt < 1 Then Encrypt = Encrypt + 126
If Encrypt > 126 Then Encrypt = Encrypt - 126
Encrypt$ = Chr$(Encrypt)
Print #2, Encrypt$;
Next Count
Close #1
Close #2
Print "Done"
End
Okay, let me make this very clear, this is not a strong encryption by any means, in fact by today's standards, it is barely encryption at all. A low level NSA mook could break this on his coffee break, and even a scrub hacker could break this in an hour using his grandma's computer. The only person this will protect you from is your 12 year old sister, and I would not even bet on that.
The point of this program is simply to teach the basics of encryption, using functions readily available in the Basic programming language. The security can be increased by building your own equivalent functions to RND and XOR using more mathematically complex and security sound formulas. You could also use the RND function to find a location within a key file, say a jpeg image, and use the bit at that location to XOR with the letters needing encrypting and save the file as a binary file rather than a text file. The point of course is, this is just a starting point.
_______________________________________________________________
Edit:
The reason this is not considered secure encryption is because the possible combination of numbers is low by the standards of modern computing. We have three numbers, the psuedo random number generated by RND, the ASCII number of the letter to be encrypted and the ASCII number of the encrypted letter. In theory, this gives us 126x126x126=2,000,376 possible combinations, this is a pretty big number, but not a huge number when you consider that an old 1.8Ghz desktop computer can execute 1,800,000,000 computations per second, that means it takes about .001 seconds to go through all of them for a single letter, that is not much. Now, the reality is, we already know 1 of the three numbers, the encrypted letter, so all we have to do is find the other two, now we are only looking at 128x128=15,876 combinations, now we are talking .000009 seconds for each letter. So the file you are trying to protect would have to be gargantuan to take any significant amount of time to break.
Tuesday, July 21, 2020
Colour Maximite Thoughts
"It doesn't look like very many people see a need for it and are interested in using it. I certainly am not going to bother writing it if nobody wants or needs it. No matter, the CMM2 will do a great job of teaching youngsters how to fire bazookas at boogymen and androids."
While I cannot fault him for the statement, I think the real problem is the OP's fundamental misunderstanding of what the Colour Maximite series of machines are really being used for. The Maximite is not a desktop computer, it is not the type of machine you use to surf the web, check your email and create documents. Even the newest version is based on a 400Mhz ARM processor and has only a few megabytes of RAM. On top of that, MMBasic is not a true operating system, it is a programing language that serves some of the functions of an operating system.
What the Maximite is, is a development platform that falls somewhere between an Arduino and a Rasperry Pi. The end goal for these things is to provide an environment similar to that of a Commodore 64 and other computers of its era.Additionally, a set of GPIO pins have been provided so the hardware can be extended with relative ease. It is far more flexible than an Arduino, as well as easier to use. It is also far less daunting than a Raspberry Pi for small projects and does not have the overhead of a full blown Linux operating system.
If you go back and look at what people were using those Commodore 64's for, it was not writing letters, doing homework or tracking receipts, although I suspect many parents were convinced to buy them for these purposes. No, the primary use for those machines was to play games. Almost every kid who had one of these machines, also learned to do at least a little bit of coding in Basic, because you pretty much had to to use the bloody thing.
The Maximite is no different, no one is going to develop productivity applications for the Maximite, not even a simple text editor. It is not because it cannot be done, it can be. The problem is, there is no point, in this day and age, virtually everyone has a desktop computer at home. Don't give me any bullshit about some people cannot afford computers, which is true, but if you cannot afford a computer, then you sure as shit cannot afford a Maximite and you should be using that money for food and rent. But seriously, what is the point of developing a database library for the Maximite, when I have several good options available to me on my desktop computer. I don't need the Maximite for productivity applications, I already have a computer for that stuff. Those wheels have already been invented and they are running on hardware that is superior to the Maximite by several magnitudes.
The last thing I have to say about this is, if the OP wants to develop a database library for the Maximite, he should go a head and do it. However, he should do it because he has a use for it and because he wants to do it and because he will enjoy doing it. Ultimately basing his decision to do it or not on whether or not other people needed it, tells me even he did not think it was a great idea, otherwise he would have just done it.
Sunday, July 19, 2020
Tiananmen Square of our Time
This showdown reminded me somewhat of the Tiananmen Square protests in China in 1989, that produced this bit of history.
This just goes to show, what one brave person can do in the face of tyranny.
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
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
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
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
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.
'blink.bas
Main:
Pin(12) = 1
Pause 500
Pin(12) = 0
Pause 500
GoTo Main
Monday, June 29, 2020
RE: Basic Program for making a D&D Character
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 "D&D Character Sheet 1.0"
Print "------------------------------": Print
Print "Character Name: "; NAME$
Print "Character Race: "; RACE$
Print "Character Class: "; CLASS$
Print "------------------------------"
Print "STR: "; STRENGTH
Print "INT: "; INTELLIGENCE
Print "WIS: "; WISDOM
Print "DEX: "; DEXTERITY
Print "CON: "; CONSTITUTION
Print "CHR: "; CHARISMA
Print "Hit Points: "; HITPOINTS
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
Return
YesNo:
Print "1 Yes"
Print "2 No"
Input YN
Return
FinishUp:
End
Dungeons & Dragons News
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
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
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
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
Tuesday, May 5, 2020
My introduction to Tarot
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
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.
Sunday, April 12, 2020
Postmortem on my FaceBook Reading Challenege
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
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
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
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.
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.
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.