Categories
Geek / Technical Marketing/Business Personal Development

I’m Going to the No Fluff Just Stuff Conference Today #NFJS

I’m not a Java developer, but I am going to the “The conference series for JVM software developers” called No Fluff Just Stuff today here in Des Moines, Iowa.

Why? My main tool has been C++ for years. I haven’t programmed in Java since college, and that was over a decade ago.

Partly because it’s a local conference. I don’t have to travel or get a hotel.

Partly because my day job is paying for it. When you are offered free training, you take it.

And partly because I didn’t actually know it was a Java-specific conference when I signed up for it. /me looks down at his shoes sheepishly.

The itinerary I put together for the next few days is geared towards the general talks about software architecture, metrics, and other topics that can translate well outside of a specific programming language or platform. I am especially interested in the microservices architecture session, ever since I first heard about it at an Agile Iowa presentation.

There’s even a magician among the speakers, so it should be entertaining.

And who knows? Maybe I’ll pick up some cool ideas from the Java practitioners.

I’m a bit disappointed that the Android tablet I’m bringing doesn’t seem to have as full-featured an app as the iOS version. Somehow at a Java conference the Java-oriented platform doesn’t let you download slides? One of the Play store’s reviews for the NFJS app complained about needing to carry around not only his own Android tablet but also the conference-provided iPad, which was awkward. I wonder if I’ll be doing the same today.

Anyone else going?

Categories
Geek / Technical

What Do You Wish You Knew More About?

As a child, I consumed information around me. When I discovered a topic existed, such as the Pacific Theater of World War II or how to create your own pop-up books, I wanted to learn everything about it. I read books, watched the History Channel back when they actually showed history (oh, the History Channel is this generations’ MTV, isn’t it?), asked questions, and pretty much did whatever I could to feed my passion for learning.

As I got older, I found I had to be more selective with my attention. I had more demands on my time. I couldn’t immerse myself in a single topic unless it was for school or work.

Or at least, I felt that way.

I have friends, grown-up friends, who I can say are still passionate about things I used to love. A few of them geek out when NASA or the ESA publicize their latest successful missions. Another loves all things dinosaurs.

And I realize how much I have missed about being passionate about a topic to the point of becoming an amateur scientist or historian.

The cool thing? I can immerse myself in something now, and I’m old enough to understand it a lot more than when I was a child. And we know so much more today than we did just 10 or 20 years ago, so there’s more to learn.

And even cooler, we’re still learning. We now know what Pluto looks like, and soon we’ll know more about the makeup of Jupiter. We found a regaliceratops in Canada last month when we didn’t even know it existed before.

Do you wish you knew more about theatre? About movie-making? About the lives of authors? How to start a business? Weigh-lifting and nutrition? Sustainable gardening? Game design and development?

Did you ever wonder what was in the ocean, whether here on Earth or on Neptune? Or have you ever thought about how thinking actually works?

And did you ignore the curiosity, or did you let it lead you to answers and more questions?

Categories
Geek / Technical

You Have to Actually Do the Work to Claim You Can Do It

Yesterday at the day job, a coworker and I were discussing coding challenges. He was talking about how he came across one that, even though he knows how he would approach it, it would still be fun to do.

He said at one point, “I’ve never actually written a program to solve Sudoku.”

Another coworker chimed in to say, “Yeah, but you know you could write one.”

First coworker: “True, but while I know I could, I never have.”

And they went back and forth for a bit, with one arguing that he’s more interested in tackling the unsolved problems of the world rather than work on problems he knows he can solve.

I thought about his position, and I have concluded that he’s wrong.

I agree with the desire to work on something worthwhile. Writing your own Sudoku solver when others already exist isn’t likely to result in any significant, lasting impact. Solving engineering problems such as aiming NASA’s New Horizons at Pluto accurately over the course of almost a decade? That’s gratifying work.

But there’s a difference between knowing you could write a “Hello, World” program and being able to say you’ve done it, and it’s not just about bragging rights.

Here’s a “Hello, World” in C++ that took me a mere moment to write just now:

#include <iostream>

int main()
{
   std::cout << "Hello, World!" << std::endl;
   return 0;
}

I’m confident I don’t need to run it through a compiler to make sure I wrote it correctly. I write C++ code often enough that something this simple usually works just fine the first time, although feel free to tell me I made a mistake if you spot one.

But it wasn’t always this easy for me. Before I wrote code regularly, I’d make mistakes that would seem boneheaded to me today.

For instance, I might forget to include the iostream header in the first place. Coming from a QBasic background, where PRINT was a built-in command, it was odd to have to include a separate header to do something so basic as output text.

Another example is forgetting which way the streaming operators go for output versus input. << or >>? When I wasn’t writing code daily, I would have a hard time writing new code that used cin or cout because of this issue.

I had no idea there was a need to flush the output when I first started coding in C++, so I might leave off the std::endl, probably because I didn’t know it existed at first. I would wonder why my program wouldn’t spit out the text I expected to see, or why only part of the text seemed to make it and the rest was missing.

And of course, I might accidentally forget a semicolon or two.

That’s a lot of potential mistakes for a “Hello, World” program, and I am sure I ran into every single one and possibly more.

Before I was considered an expert C++ programmer, I could argue that I know how to write a “Hello, World” program. In general, that is. I knew the trick was to use some command to output a specific string, just like most programming languages.

Boooooooriiiiing! I’m above this. I want to do something more interesting!

I remember feeling this way, but I also remember the feeling the first time I tried to read some source code I found on the Internet. I couldn’t follow it! Everything was more complicated than it needed to be, and they used “advanced” things such as std::vector.

It was around this time that I found a good C++ book and followed the exercises in the chapters. I used to skip them because I thought, “Yeah, I get the gist.”

But actually doing the work helped me internalize the lessons. I didn’t have a vague, general understanding of the code. I KNEW the code.

It’s like the difference between being told about a majestic view of the mountains are and seeing it for yourself. One is story, and the other is experience.

“Hello, World” is pretty easy to master, but writing the code to handle input correctly and spit out appropriate output builds upon the knowledge you have for doing this easy work. And the new code will have its own common pitfalls that experts don’t run into anymore but that trip people up when they first encounter it. Did your stream try to convert the user’s input into an integer and fail? Are you handling this situation correctly?

Yeah, you might get the general idea and know you COULD write the code, but until you do, you don’t get to claim expertise in writing such code. Knowing the mechanics of diving isn’t the same as knowing how to dive. Knowing how to use color to simulate shadows and lighting doesn’t mean you know how to paint a bowl of fruit.

I would love to be involved in a worthwhile, complex, never-before-solved project, but it’s hard to demonstrate competence when I’m struggling with common mistakes in the solved problems.

You have to put in the work. Until then, you’re untested.

Categories
Game Design Game Development Geek / Technical Personal Development

How to Find Indies in Iowa

When I started out as an indie game developer, I found a home on the Internet. It was a set of forums dedicated not just to game development but also to making a living from it.

And while daily online communication, or maybe just procrastination, was helpful, it was nothing compared to the monthly face-to-face meetups we had in Chicago. We met either downtown at a Dave & Buster’s or at a Starbuck’s in Schaumburg.

It was kind of a loose mastermind group, in which we tried to set goals for the next meeting and held each other accountable to them. We had a range of completely newbies to experienced and successful business owners, and we all met, tried out each other’s games, and gave feedback.

So when I moved to Des Moines, Iowa, I immediately wondered where a similar collection of indies were.

They’re hard to find, so I decided to put a summary on this page in the hopes that it will be easier for everyone to connect with groups they might not have otherwise known existed.

The Iowa Game Dev Friendship Club has a mailing list at https://groups.google.com/forum/#!forum/igdf. It’s made up of indies and enthusiasts from all across the state of Iowa, especially out of Ames and Iowa City which is where our major universities are.

There is now an associated Iowa Game Dev Friendship Club Facebook group.

Sometimes a good number of members show up at a game jam, but otherwise they don’t try to organize massive face-to-face meetings. There have been Des Moines-area meetups in the past, such as the Midwest Mingle.

If you’re in Ames or Iowa City, your local university has a game developer organization. Iowa State has the Iowa State Game Development Club, which has an enthusiastic Twitter account at @isu_gdc and a ISU Game Dev Club Facebook page.

University of Iowa in Iowa City has EPX Video Game and Animation Studio, formerly known as Animation and Interaction at the University of Iowa. You can find them at their weekly meetings and at their EPX Facebook group.

UPDATED 2016: The International Game Developers Association has a Des Moines chapter. You can find them on Twitter (@igdadsm) and Facebook (https://www.facebook.com/groups/227434834257939/.

Did I miss anyone? Is there an Iowa indie game developer meetup you’re hosting that I don’t know about? Let me know, and I’ll update this list.

Categories
Game Development Geek / Technical

How Supreme Commander Handled Rendering

I found this neat exploration of the insides of Supreme Commander, the spiritual successor to one of my favorite games, Total Annihilation.

Specifically, in Supreme Commander – Graphics Study, Adrian Courrèges takes you through a tour of the rendering of a single frame of the game.

Animations show each step in the process, making it easy to see how you can go from culling a subset of the terrain to adding shadows to rendering meshes and particles to overlaying the UI.

Categories
Geek / Technical Personal Development

Taking Advantage of Downtime #8035dsm

I’m not a huge live music fan.

I mean, when I go, I find I enjoy myself, but I don’t tend to actively seek out concerts and bands to listen to.

This weekend is the 80/35 music festival here in Des Moines, and my wife and I go every year, partly because she’s a big live music fan.

There are local bands, but the festival tends to find big names, such as Modest Mouse, Wu-Tang Clan, Cake, and The Flaming Lips. People I would have heard of as a casual music fan.

Last night we saw Wilco play, and today we’re looking forward to Weezer.

It’s like the dream of the 90s is still alive in Des Moines.

We like to bring a blanket, set up a few lawn chairs, and hang out with friends while enjoying the music from afar.

Wilco at 80/35 from afar

And I like to bring my doodle book. Since the beautiful people of Iowa tend to show up at music festivals, and I’m just sitting there, it’s like getting a free life drawing class in, although with less nudity.

Sometimes people sit still for long periods of time, and sometimes they move quickly and I can only get the barest sketch in.

Doodle Book from 80/35

I like people-watching, and I enjoy doodling, even if I’m not a trained artist. So I enhance the experience of listening to live music with a fun way to practice my drawing skills.

It’s not work, so it isn’t like I’m forcing myself to squeeze every ounce of productivity out of my day, ruining any sense of enjoyment I have for life during what is supposed to be my downtime.

But at the same time, improving my drawing skills can help with my game design. If I can sketch out something that’s in my head more accurately, it makes it easier to communicate my intent.

But I don’t set a quota of drawings. I don’t force it. I just draw.

And I found doodling is a lot less annoying to the people around me than practicing my analytical skills by wondering aloud about the design of the light show or the logistics of setting up the concert. B-)

Categories
Geek / Technical

Finding the Missing WordPress Text Editor Toolbar After Upgrade

I recently updated my self-hosted WordPress install, and everything seemed fine until I went to write a new blog post. That’s when I found that the toolbar buttons were missing.

I don’t use the Visual editor in WordPress, preferring to type the text/HTML out myself. The Visual editor’s toolbar was available.

I found a lot of people running into this issue over the years. Suggestions ran from reinstalling the WordPress installation to reinstalling TinyMCE in the wp-includes/js directory to permissions issues to disabling plugins.

I’m partially annoyed because TinyMCE is for the Visual editor, not the Text editor, and searching for the Text editor specifically still gives you this advice which is a waste of time.

But anyway, I determined it was my All-in-One SEO plugin being out of date. Once I updated it, I was able to see the toolbar in my Text editor again.

I hope this helps someone else fix similar issues much faster than I did.

Categories
Geek / Technical Personal Development

When Standing on the Shoulders of Giants Isn’t the Right Thing to Do

In almost any endeavor, you can go it alone, or you can get help. You can spend all of your time researching and practicing and tweaking until you figure things out, or you can buy a book or hire a consultant and have someone tell you what they have already figured out after years of his/her life were spent on the topic.

Leveraging the work that has been done by others is a shortcut, and it is perfectly fine to take them. If you want to learn how to do software development, you don’t need to build your own computer architecture, as you can leverage the existing Von Neumann architecture in most modern machines. You don’t need to start from first principles. Someone already figured it out, and you can take advantage of it.

This kind of advice is ingrained in our culture.

Don’t reinvent the wheel.

Don’t spend your time doing that task when you can hire someone to do it for you faster and at a level higher quality, which saves you time, too.

This is the way it has always been done, and it’s the best way we know.

On the other hand, sometimes we advance the arts and sciences by starting over and exploring our assumptions.

In Bret Victor’s talk The Future of Programming in which he pretends to be an IBM engineer from 1973, complete with transparencies and a projector, he talks about the problem of people who think they know what they are doing:

He starts out explaining the resistance to the creation of assembly code by the people used to coding in binary. Coding in binary WAS programming, and assembly was seen as a waste of time and just plain wrong.

He goes on to talk about exciting advances in programming models from the late 60s and early 70s, and extrapolates some tongue-in-cheek “predictions” about how computers will work 40 years in the future, predictions that lamentably did not come about. Today we still code much the same way people did back in the 60s.

Ultimately, he warns that there is a risk to teaching computer science as “this is how it is done”.

The real tragedy would be if people forgot you could have new ideas about programming models in the first place.

The most dangerous thought that you can have as a creative person is to think that you know what you’re doing, because once you think you know what you’re doing, you stop looking around for other ways of doing things. You stop being able to see other ways of doing things. You become blind.

Game design applies here, too. Video games from the 70s, 80s, and 90s were quite varied. People were figuring them out because no one knew what they were. They tried everything.

Eventually some key genres popped out of this period of experimentation, and some control schemes and interfaces became common. It’s hard to imagine real-time strategy games without Dune 2‘s UI conventions.

Five years ago, Daniel Cook wrote about reinventing the match-3 genre:

It occurred to me that game design, like any evolutionary process, is sensitive to initial conditions. If you want to stand out, you need to head back in time to the very dawn of a genre, strike out in a different direction and then watch your alternate evolutionary path unfurl.

When people think of a match-3 game, they have something in mind because all match-3 games tend to be similar. Triple Town ended up being quite different, yet it was still recognizable as a match-3 game, and people loved it.

Some people merely need to leverage existing infrastructure. People are using Unity for game development because, much like Microsoft’s XNA before it, it handles all of the boiler-plate for you, and it also provides a lot of the technical tools in an easily-accessible way so you can focus on the development of the game rather than the technical details of making a game.

But some people are pushing what’s been conventionally thought of as possible. Spore, for instance, had to procedurally generate animations for characters that weren’t prebuilt, which meant someone had to figure out how to do so. There was no existing 3rd-party library to leverage. The shoulders of giants here weren’t high enough.

I’m part of a book club right now involving algorithms. We’re reading Steven Skienna’s mostly-accessible book The Algorithm Design Manual, and it’s been enjoyable and challenging. I haven’t studied algorithms since college, and I kind of wish I could go back and check my notes from class.

But what bothers me when reading this book is the warning about trying to completely invent a new algorithm on your own. Skienna argues that most problems can probably be adapted by sorting the data or otherwise thinking about it in a way that an existing algorithm can solve it.

And he’s right.

But someone had to have figured out these algorithms in the first place, right? Someone saw a problem and had no way to solve it, so he/she came up with a way, optimized it, and published it.

But today I’m expected to just learn what they did and use it, and I feel like I’m being told to stay away from actually trying to figure out a better way on my own, as if all of the algorithms that can be invented have been invented.

And if I just want to solve particular existing problems, it’s probably practical advice.

But if I want to explore an entirely new kind of problem, what am I supposed to do with old assumptions and solutions? Square pegs don’t go in round holes, and I don’t think we want a future where we are taught that round holes are the only kinds of holes in existence.

Categories
Game Development Geek / Technical

Fun with Game Physics Bugs

I was working on a game involving leaf raking, and I tried adding physics code to it. I researched a lot until I came across Randy Gual’s Custom 2d Physics Engine tutorials.

My own implementation leaves a lot to be desired so far, as can be seen in this YouTube video I uploaded of leaves ricocheting when I turned off damping to see what was happening:

Somehow they seem to pick up more speed after some hits but not always. I’m sure it has something to do with how I calculate the velocity along the normal of the collision.

Categories
Geek / Technical Personal Development

Learning about Art

Yesterday I went to the Des Moines Art Festival with my wife. Vendors from all over the country put their works on display and attempt to sell them, and the variety always amazes me.

There are oil, acrylic, or watercolor paintings. There are photographs. There are ceramic sculptures. There are wood carvings. There are metalworks, glassworks, and mixed media pieces. There are displays, frames, furniture, clothing, jewelry, baskets, kinetic sculptures, and plateware.

Some pieces are functional, and some are abstract. Some were gorgeous, and some were fascinating to look at. Some I could see having a place in my home, and some I could see never making it in through the front door. B-)

Almost all of them were priced outside of what I could afford, but it was still enjoyable to browse. It’s kind of like going through a museum and seeing what’s possible, and I found myself delighted by finding out about things unlike anything I’ve never heard of or seen before.

For instance, I learned about “scissor drawings”, and the artist explains how she creates her work in this video:

I learned what a skilled hand can do with wood, creating 2D art that looks three dimensional with no paint or dyes.

I learned about glass sculptures that look like architectural scale models.

I learned that some people are inspired by nature, found objects, inherited family heirlooms, and by abandoned places. Some people had artistic statements that were straightforward, some were general and vague, and others seemed to struggle with the idea of mixing commerce with art.

I had one conversation with an artist about the festival, and while I can’t remember exactly how she said it, she said, “One of the purposes of art festivals is to get people to be aware of what’s out there. It’s not all economics.”

So despite walking away with nothing, I feel I gained quite a bit simply knowing more about the artistry that’s out there in the world.