~/cleveland/tech/history.txt

Cleveland is a technology hub, and from my perspective, we have been one for many years.

I’m going to begin by admitting to all and sundry that I am not a native Clevelander. I grew up in a small town in the southwestern part of Connecticut. I learned to be an engineer on the heels of my father. My love for technology began on the East Coast, but it is only in Cleveland that it has really flourished and taken root.

My father always held a variety of interesting engineering jobs. He’s had top-secret military contracts, worked for the NYSE, patented early imaging technology, developed food/automation systems, and even worked for a game development company for a time. His career peaked during the 1970s and 1980s, and he was the type who would always bring his work home with him. His work fascinated me and opened up a whole world of possibilities and ideas.

In Connecticut, I was encouraged by my father and family to pursue this interest from a very young age. My father allowed me to ‘play’ with his homemade computer from about the time I was 6 years old. It ran an operating system called CP/M (Control Program for Microcomputers), and had a directory structure of USER1-USER10. I was given USER6, and in the USER6 directroy was my very first computer game — The Colossal Cave Adventure. Our first home personal computer looked very much like the one Matthew Broderick used in War Games.

All those switches, and that mechanical keyboard!

By 12, I had my own homemade DOS computer which ran all of the old Infocom games, and BASIC. It also had a modem, which, well, that was the beginning of the end for me. I was going to be an engineer, and I was going to make technology sing.

In Connecticut, I found local FidoNet bulletin boards. From there, I branched out to usenet, and the early internet, such as it was. But it wasn’t until my father took a job with Picker International and my family moved to Cleveland, Ohio when I was 16 that the world of technology really opened up to me.

Cleveland is unique in that we have a special place in the history of social media, the internet, and online communities as a whole. Cleveland was the birthplace of The Cleveland Freenet, envisioned and championed by a personal hero of mine, Dr. Tom Grundner. The Cleveland Freenet was a project that had its roots in medicine and community health care. In 1984, Dr. Tom Grundner and others from the Case Western Reserve School of Medicine launched St. Silicon’s Hospital; a free medical bulletin board system designed to connect people with healthcare professionals. It was a truly free and publicly accessible medical information system, as anybody with a computer and a modem could post questions that were answered by the medical staff at Case Western Reserve University.

It was an idea that was easily two decades ahead of its time, and it would draw all sorts of interest from early internet pioneers. Technological innovation in Cleveland has often had its roots in medicine; our first foray into the online world was no different.

Eventually, the Cleveland Freenet would grow out of St. Silicon’s Hospital, as what started as a medical advice bulletin board grew to contain forums on all sorts of topics, and eventually, an early Internet Relay Chat (IRC) client and pathway out to the greater internet as a whole. Once logged into the Cleveland Freenet, you could connect to any number of early internet connected systems, running all kinds of early community based software. Universities often had publicly accessible servers running MUDs and MUSHes — community programmed and maintained text based predecessors of the large, modern MMORPGS that have become a highly lucrative industry today. Because of Cleveland’s public access to the internet through the Cleveland Freenet — access which, at the time, was restricted to universities, businesses and government — a number of early developers and engineers were connected and sharing ideas globally, way before Stack Exchange, YouTube and Wikipedia.

Check out that lovely ASCII Terminal Tower!

It was through a connection I made on the Cleveland Freenet that I found my first job in Cleveland as a web developer. I had the great pleasure to work for Ron Copfer at Copfer and Associates. Ron is an industry pioneer who has had an exceptional career in technology in the city of Cleveland. In the late 1990s, if you searched for ‘web development’ on Yahoo or Google in Netscape Navigator, The Cleveland-based Copfer and Associates would float to the very top of the list.

It was very easy to fool those search engines back in the early days of the world wide web. By repeating the key words you wanted the spiders to index in a really, really small and invisible font on the very bottom of the page, you could fool the search engines into indexing your website at the very top of the search results. It was a hack that brought our little Cleveland based web development firm to the attention of Microsoft, where we had the opportunity to present a project involving early active server pages and Microsoft NetShow – a predecessor to Microsoft Media Player.

Because of the attention that Copfer and Associates and other similar Cleveland based web development firms received at that time, little internet based start up companies began to spring up all over the city of Cleveland. Most of them failed, but for a period of time Cleveland had more internet based businesses than any other city west of New York and east of Chicago.

Cleveland also has a rich technology history in its media and news organizations. Cleveland.com was one of the first community based websites to incorporate articles from the Associated Press and the local newspaper/news outlets. Cleveland.com also had a rich online community forum, local movie listings, and a community maintained recipe database. All of which were new and innovative ideas that sprouted roots in Cleveland.

The people that worked for Cleveland.com in the late 90s/early 2000s are still connected today. All of them are holding influential positions in the industry. One of those former Cleveland.com employees has gone on to be a global leader in IT.

What makes Cleveland special in IT is that we are truly a community of like minded individuals with great resources, great history, and a shared passion for what we do. We remember everyone we’ve worked with and everything we have learned along the way.

Recently, I’ve had the opportunity to become one of the Women Who Code Cleveland Directors, and I’ve been able to meet and learn from other female engineers through our Cleveland branch of Women Who Code. We have a great IT community here in Cleveland; it is an honor to be part of it.

When I read articles like this one claiming that Cleveland could be the next technology hub, I would like to remind everyone that Cleveland has always been a technology hub — we’ve just kept it on the down low.

–hyperjoule

What does your IDE look like?

So… just a quick post. I’ve been working in NetBeans for a long time, but….

OMG VisualStudio with PowerShell running Ubuntu and some tricks I have found here:

https://www.freecodecamp.org/news/jazz-up-your-zsh-terminal-in-seven-steps-a-visual-guide-e81a8fd59a38/

here:

https://evdokimovm.github.io/windows/zsh/shell/syntax/highlighting/ohmyzsh/hyper/terminal/2017/02/24/how-to-install-zsh-and-oh-my-zsh-on-windows-10.html

and here:

https://dev.to/mattstratton/making-powerline-work-in-visual-studio-code-terminal-1m7

and VSCode blows every other IDE out of the window. Wow.

Failure, The Box Of Shame, and What We Do With It.

So, I’m going to start this with a little story. You see, a couple of years ago there was an overly excited gamer/engineer type who had gone through a life change that involved a brand new job. This gamer/engineer purchased a brand new — and at the time, very difficult to come by — Nintendo Switch as a personal reward.

This Nintendo Switch is now sitting in a Box of Shame.

I can’t mention any names when I tell this story, because no one likes their box of shame opened for public display.

No One wants that box opened. No one.

In fact, some people, who again will go unnamed, tend to have a whole ‘closet’ of shame that is behind an absolutely ridiculous home made security setup behind an iron door completely covered in caution tape, guarded by Dementors on loan from Azkaban.

Continuing on, this individual — who I will refer to as ‘HJ’ for the sake of anonymity — was eager and excited about obtaining such a cool new piece of technology and really, really wanted to know how it ticked .

HJ played games on the Nintendo Switch for a while and was able to keep the curiosity monster at bay for a time.

For a good six months, even.

But then the inevitable happened. After a long, exhausting day, HJ was relaxing on the couch, put the switch on the edge of it, got up too fast, and the switch fell on the ground. Lo and behold, this resulted in a cracked front face plate.

Oh, it still worked, you see, but it wasn’t perfect anymore. It needed to be FIXED. And if it needed to be FIXED, well, wasn’t this a perfect opportunity to also UPGRADE it?

I would say at this time that HJ knew nothing about the inner workings of a PCB, micro-controllers, LCDs, EEPROM memory modules, touch screen interfaces or, you know, the fact that tricky companies like Nintendo use the superpowers held by their master-class-completely-all-the-way-leveled-up-electrical-engineers to add traps into their PCB designs that prevent us mere mortals from tampering with them.

HJ did not KNOW any of that. Nor did HJ know that HJ didn’t know any of that.

What HJ knew was that HJ was an engineer!

…Yeah. So HJ asked me not to share how that turned out, but I think for the sake of the story I must. It turns out that while one can easily replace the back of a Nintendo Switch case, one must remove all sorts of important things that don’t like being detached from their mommy board to get at it. And when one attempts to re-attach these various things, the mommy board screams in agony and starts smoking and dies a slow, painful death.

Okay. Not a problem. HJ felt that this was not a unrecoverable situation. During the process of failure, HJ learned a ‘WHOLE LOT’ about the inner workings of the evil Nintendo Switch. HJ learned that all the saved games were on an EEPROM module. HJ THOUGHT THAT HJ KNEW that because it was a memory module, it could be easily moved from one Nintendo Switch to another. In HJ’s mind, this meant: ‘Voila! Bing bang boom, new looking Nintendo Switch, no loss of saved games. Problem solved!’

HJ did NOT know at this point that there was a hardware security check that matched an EEPROM to a specific motherboard.

Basically, HJ got overzealous, took apart a working system, and then when that didn’t work, took apart ANOTHER working system to attempt to repair the first. This had a financial cost of upwards of $500 — two Nintendo Switches and the tools needed to take them apart.

Needless to say, the whole ‘Nintendo Switch Incident’ has neatly been locked in the closet of shame, in a dark corner covered with cobwebs and protected with mines triggered by proximity sensors. It was a classic example of believing ‘What You Know’ and ‘What You Know You Don’t Know’ in any situation, ever outweighs ‘What You Don’t Know You Don’t Know’

Fascinating Article – I suggest everyone read it at least once!

The decision to act without having a full understanding of the underlying technology had a financial cost, as well as even a mental cost. HJ had to question decisions and conclusions made in haste, and grudgingly accept the consequences of them, which in this case was an overwhelming feeling of failure and inadequacy.

But the moral of this story isn’t in the fact that the incident resulted in another ‘Box of Shame’. The moral of the story is in what ‘HJ’ did with the knowledge gained from having to add that ‘Box’ to the ‘Closet’.

HJ recognized that Electrical Engineering, PCB designs and micro-controllers were things that life had not yet provided an opportunity for HJ to learn. They weren’t things that were in HJ’s wheel house.

HJ could accept that, chalk it up as a failure, throw it in the closet and forget about it completely… or HJ could recognize why that box was tossed in the closet, find those skills that were missing from HJ’s wheel house, and put them there.

That experience of failure which resulted in an entry to the ‘Box of Shame’ opened HJ’s eyes to a new and interesting side of technology. HJ found experts in the field, learned from them on HJ’ personal time, and joined online communities. HJ started with smaller projects, and focused on understanding each component of each board HJ worked with, knowing that both the first and second foray into such endeavors were unsuccessful because of HJ’s lack of knowledge.

There were failures. There were a lot of failures. But then, all of a sudden, there were successes.

HJ has built some incredible iOT things, and is delving into PCB design and areas of engineering that at one time, were unknown to HJ.

All because of a ‘Box of Shame’ containing two broken Nintendo Switches.

Not too shabby for a homemade Arduboy. Yes, it is a novice’s attempt. HJ is okay with that.

Learn from your mistakes. Learn where you went wrong and why. Learn how to recognize ‘What You Don’t Know You Don’t Know’ and always strive to improve, as individuals, employees, engineers, leaders, followers, students, mentors and family members. We are all every one of those things in some way.

Accept that sometimes you have to fail — and fail a LOT — if you want to succeed!

(As a side note, HJ still hasn’t touched another Nintendo Switch and won’t until HJ is absolutely sure that HJ understands everything about it first. *cough*)

—hyperjoule // juliann@womenwhocode.com

The Infinite Loop

As a software engineer, I have always related my state of mind in technical terms. This might seem odd to some, but it helps me fundamentally understand myself, the world around me, and other people in it.

In the software engineering world, we have a term for a process that runs consistently, and with no exit condition — the infinite loop. Most of us are in a regular loop as we go about our day. Our regular loop, when represented in code, looks something like this:

while($life=="Normal")
{
    Wake();
    Wash();
    Work();
    Family();
    Fun();
    Health();
    Sleep();   
}   

This will only run while $life == “Normal”. An outside function or procedure can change the value of that variable. An infinite loop is quite different.

for(;;) 
{
    Family();
    Work();
    Health();  
}

There is no variable that you can change or condition you can set to help you out of it, and those are the only processes running on repeat in your brain code. The Infinite Loop is often caused by events you can’t control. And falling into one can be dangerous.

Many things can trigger ‘The Infinite Loop’ – work events, life events, health issues, family events. But when there is a combination of events feeding into that Infinite Loop, an Exception on too many processes is thrown anyway, despite no exit clause in your brain code.

Translating nerd speak, this means that if you’ve worked yourself up to the ridiculous over situations that are entirely out of your control, you are going to crash hard unless you re-center, re-focus and don’t let your head get away from you.

Life is hard, confusing, and an unstoppable force. People you love can disappoint you. Work is hard or it wouldn’t be called work. Family is hard. Children grow up and go to college, parents grow older and more frail, and your siblings become more distant as their own life processes become more complex.

Your life can go through many changes, all at once.

I was in an infinite loop this week. I barely avoided a hard system crash. A series of alarming events in every facet of my life threw me completely off center. I have been heading into that loop all week.

I hit a Critical Stop.

The thing about the Critical Stop is once you recognize that you are at that point, you can *think*again. You can stop letting everything get to you. You can take all those insecurities and conjectures and concerns and compartmentalize them. Don’t forget about them; there are reasons you fell into the Infinite Loop after all — but only open one compartment at a time, and on that part you brainstorm.

Stop second guessing your life code and brain processes; pick at the bugs one at a time until they are fixed, and eventually you will have a functional, dependable system.

–hyperjoule // juliann@womenwhocode.com

http://www.womenwhocode.com/cleveland

Women Who Code

I, along with a very talented UI/UX developer named Stephanie Oritz (shout out to Stephanie!) , will be re-igniting the Cleveland chapter of WWCode Cleveland. We will be network directors for the region!

I’m hoping to do some really cool and fun web and IOT meetups!

Women Who Code Cleveland

Cleveland, OH
565 Members

Join us by attending a WWCode event or signing up at www.womenwhocode.com.Women Who Code is the largest and most active community of engineers dedicated to inspiring women to…

Check out this Meetup Group →

Come join our meetup group!

The Kitty Cam

One of the things I’m currently working on is a five-button auto cam that captures what my cat is up to, because she’s a brat.

enjoying her little window seat in her handmade blanket — spoiled little princess

I still have some things to tweak in my script, but one of the cool functions is snapping a current photo with the webcam and uploading it right to my blog, so it is in my media folder when I go to post. Check it out!

Source code will be up on github and instructions will be here once I work out all the kinks :).

E-Paper button badge

Hi everyone! I’ve completed this project and put the source code on github here:

https://github.com/jstainbrook/epaperbadge

This is actually the first of two projects I intend to publish using the Pimoroni button shim. The second (upcoming) post is for an all-in-one webcam/media controller that I built as a ‘kitty cam’ — It isn’t launched yet, and I haven’t actually completed the project, but I do have the button shim already coded to start/shut down a web server, email a photo taken from the webcam through gmail and upload an instant photo right to my WordPress media library so I can immediately go and embed the photo in a post.

It can also start/stop a twitch stream with one button — all running on a Pi Zero W so stay tuned!

–hyperjoule

The Discord Dad Bot

Once in a while, I’ll challenge myself and take on something just a bit outside my lane. This is one such thing. Mind you, I have been developing in javascript and jQuery for years, so I know javascript very well. The javascript node.js framework was a bit new to me, and this was a good opportunity to learn it!

C’mon, they’re funny, you know it.

Discord is a chat server. I mostly stay on the #sudomod channel with other makers and developers and RetroPie enthusiasts, so I’m not a huge Discord user, but I’ve become quite fond of my little Discord group of fellow retro-gamers.

Discord has bots — automated users that are detached from real people, running scripts that control their behavior somewhere off on the internet.

The last time I wrote ‘bot’ code, it was back in the early 1990s for IRC, which is the predecessor to your modern day chat clients. In the early 1990s, the internet was very small and mostly local and not as popular as online services, as you needed a true unix system (Sun Solaris is what I used) in order to access it. There was a time when the only browser available was Mozilla — not FireFox, but Mozilla — and Mozilla didn’t run on Windows.

Usenet and IRC were the way that you reached out to the world at large in the early days of the internet. And a bot could stay online at all hours — friends in other time zones? Afraid you were going to miss a message? Your bot could store it for you!

Imagine my surprise when I found that yes, bots are still a thing, and they’ve become a FUN thing.

The channel I’m on already had a ‘yo momma’ bot — and so, I present

THE DAD BOT.

Feel free to clone and adapt for your own Discord server!

–hyperjoule

The Button Badge

So, I’m quite fond of all those fun little tech badges that people wear to tech conferences. People get really creative with them.

So, this particular badge came to be because of my love of e-paper screens and the fact that once the image is presented to the screen, they don’t require power to maintain it.

This little badge normally sits by my R2-D2 cam when not in use.

It has a Pimoroni button shim soldered neatly between the pi-zero-w and the e-paper display, giving me a low profile 5 button input that I was able to program to call different python scripts on the pi that change the output on the display. When the pi receives power, the button shim will flash briefly after the boot-up sequence, letting you know when it is ready to use.

The LED on the button shim also provides a good status indicator for when it is done updating the e-paper display (the refresh rate is slow and it can take up to a full minute to execute a change). Since we are running this headless (without terminal or monitor), we don’t have the feedback displayed on the screen to know when the processes are finished being executed. In my scripts, I have included the button shim library, and I have it turning the light off on successful completion of each activity.

Anyway, I plan on putting up a video of the badge powered up and in use, as well as a link to the repository on github and instructions on how you can make one of these for yourself.

Regards,

hyperjoule

The R2-D2 Nightlight and Death Pi

R2-D2 Lamp – Project Notes/How To Guide

Update: Because of the cost of maintaining the project on the internet, I have disabled the active link. This article is for project reference only. For personal use, the initial implementation of this project is available on GitHub.

–hyperjoule

Greetings! I have completed the README.md guide and promoted the repository for a local version of this project (not the internet streaming version — it requires a lot more manual configuration and an EC2 server) so that you can get one of these neat little toys running on your own home network!

The repository for this project is hosted here:

https://github.com/jstainbrook/r2_d2-local/

Follow the instructions in the README.md. Note: this is my first ever completed PUBLIC repository, and this is version 1.0 — if any of my instructions are not clear, please let me know! I am hoping that I have provided clear enough instructions so that someone with a little linux knowledge and some basic soldering skills can set this up for themselves at home.

Some notes on this project. I initially in the beta stages had this streaming on my desk at home. This — for all sorts of reasons — was not a good idea. Mostly, it took up too much GPU and processor speed, and therefore wasn’t ideal to be running as a simple 24/7 twitch stream. Plus, my cat kept knocking it over (along with me, every time I’d move something on my desk).

I had made a while ago this awesome looking Death Star that I used for a Retropie build.

The inside of the Death Star

It was already set up with a low profile fan and a momentary LED interrupt I could use for safe startup/shutdown (I will cover the building of the Death Star and the setting it up as a twitch streamer in another post!). This Death Star (and yes, I’m a total Star Wars nerd) was just sitting on a shelf as I found it wasn’t really practical as a retropie machine. Something about round cases and usb joysticks don’t really work out very well — I got tired of chasing my retropie across the floor in the middle of playing a game!

So, awesomely enough, I have a low power themed twitch streamer running 24/7 right next to my LED lamp!

Yup, that Death Star is powering the Camera!

And, just to show you what the pi zero w with the unicorn pHat looks like when not under the acrylic:

Cool, huh?

If anyone makes one, please let me know! I’d love to see other implementations of this!

–hyperjoule