Are Keyboard Shortcuts Still Shortcuts?

I remember the time when we as students first learned to program on early versions of PCs and terminal machines connected to a mainframe. Word processor software, namely WordStar and WordPerfect, were your everyday companion to write papers or stories. Productivity utilities for the first personal computers were innovative, especially that that memory allocation and processing power were so scarce. Developers of such tools had to find ingenious ways to create products that do not occupy all the machine resources to leave you with enough capacity for your work and software. What is now common in the development environment, including multitasking, multiple windows, screen splits, live code sharing, containers, cloud storage syncs, wireless headphones while coding, StackOverflow or Google for help, and virtually anything else you do today while coding did not exist a few decades ago. If I would pick up on some technologies that seem to stick around are:

– Listening to music while coding but not in the same and exact way we do today. You would have a double radio cassette player (if it is one of the big ones then you are rich!). The sound is covering the room until we managed to get our own Sony Walkman. 

– Dark, green, or cyan desktop screens like terminal machines, monochrome monitors, and Commodore computer screens.

– Programming languages and standard operating system shell commands that are still common “dir” “cd”, or words like compile and run.

– Keyboard shortcuts! Yeah, shortcuts. The CONTROL key, ESC Key, Function, Alt, Option, Command on your keyboard were a legacy for developers. (Side note some keys like the Command Key or the Windows key were possibly part of the political battleground for Microsoft and Apple.)

Non-developers may not really know or care about the CONTROL key (other than copy and paste). They may find the TAB key convenient while writing but are not aware of the war of the worlds in TAB vs SPACES when writing code. They would see the function key or keys (F1, F2,.. ) on their computer but not do anything with it. They will not appreciate when young developers in the late eighties would find ingenious ways to make use of such keys for games, tools, and software. Apple also put a dagger in the developer’s heart when the ESC key was removed in their latest MacBook Pro. That key was so essential for developers using VIM and other text-based editors that people like me managed to turn a hardly used key CAPS Lock as my ESC key. Love it or hate it but Apple kept faith with its Command key which does not exist in Windows keyboard. It made it difficult for multi-OS developers using Windows/Linux, and MacOS to remember all the shortcuts when using the CONTROL key, the OPTION key, and the COMMAND key. On top of that, you have the ALT key, SHIFT-CMD, ALT-SHIFT-CMD, OPTION-CMD, CONTROL-OPTION-CMD, etc. and then add a character or number next to each one to perform a specific function.

To get an idea of how shortcuts can be confusing if you are switching between a Windows and MAC Visual Studio Code take a look at the shortcuts for Visual Studio Code https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf and compare it with the Mac version https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf

The difference is substantial, and that is for one product across two different platforms. If you want to learn the various Windows operating system keyboard shortcuts you can check the link https://support.microsoft.com/en-us/help/12445/windows-keyboard-shortcuts. For Mac, you can check https://support.apple.com/en-us/HT201236 Good luck remembering a lot of those keys.

In today development environment, key stroke shortcuts keeps getting created for every software product imaginable. Products like Visual Studio Code, Sublime Text, VIM, Office 365, LibreOffice, Mac OS own tools (screen capture and navigating around) have their shortcut commands along with the option of creating your own. As new products for developers come around, we have to remember new shortcuts. We are all humans, and we all age. So keeping up with the pile of shortcuts is problematic. Yes, there are options of not using shortcuts by using the Mouse, but we want to be fast and quick. We are developers after all!. I am not demanding a massive revolution against software manufactures that offers you new products with new shortcuts, but I think that the community needs to come together on making shortcuts less of long cuts. For instance, the famous CTRL C and CTRL V (copy and paste) should stay across all platforms and should not be replaced with CMD C & CMD V for Macs. Screenshot capture and paste should have a standard approach across OSes (remember Print Screen key?) We should demand that keyboard keys for Apple and Windows machines be the same – no more separate Windows flag or Apple own CMD key. The ESC key must return as well for Apple machines. These are just my ideas; others might have other suggestions in mind. Maybe we can eventually have an international developers guild of standard shortcuts. Keyboard shortcuts are productivity functions. With our hands on the keyboard at all times, we can navigate and code much quicker than when using the mouse. 

Now you can do select all, CTRL C to copy the text, and CTRL V to share it with all your developer friends. (Oh sorry, this applies to Windows users. CMD C and CMD V for Apple users)

BASIC First Lines of Code

I will write about Microsoft Build conference soon but one important photo that I feel any developer would appreciate is that of the first lines of assembly code that formed the BASIC language compiler on the first Altair personal computer written by Bill Gates and the late Paul Allen. It can be see at the Microsoft Redmond Campus Museum. Such lines of code sparked the generation of software developers across the world including me.

Why 22 hour game-playing and listening to 68 episode podcast matters?

Thimbleweed Park is an award-winning point-and-click game released in 2017 as a tribute to similar pc and Commodore 64 adventure games in the 80s. It is created by Ron Gilbert and Gary Winnick, with design and development assistance from David Fox, Jenn Sandercock, and numerous other individuals. You control five characters simultaneously in a story that in itself contains multiple sub-stories, interact with a multitude of characters in the game, and solve the puzzles that you encounter. Each of the animated characters has very distinct personalities that you cannot forget even after you long remove the game from your phone or computer.

After spending more than 20 hours playing the game over a period of time (22hrs and 15minutes in my last attempt per game record), I was so marveled with the game that I search the net on its origin and found a podcast by the game creators that ran weekly for 2 years from April 2015 to April 2017 plus one more episode in April 2018. Most of the episodes are 15 to 20 minutes where the game creators discuss the progress of the game development. One episode each month is an hour long and includes answering questions raised by Kickstarter-backer of the game as well as those posting comments on the game’s website blogs.

In the last couple of weeks, while driving to or from work, I went through all the podcast episodes in chronological order instead of listening to my usual music. My curiosity for listening to the podcast started with no apparent reason besides wanting to know more about the game, but it quickly turned into something bigger. It wasn’t about how to build a similar game or a nostalgia to bring back memories of the 80s. It was about developing something innovative with a tremendous focus on detail while maintaining a set of rules and constraints that the developers themselves intentionally decided to bound themselves onto to stay committed to their original idea, and that keeps the game with an 80’s look and feel but using modern-day technologies. The developers used to developed games together twenty to thirty years ago including Zack Mackraken, Maniac Mansion, Indian Jones, Loom, and more. They were in their twenties at the time. Now they are in their fifties and sixties with a lot of life experience combined with their lifelong passion for adventure games and science fiction – your typical geeks that I personal align with.

From a technology perspective, the developers leveraged a lot of the traditional modern-day technologies, such as Git for code repository, Adobe Photoshop for the art and animation in the game, software development kits (SDKs) for Steam, GOG, Xbox, Swift, Nintendo Swift, OSX, Android, Windows, Linux, and more. They were also blogging and podcasting their process which was something unthinkable of in the 80s, working remotely and using Skype for communication, and were interacting with their game supports on social media channels. In the eighties, such technologies did not exist, of course. The limitations of hardware and software on old computers like the Commodore 64 generated a lot of creativity but bounded with can be done in terms of graphics, music, and 8/16bit computing power. Nowadays, games run on 64-bit computers and mobile phones, and can easily leverage augmented reality, virtual reality, and artificial intelligence technologies to maximize gaming experience without sacrificing performance or cost. The developers for Thimbleweed Park decided to do none of the cool new stuff.

Thimbleweed Park creators made sure all the graphics are limited to the 80s era, but they perfected all the details of the animated characters and the scenes. They added voice, special effects, and music that still makes you feel it is the 80s. They also expanded the game to support international speaking game players. They added innovative ideas including Kickstarter backers could record a voicemail which can be played back in the game when a character in the game dials a number from the phonebook. Other game backers would send some text of books which the developers then add to the library scene in the game. The game also includes entertaining puzzles such as ones that make use of the microwave or the air blower in some bathroom or some berries in the forest. Some puzzles are challenging but have an “Aha!” moment when some character makes a phone call while the other character does something else. I am not giving details because I don’t want to ruin the game for those that would like to play the game. While the game itself was so innovative and entertaining, the conversations between the developers in the podcasts were geeky sometimes but and most of the times were like normal discussions that can be taking place between friends in your backyard.

The recording of the podcast episodes started at the same time the game was getting developed and continued throughout the development stages. Like in any typical development process, things start with early ideas and preparation work. The creators do not disclose the details of the game in the podcast because they do not want to ruin the story before the games get published. It made listening to the podcast episode as adventurous as playing the game especially when I started listening to the podcast after the game was released and while I was playing it. Unintentionally, you would relate the actual game with what is being discussed in the podcast. Sometimes you would hope to find clues about the game even though the game itself as an option for you to ask for clues. Moreover, you would start to wonder how the developers are organizing their work – one is the artist, another is the developer, and a third is the project lead and is also an artist and a developer.

The game creators talk in the podcast, and we listen. They call out specific feedback received from their Kickstarter backers and discuss it. Hence, you feel users’ voices are added into the podcast. Sometimes they invite other members of the team working on the project. The episodes frequently include humor and nostalgia moments from the past. Even their personal lives would get shared on the call. As the episodes progress, they share concerns about release timetables, bug fixes, issues with platform rollouts, and different problems which are not uncommon in any project. In general, the episodes felt human and not some business production, so why all this important? The authentic experience of playing the game and listening to their thoughts and interactions throughout the lifespan of the podcast that ran in tandem with the game development made me rethink about how innovative thinking, natural human behavior, and organized execution can generate amazing results.

When the efforts by the developers were rewarding to its creators and its players while at the same time it was fun and challenging then why not take more of such lessons and apply it in corporate innovation. Key takes that I learned from Thimbleweed Park the game and the podcast:

  • Nothing is impossible but don’t be overly ambitious. Even though the developers and the artists were masters in their field, they did not go overboard with the project. They stayed faithful to what they wanted to do and did it exceptionally well.
  • They dedicated regular feedback channels for their customers. They allowed their users to suggest ideas but made the call whenever a draw occurred on which idea to pick. They also gave an option to their Kickstarter contributors at a specific level to be part of the game by letting them record their voicemail which you can listen to in the game if you dial the person’s name and extension located in the game’s telephone book. That is cool and original.
  • The podcasts were very entertaining and informative. They didn’t shy away from discussing their past or sharing their concerns about the game development progress. A great lesson learned about honesty and humbleness.
  • The game itself had lots of challenging puzzles but also include an option to get a hint. Just like any product, you always need some guidance when you get stuck.
  • The story of the game is long but not long enough to give up. There was still something in the game that pulled you to continue playing. Even when you leave the game for days and then return, you can quickly get back to the same rhythm before you left the game. The user experience is excellent. Design a product with an intuitive user interface that makes it easy for you to return to where you last stopped and can help you recall what you should be doing next.

I can think of other ideas that one can learn from playing such a game. But at the end of the day, I can summarize it all as: design something as intuitive as playing some game, have fun doing it and let the users enjoy what they are doing with the product, be honest, do not over commit but do not underachieve either. One last thing, play the game!

Game information is available at https://thimbleweedpark.com

ThimbleweedPark-CharactersAtVista.png

Note: images are copyright of Thimbleweed Park.

My Story with Pink Floyd

Sometime between ‘91 and ‘92 I accidentally saw Pink Floyd Another Brick in the Wall part 2 video on MTV – the scene where school kids turn into .. Loved the song, so I went and bought a cassette with only The Wall Part 1 album. Never thought to buy Part 2 at that time. I would then just forward the tape to Another Brick in the Wall part 2 right when the helicopter sound comes up. I stayed doing that for months until one day I thought of playing the whole tape from part 1. I loved it! Right then I went down to the local music store and bought part 2 of The Wall. For some time my world of Pink Floyd was only around The Wall. Never knew anything else existed until I encountered Wish You Were Here on the radio. But I did not know that Wish You Were Here was for Pink Floyd. I went to music store and tried to imitate the song in case the owner could recall which band was it. When the owner said it’s Pink Floyd and handed me the Wish You Were Here album, the whole world of music changed for me ever since. The Final Cut came next for me, and later Roger Waters Amused to Death. But my love for Pink Floyd took a more obsession when I started listening to Unmagumma, Saucerful of Secrets, Animals, Pipers at the Gate of Dawn, Meddle, and, my best one of all, Atom Heart Mother. Darkside of the Moon was nice, don’t get me wrong, but it was Atom Heart Mother that I had loved the most. I was told that the last album for Pink Floyd was the 1984 Final Cut and I assumed the band was over. I was so wrong.

Two years later, sometime in 1994, the song Keep Talking comes up on the radio. I thought to myself the sound is like Pink Floyd so what if Pink Floyd is back? Surely so! Pink Floyd released the Division Bell. I rushed to the music store, this time the store in Hamra Street. The owner said the shipment of album CDs is on its way shortly, so I parked my car next to the store and waited in the car for a couple of hours. Waiting for it was so worth it. Sometime after the Division Bell came the Pulse live album. Not my favorite compared to Atom Heart Mother and The Division Bell, but it was Pink Floyd!!

The music of Pink Floyd is so beautiful. The guitars, drums, the piano, the voices, the synthesizers, the words, the album covers, the movie, and more. No offense to David Gilmour or Roger Waters solo careers, the preWall era with the team as a whole is the best. I thank Nick Mason for putting the Saucerful of Secrets concert. Even though it is not the Pink Floyd band, but his passion and drum talent is Pink Floyd. His concert Saucerful of Secrets is a Pink Floyd concert to me, and Pink Floyd is Pink Floyd forever! Now off to see Nick Mason Saucerful of Secrets concert here in Dallas !

Jump Start into Machine Learning

YouTube recording of a presentation I gave earlier this year (check previous post). In the session, I discussed my passion in the field of computers and showcased various machine learning techniques and applications using Google AIY using Raspberry Pi, Google Collab, and even a neural network on a Commodore 64.

Not just the world is round but the technology world is round as well

If the world is round then so as the technology world is round as well. In the late seventies and eighties, the BASIC language and Assembly Language were hot things at the time. After that, people took on new technologies with the Internet and jumped on languages such as HTML, C, C++, Perl, Python, and JavaScript. Systems moved from 8bit to 64bit. Storage devices moved from cassette tape to the cloud. Typing a program onto the computer moved from copying lines of code from computer magazines onto the computer screen. Issuing the BASIC RUN command and witnessing the executing of the programs felt magic at the time. For those who didn’t live the 8bit era, the same feeling can be felt today when running a Docker script and witnessing your code and servers coming to life. 8bit programmers became the old school, while modern day software engineers and data scientists became the new school. If you ask a Generation Z programmer what Assembly Language is or what is BASIC he or she may not know. But somehow the wonders of the seventies and eighties seem to be returning. Great things never die just like Goonies never say die.

The eighties are coming back, and I feel that I am that child nerd again. Commodore 64 returned as C64 Mini and Sinclair Spectrum is now ZX Spectrum Next. I personally still play old 8bit games using emulators. You can also watch or listen to a lot of new retro computing episodes via podcasts or Netflix. Just yesterday I started watching WarGames the movie a million and one times.

BASIC and Assembly language are hot again. Assembly language made it to the top 15 languages according to TIOBE Index. Not long time ago I happened to meet a young person buying an assembly language book at Half Price book store. When I asked him why his answer was “I heard that is cool”. And today, I just saw that Google published WWWBasic, an implementation of BASIC that runs via JavaScript. You can do the following:

<!DOCTYPE html>
<script src="https://google.github.io/wwwbasic/wwwbasic.js"></script>
<script type="text/basic">
PRINT "Hello World!"
FOR i = 1 to 10
PRINT "Counting "; i
NEXT i
</script>

You can also import BASIC code as a Node.js module.

The world is round and the technology world is round again.

August 9, 1982

August 9, 1982 Commodore released the Commodore 64. It took me close to 5 years of wanting it, asking for it, dreaming of it and then eventually saving for it (you can ready me story at https://lnkd.in/de-XWks). It fueled my passion along every other 8-bit machine. At the end of the day, the c64 and its predecessor that I cherished, the Vic20, have wired my technology mind and helped me build my career which I am thankful for. If only I still have my machines again! Cheers, Commodore 64!

digging the past

Why it is important to dig the past of computers by reading, for example, early 1970s issues of Byte magazine? Going back to the roots of personal computers and living the technology footprint, the innovation and limitations at that time would give you, not only appreciation of where we are today and how far we have come, it might just as well gives you ideas for future development that someone might have missed all this time! hashtag#imagination hashtag#innovation hashtag#beinthemoment
check out https://archive.org/details/byte-magazine 

Digging the past of personal computers

Why it is important to dig the past of computers by reading, for example, early 1970s issues of Byte magazine? Going back to the roots of personal computers and living the technology footprint, the innovation and limitations at that time would give you, not only appreciation of where we are today and how far we have come, it might just as well gives you ideas for future development that someone might have missed all this time! #imagination #innovation #beinthemoment

archive.org/details/byte-magazine

felt like yesterday

Earlier this year but it feels like yesterday when I presented on Do-It-Yourself AI. Great moments when you engage the audience with Google AIY tools, showing Commodore 64 machine learning code in Basic, and talking about burning 5 Raspberry PI Zeros while soldering 🙂 Link to the presentation on https://lnkd.in/exWiMmM hashtag#machinelearning hashtag#raspberrypi