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.
In game design, balance is important. If you create a variety of options for the player to choose from, but one is superior to the rest, then the rest might as well not be in the game because the player will always choose the the best item.
Dominant strategies are often an accident. Whether it is a lack of play-testing or an oversight, designers don’t usually put them in on purpose.
But it is easy to see how the existence of a dominant strategy ruins things. Instead of having a lot of choices as the designer intended, the player effectively has none.
But in most cases, the player is trying to optimize their play, and the existence of an always-optimal choice means the player is always going to make that choice.
There are also choices that are always terrible. They also might as well not exist because the player will never choose it over a superior option.
In real life, balance is not guaranteed. People make all sorts of choices in all sorts of circumstances.
For many people, these choices aren’t real choices at all.
For instance, who to vote for. While we seem to be gaining a U.S. presidential candidate every other week, eventually it will get pared down, with our two-party system causing many people feel like they only have two choices: bad, and worse.
Technically, they have two other choices: not voting, or voting third party. But many feel that these aren’t real choices. One abdicates responsibility, and the other feels like you barely doing any better since the majority of people think they only have two real choices and so your third party vote ends up having a negligible effect. You feel like you’re railing against the wind because not enough people joined you.
In other cases, the choices might be there; you just can’t take advantage of them.
In some countries in the world, practicing your faith is deadly. Talking about the problems of the government is deadly. Protesting is deadly. You could say that the citizens still have a choice, that they are independent, but it would take unusual courage and strength for them to stand against their oppressors. It’s heart-breaking. The door to the cage might be open, but those armed guards don’t look like they’ll let you walk through them unscathed.
In countries like Greece, bad policies have resulted in the majority of the population paying for the sins of a few major players. The people can’t leave the situation easily, and it is frustrating because the way out of the situation isn’t obvious.
It’s easy to take our independence for granted. People have fought for our rights for centuries, whether it was winning our independence from foreign enemies or our livelihoods and dignity from domestic ones.
People can complain about the President’s policies or the way Congress can’t seem to cooperate to put together meaningful legislation, and they don’t generally need to worry about retaliation from the government.
You can leave a job with terrible conditions and find another, or start your own business, or go on strike and demand better conditions. Yes, some choices here are more painful or terrifying, but not overly so. We as a nation frown upon monopolies specifically because the lack of real choice is seen as harmful. We get concerned when one company seems to be able to set their own terms independent of competition or the health of their workers.
You can change your religion, and aside from sharing in awkward family meals or attempts to make you feel guilty, the consequences don’t tend to result in a shortened life expectancy.
Sometimes the guards to the cage door are only ourselves. Maybe we’re blinded to the opportunities, or we don’t have all of the information to make an informed choice, or it takes more effort than we realize, or our circumstances make it difficult, or maybe we aren’t bothering to participate.
But we can fix or change any of those circumstances. We can learn more about the situation. We can make plans. We can get help.
Don’t waste your opportunities. Don’t take the easy route. Don’t go with the weaker strategy in life just because everyone else around you is using it.
Take advantage of your independence. You have choices, and even if it is hard to do so, you can make them.
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.
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.
He will still be working on Ludum Dare and isn’t going away, but he’s no longer going to try to make games for a living.
Part of the reason is because he’s not feeling any younger and is looking to settle down. So I won’t post that potentially embarrassing picture of him eating at the Ludum Dare meetup for GDC 2011.
But part of the reason is because he’s concerned about a lack of opportunity in game development:
…my point is that it’s no longer about just making games. It’s not about games that look good, games that play well, games that have a message, games that are different, games in a popular genre or theme; No, instead it’s all about games that stand out, and games people want. You can’t advertise or market your way to success. Those things help, but only if the game itself has that potential. Almost every successful indie you know has put multiple years in to their projects. And for every indie you know, there are hundreds you don’t. It’s not practical to just make games and hope to make a living.
We really did our best with Sunset, our very best. And we failed. So that’s one thing we never need to do again. Creativity still burns wildly in our hearts but we don’t think we will be making videogames after this. And if we do, definitely not commercial ones.
And the problem is that just making a good game is no longer enough. The job of the modern indie developer is to make a good game & put it in front of millions of people.
And I think that means that we need to change how we think of indie game developers. From basement coders to people who understand marketing & business. After all, what we’re doing is running small businesses.
It sounds like the easy days are behind us, and it is going to take real work from now on to not only make a good game but also to do the ugly, messy things that it takes to run a business, such as marketing and sales.
But wait…hasn’t this always been the case?
I remember reading about the swelling of the supply in games on the Indie Gamer forums ten years ago. Someone was nice enough to keep track of the releases from week to week, as well as the top games, and eventually a conclusion was reached: if so many games are getting released every day, and it takes you anywhere from months to years to make a game, that’s a lot of competition you have to wade through to get noticed, and that’s only if you don’t count the many games released AFTER you’ve released yours.
So marketing and promotion were seen as key differentiators. People dedicated to these roles popped up because there was a big opportunity. Game developers wanted to work on games and outsource their marketing.
And this was back during the popularity of Flash portals, before the modern mobile era.
Talin says there are lots of reasons for failed products. Crappy products, crappy marketing, crappy distribution, crappy placement at the stores etc.
But, ultimately it usually comes down to the fact that not enough people wanted to play your game. Especially in this day and age when you can put your game up just by uploading it to some file website. If your game is truly something tons of people get addicted to it will spread around this new wired world. If on the other hand people don’t want your game nothing is going to make them want it.
People were still using shareware to market their games back then.
So, yes, the tools to make games today are easier to access than ever, which means anyone can make games, which means anyone is making games.
It’s crowded, and it is hard to stand out.
But it has always been a business, and most of the serious indie game developers knew this fact. It isn’t some new revelation. The tactics might change, but the understanding that you needed to do market research and get people to know your game even exists was always there.
I don’t like cliché, but “If you build it, they will come” isn’t a viable, sustainable strategy for a game developer. It hasn’t been one in a very, very long time. Maybe when the first personal computers were being released, and your competition was almost no one, then sure, just having the only game in town might work.
And if you are only interested in making games as a hobby, then go to town. Make the games you want to make and see if people might enjoy them. Maybe you’ll make some pizza and beer money as a bonus!
But if you are interested in a sustainable living making games on your own, it’s hard because you aren’t just making games anymore. You’re doing market research. You’re doing product management, which is different from product development, which is different from project management. You’re doing contract negotiation, hiring, firing, accounting, accounts receivable, accounts payable, and more.
And if you are doing it by yourself, you still wear all of those hats even if you neglect a number of them.
But none of this is really new. It’s just an awkward truth that has to be learned by each generation.
I was at a baseball game last night, and I was disappointed.
It wasn’t just because the Iowa Cubs blew an early lead and lost it in the end. It was because while I expect the major league players to give up on first base runs, I expected the minor league players to try harder.
In baseball, if you get a hit and think you won’t even get a chance to run to second base, you are allowed to overrun first base. That is, you don’t need to keep your foot on first base to stay safe. You can run past it, and so long as you don’t indicate that you’re going for second base, you just need to focus on getting to first base before the opposing team can force out.
In little league, we were taught that even if it looked like the other team was easily going to field the ball and get it to first base before you could get there, you run as fast as you can. They might make a mistake and throw it over their teammate’s head. They might panic because it could be close. It’s baseball. Anything can happen in baseball.
And yet, I watched time and time again as the minor league players kept slowing down before getting to first base, as if it was a foregone conclusion that they were out.
From my seat in the stands it might have been hard to tell, but it looked like a number of those plays were closer than their lack of urgency implied. If they gave it a bit more effort, if they hadn’t given up, how many base hits would they have had that night?
Worse is that there were all of those people in the stands, many of them children. They’ll see this example and take it with them to tee-ball or little league. And why not? It’s what the real baseball players were doing.
And that’s what was more disappointing than the loss. It was the example being set.
When Clint Dempsey tears up the referee’s notebook, he’s setting a bad example. He’s supposed to be the international veteran in that game, yet he acted like a child not happy that his parents are telling him that there are rules he has to follow.
When you show up chronically late to your job, you’re setting an example (by the way, Self, that was directed at you).
When you yell and scream at your spouse in front of your children, you are setting an example.
When you post petty, ugly, or hateful things on Facebook, you are setting an example.
And these examples send messages to people, mainly “This is how a real ______ acts.”
Fill in the blank with “baseball player” or “software engineer” or “Christian” or “partner in a loving relationship” or any role or position you can see someone holding.
How are you acting in your roles in life? If you were a stranger witnessing your actions day to day, would you be proud of the example you’re setting?
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.
Over a decade ago, while I was still in college, I went to my first indie game developer meetup. It was in a suburb of Chicago at a Starbucks, and it involved mainly people who participated in Dexterity Software’s game development forums, which are now the Indie Gamer forums. My first meeting’s minutes are still online: Indie Game Dev Meeting Summary December 2004
It was kind of a mastermind group. We showed off what we were making. Or rather, they did. I never had anything to demonstrate. I played their games and gave feedback, and we talked shop and set goals for the next month’s meeting.
Some people traveled from downstate to make it out to these meetings, which alternated between that Schaumburg Starbucks and the Dave & Buster’s in downtown Chicago.
I remember while packing up to leave one meeting I asked everyone, “How do I get better at programming?” At the time, I felt like I wasn’t making a lot of forward progress and it was mostly due to my lack of experience and knowledge.
I remember getting a few looks, there was a pause, and then someone said to nods of agreement, “Just…do it.”
It didn’t feel like very helpful advice, but I chalked it up to the idea that no one actually knows how they get good at something. When you are good at it, you don’t remember how you got there because your goalposts are always moving, and if you aren’t good at it, you don’t know how to change that fact.
Unless you ask, of course, and “just do it” actually is fantastic advice.
I learned C++ in college, but it was Visual C++ 6.0, and it wasn’t consistent with the C++ Standard, and I think I was taught wrong. I remember reading code online and not understanding why people were needlessly using “advanced data structures” such as vectors and sets. I taught myself BASIC on the Apple II c+, but programming in C++ was not fun or enjoyable.
But then I found some advice in the GameDev.net forums to read Accelerated C++: Practical Programming by Example. I bought the book, forced myself to read it from the beginning and do the exercises, and wouldn’t you know it, it turned out that C++ wasn’t so bad. What were considered advanced topics in college were introduced in the first few chapters.
I was still struggling to be productive with programming. I was challenged to find tools and libraries to make my job easier, and it is how I learned about a sprite engine, which I blogged about extensively.
I learned how to use libSDL. I succeeded at my first game jam when I attempted to work on Game in a Day, which was hosted by people at Garage Games. Kinda. I made something playable. It just wasn’t what I wanted to make originally.
And I learned a ton participating, including the first time I had an overwhelming sense of fear that I had no idea what I was doing and should stop, even though I had no rational reason for listening to this fear. I pressed on somehow, but I was shocked at how that experience challenged me. I didn’t expect it.
I had that almost tangible anxiety a second time, probably during my first Ludum Dare compo, but it was less powerful and I recognized it and pushed through it, and I haven’t felt it since.
I started finishing games. I built confidence in my abilities. When I read my old blog entries, I read about someone who struggled with focus and time management, someone who felt like he wasn’t putting in enough effort to learn and work on games.
But over the years, chipping away at ignorance made a difference. Today I’m seen as not only an expert in C++ but also in software development in general. I still find myself surprised by C++ today, though. For instance, sometime in the last couple of months I learned that I could forward declare more often than I thought I could.
A decade ago I couldn’t code my way out of a wet paper bag. Today, I could rearchitect a complete game halfway through its development without so much as a flinch.
Most of my experience and knowledge of software development came about due to my persistence with working on my own game projects. I did research on best practices. I sought answers to the problems I ran into. I wrote code outside of class and outside of my day jobs.
I just did it.
And while I might not have felt I was making a lot of progress on any given day, over a decade of such days resulted in a ton of growth.
It could be argued that a more focused effort with a lot more time dedicated to it would have been better, that I could have gotten to the same point years earlier.
But the advice would still be the same. You want to learn how to be a better programmer, artist, game developer, mathematician, engineer, or designer?
Just do what they do, and push through the “I suck” phase until you get the hang of it, push through the fear where you feel like you might choke and give up. Just do it, and even if you don’t figure it out today, tomorrow you’ll know how.
In an RPG, characters often have a class, which determines a large part of who the character is.
Often these classes not only tell you what role your character plays but also what the character’s limitations are. Fighters can wear most armor and wield most weapons. Clerics and mages can’t, but they usually make up for it with powerful magic and other abilities. Thieves and rogues aren’t usually very strong or know much magic, but they can be quick and resourceful, usually finding ways around the direct approach.
In real life, we often say things like, “I’m no good at math” or “I couldn’t draw to save my life”. Sometimes it is a matter of how our individual brains are wired. Pattern-thinkers get abstract concepts more easily than visual-thinkers, for instance. And for some, it is a genuine lack of interest.
But often it’s a matter of people limiting themselves, then declaring what they can’t do.
In Wizardry: Proving Grounds of the Mad Overlord, I used to have fun experimenting with the Change Class feature at the Training Grounds. I would create a character with not only a high strength but also a high IQ. I would create a mage, level up a bit to learn some higher level spells, then change my character into a fighter.
My fighter has to start over at Experience Level 1, but he/she retains all knowledge of spells from earlier time spent as a mage. Now I have a powerful character with some overlapping skills. My character won’t learn higher level spells, but he/she will eventually learn all of the spells up to the level of the highest level spell learned.
If you’re an artist, you’ve probably had people say to you something along the lines of, “You’re amazing, but oh, I’m not good at art.” You’ve been drawing all your life, perhaps, perfecting your craft, and these people are talking to you as if it’s some innate talent that allows you to effortlessly draw what you see in front of you.
I like to ask such people to draw a perfectly round circle. Often it ends up looking like an oval, and they say, “See? I can’t draw.”
Then I say, “If you did nothing but draw circles for hours, days, weeks, months, do you think you would eventually figure out how to make it rounder?”
Most people admit that, yes, they could see drawing a round, evenly-shaped circle as something they could probably figure out if they put in the effort and time.
And it’s how I demonstrate that we don’t have to limit ourselves to our professions or self-imposed classes. We can multi-class if we want. It might take more effort. If you spend eight hours a day working as a software engineer, you need to use the spare time outside of commuting, eating, and sleeping to get better as an artist, which would take longer than if you could dedicate all day to it.
But most of us don’t bother. I just wish most people would recognize it as a choice instead of performatively uttering their limitations.
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 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.
Last night, my wife and I saw the movie Inside Out, the latest Pixar film featuring the voices inside an 11-year-old girl’s head.
I enjoyed it, even though I wondered how much children might receive it since it seemed to deal with much larger themes than I can remember comprehending as a child. Then again, I don’t want to sell younger children short. I’m sure they can relate to dealing with feelings about their parents or friends, and I am willing to bet they understand more than I might expect.
During the credits, I saw this message:
This film is dedicated to our kids. Please don’t grow up. Ever.
The wording and punctuation is creeping me out. Put it in scary horror movie font, and you’ve got yourself a tagline for a slasher film about a murderous monster who targets kids.
Now, I get what they meant here. The appeal was for their children to keep their childlike wonder of the world, to avoid the idea that maturity means you can no longer play or be a goofball. And I’m all for that sentiment.
I want to see children express their creativity, explore their world, and feed their insatiable curiosities.
But they can grow up as they do so.
When I think back to my younger self, there are things I miss. Some things I don’t have time for because other priorities have taken over, and some I have made a conscious effort to bring back into my life. I don’t read encyclopedias in my spare time. Instead, I read with a focus, often looking up the thing I specifically want to know and diving deep into it only as far as I need to.
I used to doodle a lot, and I took two art classes in high school, but I let it go for a few years before picking it back up again almost 10 years ago. I now make a point of bringing my pencils and drawing pad to the weekly Team Trivia and draw the people around me.
But there are things I’d be embarrassed about. I don’t miss my awkwardness when meeting new people. I’m glad I’m more aware of the existence of an entire world around me because my youthful cockiness and self-centeredness would make it hard for me to get along with people today.
As you get older, you take on more and more responsibilities for yourself. It requires you to be ready for it, and some people struggle with the transition. For these people, getting older means never making time for enjoyment or learning because there is always work to do.
Being a grown-up doesn’t have to mean stunting your growth or stifling your dreams.