Browsed by
Category: Technical

IBM PC Convertible

IBM PC Convertible

My very first computer was a TSR-80. I learned to first code out of necessity – you had to type in all the programs you wanted to play. My dad then purchased one of these wonderful beauties: The IBM PC 5140 Convertible.

Art Institute of Chicago

The computer was a miniaturized IBM XT 8088 system with only 2 floppy drives and no hard drive. Still, it was a huge step up with the ability to save and load programs from floppy disks.

I love that people try to preserve the history of these wonderful old machines – and you can find everything about the system including original boot disks, specs, and configurations. There also appear to be copies of the original boot disk and ROM set that work on MAME.

Stable Diffusion on a Mac M1

Stable Diffusion on a Mac M1

It appears several folks have gotten stable diffusion to work on the new Mac M1 (and M2’s). This is one of the really big advantages of a unified memory architecture in which the CPU and GPU can access the same memory without needing to be transported across a PCI bus first.

Links

Elements of Creativity

Elements of Creativity

“Inspiration is for amateurs – the rest of us just show up and get to work.” – Painter and printmaker Chuck Close

In this GDC talk, Raph Koster explains what science tells us about creativity – what it is, and what it isn’t. Contrary to popular belief, creative work is not best arrived at by connecting with some ethereal muse, being a tortured, moody arteeest type, nor just sitting around waiting for inspiration. Creativity is also not just adding a very simple mechanic to something that already exists or re-skinning something in a new way.

Instead, the data tells us that creativity is something that can be developed, is a fairly straightforward process, and you can cause to happen when desired. I agree with him, and would also say even further: working in your field every day has connected me with some of my most interesting creative ideas – ideas that have payed me well and won awards. It was boring, everyday work that showed me what people were interested in, and then my curiosity lead me to new connections.

Favorite points from his talk:

  • Creativity is most well defined as mixing of traditionally unrelated things in new ways. It is not mysterious, there are proven simple habits to assist your brain to start making connections between different subjects and being more creative.
  • “Personal expression” is not creativity. It might be, but don’t mistake the two – they have different goals.
  • Ensure you get 7-8 hours of sleep a night. Cognitive ability declines measurably with even small sleep shortfalls – creativity (primarily a thinking activity) provably suffers.
  • Classic brainstorming with no criticism generates just a few ideas per hour, but studies show allowing criticism during brainstorming generates MORE ideas per hour.
  • Positive attitudes and happiness are more strongly correlated with successful creative ideas than the angsty creative trope. Yes, you may have had traumatic experiences in life, but pretty much so has everyone.
  • Get regular exercise and take care of yourself – it has proven positive mental and creative effects. Taking a nap often solves a problem.
  • Creativity is often a measure of imagination. Measuring the creativity of person is often done by having a visualization exercise. More creative types ‘see’ more details of the thing they are visualizing right off.
  • Creative leadership is often NOT a winning formula
    • Creative people are usually perceived as worse leaders.
    • It is usually second movers/fast followers that end up defining the genres and really cashing in. They usual execute better and game styles are not well protected under IP law.
    • Creative approaches are more risky than known genres – you MUST expect a high failure rate
  • Creativity does buy you a following – which is critical in the current market where people now follow the game makers/personalities more than the game or studio itself.
Project Offset

Project Offset

It’s always interesting when the media covers projects that you worked on. Even more entertaining is to read the wildly incorrect sweeping generalizations that people make when commenting on news. This is a good reason you should just steer clear of comments sections and social media posts online. Instead, go to trusted, well respected, and reviewed sites with actual industry experts.

Incidentally he mispronounces the name Larrabee (as Laura-be). It is pronounced more like Lair-a-bee.

Parallel Sound from the Past

Parallel Sound from the Past

Back in the 90’s, computer audio devices were really limited. If you were relatively rich, you could afford a $150 Sound Blaster, or maybe a $75 Adlib. If not, you were limited to the very humble PC speaker. It turns out, however, there was one other option that didn’t get a lot of visibility.

The Covox Speech Thing (and a similar device called the Disney Sound Source) was an external audio device attached to the printer port and could output digitally generated sound. The device was a criminally simple 8-bit DAC created with a resistor ladder, an analogue output plug, and ran off simple digital signals from the printer port of the PC. How simple was it? So simple you can easily make it yourself.

Necroware does a great job covering the device, how to make your own, and gives you a full tour of the device as well as 90’s software you can use with it. Most notably, Tracker software which gave me tons of fond memories.

Links:

How to Market your Game in 2022

How to Market your Game in 2022

Chris Zukowski helps lots of game developers market their games. He goes over the most recent data and shows the best practices for marketing your game on Steam. It’s an interesting mix of understanding your market and how to manage the algorithms on various platforms to maximize your wishlist subscription rate.

  1. The genre of your game is probably THE most important deciding factor if you’re going to do well financially. Passion side projects can be anything, but genre matters if you need to make money. Some genres are cash cows while others will likely be near dead ends.
  2. Steam wishlists before ship are THE new success metric for your upcoming game. Your goal is to generate a tipping point of people who wishlist your game before shipping (TLDR: it is about 7000 wishlist subscribers). Once over that point, you will start showing up in the Steam popular upcoming games lists. Without that – good luck getting found.
    • Wishlists convert into purchases at launch at one of the highest levels of marketing (wishlists convert at 1-20% – most good internet marketing is a 2% conversion)
    • Getting potential buyers to add you to their Steam wishlist do not come fast nor easy. It takes dedication, consistent effort, and time. This is good because you can try lots of different things over that time. You’ll need to do lots of campaigns covering the game 1-2 years before ship to get to your goal count of wishlist adds.
  3. Steam capsules (the little graphic that shows up in the store for your game)
    • You must remember: More people will see your steam capsule ad than will even buy it. It must draw them in and tell them everything. There are unwritten visual rules about how these are made for different genres (crafting games have to have a hammer, space games must have spaceship rear-ends, etc)
    • It must be highest quality thing you make – do whatever you can to hire a good artist if you spend no other money
  4. Promotions – 90% of your new Steam wishlist adds will come from online festivals and streamer coverage. Period. Here’s where you’ll find your highest ROI (in order):
    • Do online festivals! Do not do in-person festivals, they are a waste of time/effort/money. You’ll get many more exposures via an online festival than you could ever hope to get in even the most fantastic in-person weekend festival.
    • How do you find online events? https://howtomaketagame.com/discord – look for #EVENT-REMINDERS
    • Streamers – you must have a demo they can play immediately. The demo should be kept up basically forever so they can come back, others can try, etc.
      • Find streamers you want to target on SullyGnome or playboard.co. They break down streamer demographics so you can find ones that play your genre.
    • From this point and below, results will be an order of magnitude less:
    • Tik-tok has been somewhat good but has an uncertain future with possible bans coming.
    • Reddit – chancy but can work if you find your target audience.
    • Press – has decreased a good bit but does still work.
    • Twitter/Imgur/social media – pretty much does not work. Almost everyone gets lower than 100 Wishlist adds via this method – even at their best.

Install Stable Dreamfusion on Windows

Install Stable Dreamfusion on Windows

I wrote about Stable Dreamfusion previously. Dreamfusion first takes normal Stable Diffusion text prompts to generate 2D images of the desired object. Stable Dreamfusion then uses those 2D images to generate 3D meshes.

A hamburger

The authors seemed to be using A100 nVidia cards on an Ubuntu system. I wanted to see if I could get this to work locally on my home Windows PC, and found that I could do so.

System configuration I am using for this tutorial:

  • nVidia GeForce GTX 3090
  • Intel 12th gen processor
  • Windows 10

Setting Stable Dreamfusion up locally:

Step 1: Update your Windows and drivers

  1. Update Windows
  2. Ensure you have the latest nVidia driver installed.

Step 2: Install Windows Subsystem for Linux (WSL)

  1. Install Windows Subsystem for Linux (WSL). WSL install is a simple command line install. You’ll need to reboot after you install. You want to make sure you install Ubuntu 22.04, which is the default in Feb 2023 since that is what Stable Dreamfusion likes. Currently WSL installs the latest Ubuntu distro by default, so this works:
    wsl –install
    If you want to make sure you get Ubuntu 22.04, use this command line:
    wsl –install -d Ubuntu-22.04
  2. After installing WSL, Windows will ask to reboot.
  3. Upon reboot, the WSL will complete installation and ask you to create a user account.
  4. Start Ubuntu 22.04 on WSL by clicking on the Windows Start menu and typing ‘Ubuntu’ or you can type Ubuntu at a command prompt and type ‘Ubuntu’.

Step 2b (optional): Install Ubuntu wherever you want on your Windows system. By default it installs the image on your C:\Users directory – which is kind of annoying.

Step 3: Install dependent packages on Ubuntu

  1. If you don’t have Ubuntu started, go ahead and start Ubuntu 22.04 on WSL by clicking on the Windows Start menu and typing ‘Ubuntu’ (or you can type Ubuntu at a command prompt as well). A new shell terminal should appear.
  2. You need to install the nVidia CUDA SDK on Ubuntu. You’ll choose one of these two options:
    • You will then get a set of install instructions at the bottom of the page (wget, apt-get, etc). Simply copy the lines one by one and put them into your Ubuntu terminal. Ensure each step passes without errors before continuing.
    • The ‘sudo apt-get -y install cuda’ line will install a lot of packages. It can take 10-15 minutes.
  3. Install python3 pip. This is required for the Dreamfusion requirements installation script.
    • sudo apt install python3-pip

Step 4: Install Stable Dreamfusion and dependent packages

  1. You should now follow the install instructions found on the Dreamfusion page.
  2. Clone the project as directed: git clone https://github.com/ashawkey/stable-dreamfusion.git
  3. Install with PIP: Install the pre-requisites via pip as directed on the Dreamfusion github page:
    • pip install -r requirements.txt
    • I also installed both optional packages nvdiffrast and CLIP.
    • Add this export line to your .bashrc to ensure python can find libcudnn:
      export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH
  4. I did not install the build extension options
  5. Exit and restart your shell so that all path changes take effect

Step 5: Run a workload!

Follow the instructions in the USAGE section of the Dreamfusion instructions. Instead of ‘python’ use ‘python3’. They have a number of things you can specify like negative prompts, using the GUI interface (which does not work under WSL),

The very first run will take a long time. It will download several gigabytes of training data, then train 100 epoch’s, which can take up to an hour.

$> python3 main.py --text "a hamburger" --workspace trial -O 
$> python3 main.py --text "a hamburger" --workspace trial -O --sd_version 1.5 
$> python3 main.py --workspace trial -O --test 
$> python3 main.py --workspace trial -O --test --save_mesh 

Check Your Output:

Look in the results directory under the workspace name:

.\stable-dreamfusion\<workspace name>\mesh\ #directory holds the .obj, .mat, and .png files
.\stable-dreamfusion\<workspace name>\results\ #directory holds a mp4 video that shows the object rotating

Copying them to Windows:
All Windows drives are pre-mounted in \mnt\<drive letter>\ for WSL.
Ex: \mnt\c\
So you can copy the output files to your windows side by doing:
cp -rP .\<workspace name> \mnt\c\workdir\

Looking at the generated meshes with materials:

  1. Install Blender
  2. File->Import->Wavefront (.obj) (legacy)
  3. Or, use 3D Viewer (though it seems to have issues with material loading at times)

Fixes:

  1. You might get an error about missing libcudnn_cnn_infer.so.8
==> Start Training trial Epoch 1, lr=0.050000 …
0% 0/100 [00:00<?, ?it/s]Could not load library libcudnn_cnn_infer.so.8. Error: libcuda.so: cannot open shared object file: No such file or directory

add this to your .bashrc to ensure it can find libcudnn:
export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH

2. If you load the object in Blender but it doesn’t load the texture maps, try Alt-Z

Links:

Comparing AI art generators for common artist workloads

Comparing AI art generators for common artist workloads

Gamefromscratch decides to do side-by-side results tests on DALL-E 2, Stable Diffusion, and MidJourney for a variety of art generation tasks.

His conclusion is they are not going to replace artist for all tasks, but for concept art, pixel art, and some other simple tasks these AI generators can replace artists.

Leaking corporate code via chatGPT

Leaking corporate code via chatGPT

After catching snippets of text generated by OpenAI’s powerful ChatGPT tool that looked a lot like company secrets, Amazon is now trying to head its employees off from leaking anything else to the algorithm.

This issue seems to have come to a head recently because Amazon staffers and other tech workers throughout the industry have begun using ChatGPT as a “coding assistant” of sorts to help them write or improve strings of code, the report notes.

While this isn’t necessarily a problem from a proprietary data perspective, it’s a different story when employees start using the AI to improve upon existing internal code — which is already happening, according to the lawyer.

Learning Quaternions

Learning Quaternions

3blue1brown makes lots of good videos on mathematics. One of those videos is how to visualize and understand quaternions.

Quaternions are a higher dimension system that can be used to describe 2D and 3D rotations. How they work, however, is often much harder to understand and more complex than understanding simple matrix rotations.

They made a very good video on the subject, but it required me to stop a lot and spend time thinking. These are complex concepts and almost more complex to visualize or conceptualize in your mind.

What’s nice is there is a written page that goes over these concept as well at https://eater.net/quaternions. I found this was much easier to digest than a fast-running video.

Also, if you want to play with the visualization in realtime, they even have a super-cool tool that lets you play with Quaternions in 2D, 3D, and 4D:

https://eater.net/quaternions/video/rotation