Stanislaw Lem, Poetry & AI in 2022

One of my favorite books is a whimsical collection of stories by Stanislaw Lem called “The Cyberiad: Fables for the Cybernetic Age”.

One of the stories, called “Trurl’s Electronic Bard” concerns a computer that is created to write poetry. It is given more and more difficult prompts until finally it is given a seemingly impossible task, that it completes with ease.

In building the Electronic Bard, Trurl (one of two inventors who try to out-do each other in the stories) realizes it will be quite a task to create a machine poet.

First Trurl collected eight hundred and twenty tons of books on cybernetics and twelve thousand tons of the finest poetry, then sat down to read it all. Whenever he felt he just couldn’t take another chart or equation, he would switch over to verse, and vice versa. After a while it became clear to him that the construction of the machine itself was child’s play in comparison with the writing of the program. The program found in the head of an average poet, after all, was written by the poet’s civilization, and that civilization was in turn programmed by the civilization that preceded it, and so on to the very Dawn of Time, when those bits of information that concerned the poet-to-be were still swirling about in the primordial chaos of the cosmic deep. Hence in order to program a poetry machine, one would first have to repeat the entire Universe from the beginning or at least a good piece of it.

Kind of the “to create an apple pie from scratch, first one has to create the universe” quote from Carl Sagan. Now, in the story, Trurl basically does just that, building a model of the universe, then planets, then evolving digital life until he gets a poet, which he then has to tweak so it’s not too morose.

But in actuality, this is not *too* far from how AI researchers ended up creating the latest and greatest AIs – basically, it started as an autocomplete algorithm that would try to predict the next word in a sentence. This algorithm was improved until it got to the point where it could autocomplete a whole article from a short description.

The source material? Basically, as much of the internet as researchers could reasonably cram into the neural net processor. To process essentially all of human civilization, the computer takes apart each section and looks at how they connect together, and stores that connection information in a growing web or “neural network” – a functional distillation of the information. The original information isn’t in there per se, but how it was connected together is.

Boiling all of civilization down into a relatively small file is incredibly computationally complex, and would take you hundreds or even thousands of years. Fortunately, the companies building these models have access to a lot of computers, so running on a large array of powerful computers, these massive datasets can be boiled down in six months or a year.

So, now that we have essentially replicated Trurl’s Electronic Bard, let’s put it to the test. I’ll be using OpenAI’s GPT3 engine, running their DaVinci model. I’ll feed it the same prompts as Trurl, and see how our AI results stack up to the fictional AI from 1965 (or more accurately, the masterful English translation by Michael Kandel in 1974, the year I was born).

Trurl’s friend/competitor Klapaucius presents the increasingly difficult challenges to try to stump the electronic bard. Only two are presented in their entirety in the story, so we will use those two to test current AI vs. fictional AI.

The First Challenge

“Have it compose a poem—a poem about a haircut! But lofty, noble, tragic, timeless, full of love, treachery, retribution, quiet heroism in the face of certain doom! Six lines, cleverly rhymed, and every word beginning with the letter s!!”

Here are the resulting poems, first Trurl’s Electronic Bard:

Seduced, shaggy Samson snored.
She scissored short. Sorely shorn,
Soon shackled slave, Samson sighed,
Silently scheming,
Sightlessly seeking
Some savage, spectacular suicide.

And here is OpenAI’s GPT3 DaVinci model:

Somber strands of sorrowful strands
Shed by the scissor’s solemn slice;
Sharp sorrow soon shall sever these
Scintillating, shiny sighs.
Still some solace found in shearing
Sacredly shaved sacrifice.

GPT3 comes close – but didn’t quite manage to only use words starting with S, and Lem uses mythic references that make it the winner.

The Second Challenge

“Very well. Let’s have a love poem, lyrical, pastoral, and expressed in the language of pure mathematics. Tensor algebra mainly, with a little topology and higher calculus, if need be. But with feeling, you understand, and in the cybernetic spirit.”

Trurl’s Electronic Bard:

Come, let us hasten to a higher plane,
Where dyads tread the fairy fields of Venn,
Their indices bedecked from one to n,
Commingled in an endless Markov chain!

Come, every frustum longs to be a cone,
And every vector dreams of matrices.
Hark to the gentle gradient of the breeze:
It whispers of a more ergodic zone.

In Riemann, Hilbert or in Banach space
Let superscripts and subscripts go their ways.
Our asymptotes no longer out of phase,
We shall encounter, counting, face to face.

I’ll grant thee random access to my heart,
Thou’lt tell me all the constants of thy love;
And so we two shall all love’s lemmas prove,
And in our bound partition never part.

For what did Cauchy know, or Christoffel,
Or Fourier, or any Boole or Euler,
Wielding their compasses, their pens and rulers,
Of thy supernal sinusoidal spell?

Cancel me not—for what then shall remain?
Abscissas, some mantissas, modules, modes,
A root or two, a torus and a node:
The inverse of my verse, a null domain.

Ellipse of bliss, converge, O lips divine!
The product of our scalars is defined!
Cyberiad draws nigh, and the skew mind
Cuts capers like a happy haversine.

I see the eigenvalue in thine eye,
I hear the tender tensor in thy sigh.
Bernoulli would have been content to die,
Had he but known such a2 cos 2 ø!

OpenAI GPT3 DaVinci:

For my love, my only true one,
I need no other, the love of my life.
My heart is a vector of love,
It points to you forever,
A scalar of magnitude that can never be done.

The dimensions of our love cannot be measured,
The polytopes of our universe, infinite and treasured.
An algebra of love such as this
Cannot be expressed in any other way
Than by the language of mathematics.

The manifolds of our relationship
Express the functions of our love
The topology of our togetherness
Larger than infinity, and ever more above.

The cybernetic spirit of our love
Will never cease to be,
For it is a love that transcends
The boundaries of time and space,
An eternal and boundless love,
We will never be apart,
For our love is a calculus of infinity,
In the language of mathematics.

What do you think? Lem and Kandel have the edge for cleverness, and are the clear winner, but the actual AI was able to construct a reasonable result.

It should also be noted that I was using OpenAI’s website for this, so the generation was not free. They charge per block, essentially by the word. These two poems (plus an accidental third where I mistyped the prompt) cost $0.0075 – almost a penny.

Music Player v2

I’ve been thinking about the little music player I made a while back – the idea was a specific RFID tag triggers a specific album or track to play on an mp3 program.

It worked, as a proof-of-concept, but I never built it out into a practical daily-use system.

My new thought is to break it into two pieces – a tag reader component, and a DAC music player. They would both connect to the same local WiFi network and communicate using web APIs.

Breaking it into two components allows each to focus on a specific task – one as strictly a tag reader (and track controls) and one to focus on playing mp3 files to an audio receiver. The tag reader portion can be small, battery-powered, and therefore portable.

The tag reader portion will be a low-power Arduino chip connected over I2C to an RFID board. The Arduino will also need WiFi, perhaps an Adafruit Feather system.

The player portion will be a Raspberry Pi, possibly with a DAC board for higher-quality audio output. It will run a dedicated headless audio solution such as RuneAudio or Volumio. Music will be stored on SD card or possibly HD, depending on size of library. I could also possibly connect it to the music server I have set up on the network as a source.

Outlook and Google Calendar Suck at Meetings

I want to talk for a moment about Outlook and Google Calendars, and how they suck for corporate business use.

Both products use an “event” model for creating calendar items – this make sense for actual events like birthday parties and appointments like visits to the doctor. When you go to create a calendar item, the starting questions are: WHEN is this event, and WHERE will it be?

But for business use, the use case is usually “we need to get these 5 people in a room to discuss something and make a decision”. The starting question is: WHO needs to attend, and what is the meeting LENGTH? There may be a day in mind, but the specific time and place are driven by when each attendee has available time, and when a meeting room is available.

Despite this being the primary model for most business meetings, I have never seen a tool take this approach for building meetings.

Here is how I would design the flow for this tool:

Inputs:  Attendees (+optional/required), meeting length, desired day

Data: Attendee availability, room availability, room size

Output: List of room/time pairs that would work for the meeting that day. Optionally, times that would work the previous or next business day (assuming the previous day is still in the future).

Action: User selects one of the returned time/place results, is prompted for meeting name/description and clicks “Create meeting”

Result: Meeting is created at the selected time with the room and attendees specified, using the provided name/description.

This flow would make much more sense for booking meetings in a corporate setting. The default event method is fine for actual events, or larger meetings where the meeting can happen without all attendees present (e.g. department quarterly meeting).

I’m tempted to give this a shot with the Google Calendar API, although a quick look appears to show the only method for checking if someone has a time free is to send a specific time range and get back a boolean, so there may be a lot of queries required to find a common time that works for everyone.

One approach might be to take the required attendee count, query for rooms available that day (filtered by working hours and no meetings from noon-1pm), then for the times rooms are available, query each attendee.

Results could be weighted, so if there are no times that would work for everyone, the count of free vs total attendees for a given time would be used for the sort, and could return with a “warning: X, Y and Z cannot attend at this time”.

Definitely something worth playing around with.

Zen and the Art of Laser Maintenence

For many years I’ve been fascinated by laser engraver/cutters, seeing cool Raspberry Pi cases, game boards, and other stuff. I’ve drooled over Epilog demos at Maker Faire and scanned CraigsList for used lasers.

The problem is price. The cheapest Epilog lasers are $8,000.

Recently a company called Glowforge has been crowd-funding an “affordable” laser for around $3,000. It looks impressive, with a clever use of a camera to preview where the engrave or cut will be placed on the actual material.

But that was still too pricy, plus they are just doing crowd-funding now, the actual thing won’t ship until next year.

Then I discovered the “K40” laser.

In the last few years, hobbyist makers have been buying cheap lasers from China nicknamed “K40” (based on the original model number) that are sold as 40-watt lasers, although based on tube length, the actual max output is more like 32-watt.

In the last year or so, the price of these has dropped significantly, now they can be purchased for around $350.  That’s an order of magnitude cheaper than other lasers!  Finally, something in my price range.

Is there a catch? Of course.

The K40 has a relatively small cutting area, around 8×11, a fairly low power tube (cannot cut metal, cannot engrave metal or glass without special paints). More than that, they are cheaply made, with a steel case that is somehow bulky and flimsy at the same time. The wiring is sometimes shoddy, and the accessories they come with (ventilation fan, cooling pump) are laughably cheap. The driver board is proprietary, and the software is an ancient version of CorelDraw that won’t run correctly on a modern copy of Windows, along with a proprietary plugin for it called CorelLaser that is poorly translated into English and requires a USB dongle to be plugged in to run. There is no Mac or Linux software.

But, I was prepared for this. I read lots of tutorials and watched lots of videos for what problems I would encounter and what parts would need to be replaced to get a decently running machine.

And I ordered it from a place on eBay. $330, including shipping.

I also ordered some parts I knew I’d want to upgrade: the exhaust fan, connector and tubing, the laser head, lens, cutting surface, and maybe the water pump.

It arrived pretty quickly, and I carefully examined it for any damage, everything was intact, and the wiring looked good. I didn’t even use the fan or vent tubing that came with it, instead using the replacement parts I bought. I did use the water pump that came with it, and the stock laser head and lens.

For cooling, I bought a 5-gallon bucket, filled it with water and put the submersible pump that came with the laser inside, with laser inlet hooked to the pump and outlet hose going back into the bucket. I wrote “LASER BUKIT” on the side with a large Sharpie.

Surprisingly, everything worked out of the box. The CorelDraw was super-old, so I bought a somewhat newer version (X5) for $100 (the latest version, X8, is like $600) so it would run on Windows 10. But I got everything set up and working the first evening of using it.

One thing I quickly discovered was that my ventilation setup didn’t work, I had opened a basement window and vented the hose against the screen, but hadn’t noticed there was a second pane of glass in front of the screen. D’oh! An easy fix, but really showed how much smoke gets produced and how necessary good ventilation is.

Another thing I discovered is that cutting = fire. Engraving produced a lot of smoke, but cutting was producing flames. Small flames that the negative pressure would extinguish quickly, but still, fire. So the next day I installed the air assist laser head, new lens, and air assist pump I bought. Presto, no more flames. The air assist blows air past the front of the lens and down where the cutting is happening, which pushes smoke away from the lens and also prevents fires, both good things.

The cutting bed it comes with is weird, it’s a tiny clamp and is all but completely useless. I removed it and installed the honeycomb surface I had ordered, roughly positioned at the right height by stacking some scrap wood under it.

Next I made my first big mistake, I decided to remove the internal vent, it sticks out into the cutting area and some people removed it and said it was better without it. I didn’t want to remove the laser tube or x-axis assembly to get at the vent, so decided to remove it in place by cutting it apart with tin snips. This was an arduous and painful process, and once I finally got it removed, airflow was worse, instead of cleanly exiting via the vent, it swirled around inside. There was no leaking, but it wasn’t being directed out as well. What I *should* have done is just cut the end of the vent off, instead of removing it entirely. Now I will have to fabricate a replacement vent to direct the air better. Live and learn.

But through all of this I was able to cut and engrave, including making a jig to hold blank dice and doing some laser-engraved dice. Much better success than I had with an early 3D printer!

Then near-disaster. One night I was cutting out a bus pattern (Ronin is obsessed with “Wheels on the Bus”) and I noticed the power output was a little low. I thought nothing of it, slowing the movement of the laser down a little to compensate and cut through the 3mm plywood. My laptop battery was low and it was late, so I decided to go to bed. I shut everything down. The next day, I went to finish the bus, and when I turned on the water pump, nothing happened. It’s quiet, it can’t be heard over the ventilation blower, so it must have died at some point that night without me noticing.

Usually even a few seconds without active cooling is enough to destroy a laser tube. I went out to Lowes and bought a pond pump and a couple adaptors to size the outlet down to fit the laser’s water hose, turned the pump on, got the bubbles out of the laser tube, and did a test fire.

It still worked! Hooray! Then the test fire button broke, stuck down. I cut power to the laser so it didn’t keep trying to burn a hole in my scrap wood.

If I had destroyed the tube, it wouldn’t be the end of the world, but it would cost around $200 to replace, so I’m glad it still works.

I also noticed the test fire marks were a little oblong, I think my rough jostling of the case to get the bubbles out of the laser tube knocked my mirrors slightly out of alignment. Everyone said calibration was a must, but it seemed pretty close out of the box, so I’d never bothered to calibrate, but guess I will now!

So that’s where I am now. Back up and running, albeit needing a bit of calibration and a new test switch (maybe I will use an arcade button).

Overall I’m happy with my K40, yes, it’s cheap as hell, but it produces good results and has a great online community of fellow K40 owners for support.


Actual costs of K40 laser and upgrade parts. Yes, parts double the cost of the laser, but it’s still less than 1/4 the cost of a Glowforge, or 1/10 the cost of an Epilog.

K40 Laser              330
CorelDraw X5           100
honeycomb surface       25
vent hood               12
vent blower             31
vent tubing             12
12v power supply        22
air assist              14
lens                    32
air pump                36
coiled tubing            7
switch board            15
LED lights              25
water pump              65
nozzle adaptors          8
bucket                   5
--------------------------
Total                  739

Science vs. Religion

I commute 2 hours a day, so I listen to a lot of audiobooks. The one I’m listening to now is “Version Control” which so far is excellent. The main character’s husband is a scientist, her father is a minister, and at one point the two are having a debate. The debate brings in a concept of “non-falsifiable theory” – things that if proposed, can be taken as givens because they cannot be disproven. This would include statements like “there is a God” and “that person is thinking about the color green”.

It’s an interesting philosophical debate, but I found it hits the nail on the head with one of the things that bothers me about religion.

To me, religion is the domain of the unknowable. Questions of: “what happens after you die?”, “was the creation of the universe an act of consciousness?” – those are great, well in the bailiwick of religion. Do you need there to be an invisible dude above you to get through the day? Fine, believe that.

What really bothers me is when religion (specifically Christianity, because they seem to do it the most, and most vocally) tries to branch out into knowable territory with the same air of authority. This is especially the case with Bible literalists, who insist all sorts of crazy things are fact despite vast scientific evidence otherwise.

The thing is, there is still room for miracles, plenty of unknowable-ness for religion to coexist with science.

For example, the Big Bang – many Christians hate the Big Bang theory because they think it excludes God – but the beginning of the universe is a really fuzzy thing for science to nail down, who’s to say it wasn’t God snapping his fingers or whatever?

“You have all these highfalutin scientists, and they’re saying that there was this gigantic explosion and everything came into perfect order.”
– Ben Carson

Likewise, Christians rail against evolution, but one of the primary mechanisms for evolution is chance, which is prime God territory. Instead of God creating all animals at once, why not nudge chance with a mutation here instead of there, and eventually end up with a pony? Instead, you end up with people like Ken Ham calling teaching science “child abuse”.

The main issue here is that the Bible as literal fact does not jibe with testable reality. It is demonstrably wrong in places, but that doesn’t sway “believers” – they insist that science must be wrong, or reality must be wrong, because the Bible must be right.  That is what bothers me.

“Anti-intellectualism has been a constant thread winding its way through our political and cultural life, nurtured by the false notion that democracy means that ‘my ignorance is just as good as your knowledge.’” – Isaac Asimov

And it doesn’t stop there – because the “facts” in the Bible conflict with scientific fact, Bible literalists reason that all of science is flawed, and conflate it to a “war” between science and religion. This takes the form of propaganda campaigns as well as legislation, usually on a state or local level, promoting Bible-based “science” and  removing actual scientific content from classrooms. Even when these are struck down, they remain in practice, particularly in the South.

“Whether the Earth was created in seven days, or seven actual eras, I’m not sure we’ll ever be able to answer that. It’s one of the great mysteries.” – Marco Rubio

A 2004 ABC News poll found that 61 percent of Americans believed the account of creation in the Bible’s book of Genesis is “literally true” rather than a story meant as a “lesson.”  60 percent also believed that the Bible account of Noah’s Ark and the global flood was fact.

In 2014, Gallup did a poll of 1000 adults throughout the US and found that 42% believed that God created humans in their present form, 31% believed God guided human evolution, and 19% believed humans evolved naturally.

The story of Noah is not only physically impossible, and a laughable concept (one family went out and gathered animals from all over the world and put them in a boat for a year?), it is provably false.  Yet in polls, a majority of people believe it is fact, because “the Bible tells them so”.

This marks not only a lack of critical thought, but a willful ignorance. These often result from insular religious communities – things and ideas that are viewed as conflicting with religion are branded “satanic” and banned from the community. It’s a cultish exclusion from the “outside” world that promotes one world view (Christianity) by vilifying other views that are seen as conflicting, including science at large. This creates not only a specific mindset (any mindset is going to be specific to upbringing) but one that is hostile to the rest of the world.

“I personally believe that this theory that Darwin came up with was something that was encouraged by the adversary, and it has become what is scientifically, politically correct.” – Ben Carson

The quote above by Ben Carson is typical of this type of mindset – here he says that he believes that the theory of evolution came from “the adversary” – Satan. The Bible says God created the animals all at once, in one day, so it must be so, despite all evidence to the contrary – so that evidence, and anyone pointing it out, must be under the sway of Satan. Everything and anything that contradicts the Bible is evil, and must be fought against. And this is where it gets very scary - they believe they are in a constant state of “spiritual warfare” against the forces of Satan.

This can take two forms – one is an internal struggle to eliminate all “evil” thoughts – some of which are moral dilemmas (“I shouldn’t steal that”), but some of which are resisting other views (like evolution, astrophysics, or coloring books).  The other is an external struggle to “protect” everyone from the perceived evils by taking them on either legally (e.g. electing school board officials who promote religious teaching or censor other viewpoints) or illegally (e.g. attacking doctors who perform abortions).

The thing is, this is an isolationist, scary mindset, and when Christians see another group with a similar type of mindset, like Muslims, it terrifies them, but they cannot see it in themselves.

A lot of this all stems from taking an essentially indefensible position – that the Bible is the Word of God and therefore literally true – which sets up an “us vs. them” where the “them” is almost everyone else, especially scientists.

That reaching of religion from questions of faith (the “non-falsifiable theory”) to questions of reality is one of the core parts where religion falls in on itself, and the constant effort to defend the indefensible puts religion at odds with science where they might otherwise exist in essentially two different domains.  It’s not the only problem I have with religion, but it’s the one on my mind today.

 

 

A Step-by-Step Guide to Putting Manga on Kindle

OnePunch Man Scanlation on Kindle

Step-by-Step

Here’s a quick guide to putting free Manga on a Kindle.

Step 1. Download the software

MangaScraper – for grabbing images from free online scanlation (fan translation) manga sites. Unfortunately this is only available for Windows. If you know a Mac version, let me know!

Kindle Comic Converter – for converting the images to Kindle size and saving a Kindle-compatible .mobi file.

You will also need to download KindleGen and copy it to the Kindle Comic Converter folder once it’s installed.

Calibre – optional, if you want to add a cover image.

Step 2. Grab some Manga

MangaScaper will automatically grab images from the following sites:

bato.to, EatManga.com, EGScans.com, MangaFox.me, MangaReader.net, MangaStream, Vortex-Scans, Red Hawk Scans

Browse one of those sites and find something you like. For this example I will use OnePunch Man from EatManga.com.

Open up MangaScraper, select the source site, and type the name of the series. MangaScraper will show matching results, select the one you want and it will then show available chapters below.

It’s a good idea not to make ebooks too big so the Kindle can handle them. I like about 10 chapters per ebook.

Select the chapters you want (in this example, I’ve selected 1-10), set a target location to save, choose “Folder” as the output, and hit “Save”. An arrow in the upper right will flash for a while as it downloads. Once it’s complete, we’re ready for the next step.

Step 3. Compress

Make a new folder with an appropriate name (in this case, I called the folder “Onepunch_Man_01-10”) then put the folders you just downloaded inside.

Zip the folder. On Mac, right-click and choose “Compress”, on Windows, right-click and choose “Send to > Compressed Folder”.

Step 4. Convert to Kindle

Open Kindle Comic Converter, and drag the .zip file to it.

Choose your target device (Kindle PW 1/2, in my case).

Check “Manga mode” – this will make the ebook pages turn right to left, like the original manga – so instead of tapping the right edge of the screen to go to the next page, you tap the left edge. It will also ensure that 2-page spreads are shown in the correct order.  If you prefer turning pages the Western way, you can leave it unchecked.

Hit “Convert”.

A .mobi file will be generated (it will generate an .epub file and then convert that to .mobi).

Connect your Kindle to your computer with a USB cable, copy the file over to your Kindle’s documents folder.

You’re done!

Step 5. (optional) Add a cover image

The only flaw with Kindle Comic Converter is it doesn’t create a cover image (it does create one, but Kindle doesn’t read it correctly). If that’s important to you, you can take the extra step to add one with Calibre.  Calibre is a super-useful ebook library manager, so you can also use it to organize your manga ebooks. It’s overkill for just adding a cover image, but here’s how.

Open Calibre, choose Amazon Kindle Paperwhite (or your device) as the default device. Create a new library with the name and location you want.

Drag the .mobi file you generated to Calibre. It will add a copy to your library. Select the book from the list in Calibre, choose “Edit Metadata” (the big “i” icon in the menu). Drag the image you would like to use to the cover image area and hit “Ok”.

Plug your Kindle in and it will show up in Calibre. Right-click the ebook in the Calibre list and choose “Send to device”. It will show a status in the lower right, when it completes, you can choose “Eject this device” from the device in the top menu.

You’re done!

 

That’s it, get to reading!

Steam Controller and Steam Link initial impressions

I pre-ordered the Steam Controller and Steam Link a while back, they just arrived today. Here’s what’s in the box and my initial impressions.

Unboxing

Pretty attractive packaging.

The Steam Controller. Comes with wireless dongle, USB extension for wireless dongle, batteries, and manuals.

Steam Link. Comes with HDMI cable, ethernet cable, power adapter, plug adapters for use outside USA, and manuals.

So, how do they work? Pretty well, with some caveats.

Steam Controller

The controller feels solid, not too heavy but not light, approximately the same weight as the Xbox360 or PS4 controllers (since that’s what I have, that’s what I’ll compare it to). It’s slightly bigger than either of those, with a lot of surface area. The first thing I noticed was the upward tilt of the upper half of the controller, this makes the trackpad surfaces easier to reach with your thumbs.

Controls

Buttons buttons buttons. This thing has a lot of buttons. There are the standard 4 by your right thumb, 4 trigger buttons (2 left, 2 right), and left and right “squeeze” triggers, start/system/select buttons, and trackpad 1, trackpad 2 and thumbstick clicks.

That’s 16 buttons, 2 trackpads and a thumbstick. Plenty of controls to work with.

I’m not sure if the trackpad have multiple switches underneath or just one using the trackpad for position.

Hand feel

The left thumbstick works great. Same position as the PS4 left thumbstick, if you’re used to that.

Start / system / select buttons work as expected.

The L2/R2 triggers don’t have as much play as the Xbox360 or PS4 controllers, not sure if that will cause issues for racing games where analog trigger pressure is important.

L1/R1 triggers feel placed a little high, but feel clicky and responsive. Putting my index fingers on them makes me want to position my thumbs higher, no longer in the center of the trackpads. I haven’t tried this in practice though, so it might be fine.

The left and right “squeeze” triggers, which you can trigger with any fingers not on the L1/L2/R1/R2 triggers, are comfortable and easy to use. I could see mapping these to primary actions like “use” and “jump”.

X/Y/A/B buttons differ from other controllers. On Xbox360 and PS4, those buttons have primary placement next to your right thumb, with the right thumbstick below that. The Steam controller swaps this, giving the right thumbpad primary placement and the buttons in the secondary spot. This will take some getting used to, every time I went to hit them, the buttons were lower than I expected and requires “reaching” your thumb from the relaxed position of resting on the thumbpad.

Thumbpads – this is where the Steam controller stands apart from others. The PS4 controller does have a small touch area above the thumbsticks, but it’s in a very tertiary spot that would be uncomfortable to use for any length of time, since you have to reach over the thumbsticks to get to it.

On the Steam controller, the thumbpads are given primary spots, your thumbs naturally rest there. In the original design, the thumbpads would replace all other controls, but after poor initial response, the traditional thumbstick and buttons were added. The thumbpads are still the primary controls, designed to replace a d-pad and right thumbstick (or mouse). They seem ok, but will take getting used to, and I’m not sure how good a replacement it will be for a right thumbstick.

early-steam-controller
Early Steam Controller design

Steam Link

The Steam Link is pretty straightforward. You hook it to the TV and ethernet, power it on, and connect it to a computer on the same network that’s running Steam with streaming enabled. Per Valve’s suggestion, I updated that computer to the latest beta of Steam Big Picture so I’d have any Steam Link / Steam Controller patches.

It turned on, though there was a little resolution jitter before showing the “select language screen”.  Then I selected my computer from the list and Steam Big Picture fired up. Setup was fast and easy.

Playing games worked well, video seemed flawless and there was no noticeable controller lag.

Gameplay Experience

I only had a short time today (on my lunch break) to try out a few games, so this is just a quick initial test.

The Game Tests

Ori and the Blind Forest – this is a pretty platformer, which requires timed jumping. I didn’t experience any controller lag, though it did take some getting used to the button locations. I’m used to Xbox360/PS4 buttons, and the Steam controller’s are lower, so any time I took my thumb off the buttons, I would flounder momentarily or press the wrong button when I went to jump. I expect I’ll get used to this, though. Overall it seemed solid for platforming.

The Talos Principle – this is a first-person puzzle game. It doesn’t require a lot of fast reacting for the most part, so I figured it’d be a good calm place to try out FPS controls. The default control configuration was… not great. The virtual right thumbstick just wasn’t doing it for me. I tried out mouse/keyboard mode, which made the right thumbpad more responsive, but was more absolute positioning instead of relative, so still didn’t feel right. I tried a couple user-submitted profiles, but they weren’t quite right either. I imagine finding the right mapping for FPS games is going to be a mix of user-submitted profiles as well as in-game control settings. This could be frustrating, only time will tell.

Hearthstone – is both a non-Steam game and a mouse-based game. It worked great! Mousing around felt ok, with the default mapping of left-mouse-click mapped to R2 and right-mouse-click mapped to the L2. This sounds backwards but feels normal, since the right trigger is the primary action. I played a quick game (and won) and it felt fine. A little like using a trackball, but acceptable.

Hearthstone? On my TV?

Exiting Hearthstone, however, revealed a flaw. I could quit Hearthstone easily enough, but that left me on Battlenet, with no clear way to get back to Steam. Pressing the middle “Steam” system button on the controller didn’t do it, although moving the controller made beeps that sounded like maybe I was on the Steam menus, but still behind Battlenet. Eventually I got back to the Steam menu, but only after a lot of trying. It felt buggy and laggy. Once I was back on Steam Big Picture, everything was fine again. So your milage may vary on non-Steam applications. At some point I’m going to try Dragon Age: Inquisition, which is an Origin game, so we’ll see how that goes…

Issues exiting Battle.net

Shutting down Steam Link

What was unclear was how to *stop* playing. There’s a “Shutdown Steam Link” option on the menu, but it didn’t seem to do anything. If it *did* shut down the Steam Link, I’m not sure how you’d turn it back on, since there’s no power button on it. The issue with this is the controller is still paired, if I left it going it’d be wasting batteries. I eventually settled on choosing “Disconnect Controller” and then physically unplugged it. It does not seem like the right way to do it, I’ll have to look online and see what you’re supposed to do.

TL/DR

That’s it for my quick first impressions of Steam Link and the Steam Controller. Mostly positive, but on the controller, some qualms about the right thumbpad as virtual thumbstick and the button placement, and on the Link, some issues with exiting non-steam games and how to turn the Link off.

 

The Whole 30 experience

Whole30

Sarah heard of this diet/food plan called “Whole30” and wanted to try it out.  This is now the last day of the 30 days. Here’s what happened.

The idea is it’s an extra-restrictive version of the paleo diet, to sort of reset your food intake to eliminate many known allergens or foods that cause digestive issues. You stick to that restrictive list of foods for 30 days, then gradually reintroduce other foods to see if they have any impact on how you feel.

It was easier if we both did Whole30 at once, since it would make meals and available snacks easier to coordinate, so I agreed to join in. I only agreed to do meals other than lunch as Whole30, since I wasn’t sure I would have compliant foods available at work, and I’m usually too lazy and uncoordinated to bring a lunch to work. However, the salad bar at work fit the bill, so I ended up doing Whole30 all the time, no exceptions for lunch.

What is it?

Being more restrictive than a paleo diet, it means:

  • no grains (no wheat, soy, rice, etc)
  • no dairy (milk-type dairy, eggs are ok)
  • no sugar or sugar substitutes
  • no legumes
  • no alcohol
  • no carrageenan, MSG or sulfites

What’s left? Mostly meat and veggies.

We didn’t apply the same diet to our son, although since he shared meals, he was mostly on the same diet… but we still gave him snacks of crackers and peanut butter when needed.

How did it go?

Not bad, actually. No sugar or milk meant black coffee, or coffee with coconut milk or almond milk. Breakfast was lots of omelets and scrambles or leftovers from dinner. But I never went hungry, and never felt like I had no options for food.

Incidentally, I also lost 15 pounds, with no change to my lackadaisical exercise habits. That’ll happen when you cut out carbs. Now I just need to actually exercise.  =P

Lessons learned

Real food is expensive – in this case, lots of meat and fresh veggies. If you want your meat and veggies organic and possibly locally grown, it’s gonna cost you.  Without grains, there are no carb filler foods like rice or pasta to bulk meals up, so it’s all meats and veggies. Luckily, we can afford to do this kind of experiment, but it highlights the difficulties of eating heathy for people with lower incomes.

Real food is slow – there are basically no packaged foods that fit the plan, so every meal is going to involve planning and cooking.  Without grains, there’s no grabbing a bowl of cereal for breakfast.  You either make big batches of food and heat them up later, or cook at every meal.

It’s a lot of meat – I’m not a vegetarian, but it was more meat than I usually eat. From an ecological standpoint, meat is very costly to raise compared to vegetables, eating meat for every meal just doesn’t feel right to me. I don’t need that much meat.

I didn’t miss sugar – for the most part. Before Whole30, having dessert every night was the normal ritual. Cutting this out, or having a piece of fruit instead, was fine. Going for the fresh fruit instead of the donut box at work felt fine too. I did miss some sugar, which I’ll get to next.

I missed sauces – there are very few condiments that are Whole30 compliant. Most have added sugar, or soy/wheat/corn/carrageenan as thickeners. This left basically gourmet or homemade mayo with no added sugar, mustard, and oil and vinegar. Salad for lunch was especially bland, I’m not big on oil&vinegar for dressing, so I ended up just splashing balsamic vinegar on my salad. I like BBQ sauce on my burger, it was not to be. Also, no Sriracha on Whole30!

Sometimes grains are replaceable, sometimes not – replacing a taco shell with curled pieces of romaine lettuce worked surprisingly well. A burger topped with mustard and wrapped in a large lettuce leaf, not so much. Zucchini cut with a spiralizer into a spaghetti shape was actually pretty good. Having baked potato wedges when everyone else has pot pie with a nice crust – not so great.

Having a restrictive diet can suck – there are very few foods I could eat when out with friends, although there was always something on the menu that could be requested without butter or sauce, it was not as enjoyable as just picking something that sounded good from the menu. It gave me some added empathy for people I know who have actual allergies and have permanent dietary restrictions.

I didn’t feel different – I did have a slight headache a couple times on the first week, perhaps from sugar withdrawal, but it wasn’t that bad. Otherwise, I didn’t feel like I had more or less energy than before, or any differences with my digestive system. It didn’t feel life-changing or anything, as the marketing for the plan would have me believe, but I’ve never had any food allergies. The next phase is slowly re-introducing the forbidden Whole30 foods, a variable at a time, to see if it makes any difference. I suspect I won’t find any difference.

Willpower was there – There were often tempting foods around, the office always has pastries scattered around, and the aforementioned pot pies were very delicious-looking, but I never had that hard a time saying no. It was refreshing to know that if I need to, I have the willpower to stick to something.

Long-term changes – As Whole30 is phased out, I suspect my eating will mostly return to how it was before, my diet was pretty healthy before Whole30. But there will be some changes that stick. Less sugar, for example. I don’t mind black coffee now, and didn’t really miss dessert. A dessert might be nice now and then, but it’s not something I need every day. Also, before Whole30 I’d gotten into the habit of having a beer every day with dinner. No beer is not enough beer, but a beer a day was probably leading to a beer gut. I’m also going to stay with smaller portions of carbs like rice and pasta, and larger portions of veggies. Small changes, but hopefully lasting ones.

A White Boy’s Thoughts on Racism

First off, read this article. It’s really well written and nicely sums up the issues of the current state of racism in America.

My own thoughts on racism have changed over the years. To begin with, I grew up in Maine, one of the whitest states in the country. Literally, I think there might have been a half-dozen black people in all of the schools I went to from head-start to high school, combined. I never saw black people treated differently, but for the most part, never saw black people, period.

I also grew up relatively poor. My parents did a good job, my brother and I never went hungry or anything, but there were times when we were on food stamps or other support programs. I should point out that Maine is also one of the poorest states in the country. But we did well enough that I went to a mix of public and private schools, and after high school, I was able to go on to college in Georgia.

Now, I would hear people talk about racism, and I thought I knew what it was. My grandfather was racist, he hated and feared black people. I never quite got why – as a Jew, shouldn’t he understand not to judge anyone in a group by exaggerated stereotypes? That, to me, was racism: saying you didn’t like black people.

When the perpetually downtrodden state of blacks was pointed out to me (such as prison populations, unemployment rates and incomes), my counter was that wasn’t an issue of race, but of economics. This, to me, was simply the cycle of poverty, where the system is designed to keep poor people poor to the benefit of the rich. It was something I had narrowly escaped, but something I could empathize with, because I had been poor at many times in my life.

I had small tastes of this, since from my late teens to mid-twenties I had long scraggly hair and an unkempt beard, and was actually mistaken for homeless once or twice. So I had been treated differently at times because I looked poor. At one point, riding with my roommate back from shopping, a police officer stopped us and searched the car, probably because of how I looked. So I felt I understood what the issue was.

This is an easy trap to fall into, because it is true, it can be very hard to break out of poverty. But it is also false, because racism is also a big problem ON TOP OF THAT. By saying “it’s just poverty, I pulled myself up by the bootstraps and so can anyone” is to deny the whole other layer of racism that exists.

I remember one time, a few of us were talking with a (white) manager about new hires, he said in passing that part of what he looked at on the resume was the name. If it was some “weird” kind of name, he figured, they wouldn’t mesh as well with the group and might have communication issues. We pointed out how wrong that was, and it took a lot of arguing for him even to understand that he was being racist. When he finally got it, he shrugged, saying his mother was really racist, and it was just how he was raised. Now, this is not a mean guy we are talking about, he’s one of the kindest guys I know.

There’s blatant racism, like people setting black churches on fire and calling president Obama a monkey. In a way, that’s easy racism to fight because it’s so obvious, but there’s a whole other layer of racism, woven into the media, language and ways of thinking, such that it can be invisible to white people because it’s just “normal”.

And as that article states so well, white people take pointing out racism personally. “I’m not racist!” is the response, and one I have had myself.  But it’s pretty obvious these days that everything is pretty badly skewed when it comes to race.

When author John Scalzi wrote a short piece comparing being a white male to playing a video game on “easy”, it of course drew immediate and sustained fire from white males saying “hey, my life isn’t easy, I’ve had to work hard!”. But the metaphor is very apt. When you play a game on easy, the enemies don’t step out of the way. It’s usually more subtle, there are a few less enemies, or they have less health, or they deal slightly less damage, or you find ammunition more often. If the game is designed properly, playing a game on easy gives the same gameplay experience and “feels” like the same game, it just allows for a greater margin of error on the part of the player.

In the same way, institutionalized racism is a collection of subtle changes that make it seem like blacks and whites are playing the same game, but we really aren’t. Eddie Murphy did a famous SNL skit where he goes undercover as a white man and finds out that when black people aren’t looking, white people give each other things for free and have special perks. It’s a hilarious exaggeration but also spot-on.

In the end, though, all this thought leaves me in a position a lot of white people probably find themselves: acutely aware of the system that benefits them, but clueless as to what to do about it.

 

More owls

In which Amazon Echo tells me what an owl is.

Me: What is an owl?

Echo: Owls are birds from the order Strigiformes, which include about 200 species of mostly solitary and nocturnal birds of prey typified by an upright stance, a large, broad head, binocular vision, binaural hearing and feathers adapted for silent flight.

Me: Define “owl”.

Echo: The word ‘owl’ means nocturnal bird of prey with hawk-like beak and claws and large head and front-facing eyes.

Me: Wikipedia “owl”.

Echo: Howell is a surname (family name or last name) originating from Wales. It is not a particularly common name among those of Welsh ancestry, as it is an Anglicized for of the Welsh name Hywel.