A curious fact about our data-obsessed era is that we’re often not entirely sure what we even mean by “data”: Elementary particles of knowledge? Digital records? Pure information? Sometimes when we refer to “the data,” we mean the results of an analysis or the evidence concerning a certain question. On other occasions we intend “data” to signify something like “reliable evidence,” as in the saying “The plural of anecdote is not data.”
In late 1995, a small group of beginner game developers in Alberta who’d created a company called BioWare needed a new project. Their first title, a mech game called Shattered Steel, was nearing the end of development, and the tiny studio wanted to do something different. BioWare’s founders were weaned on tabletop role-playing games and digital equivalents like Wasteland, so they decided that their second game should be a computer RPG.
Some of my clients want to use git with their existing Subversion repositories. These are the notes I give them (along with training and coaching) to get them started.
The integration between git and Subversion (git-svn) is so well done that several of us have been using git as our interface to all our Subversion repositories. Doing this is fairly simple, but there are some interesting tricks, and so I thought I would share a day in the Viget life with git-svn.
These traditional Russian blini, perfect for serving with crème fraîche and caviar, use a yeasted batter that's further lightened with beaten egg whites.
Most buckwheat blini recipes call for yeast and long rising times, and they take hours to make. Our version delivers great buckwheat flavor, and the batter comes together in a snap.
But if that’s true on a scale of minutes, why longer? Instead of watching hourly updates, why not read a daily paper? Instead of reading the back and forth of a daily, why not read a weekly review? Instead of a weekly review, why not read a monthly magazine? Instead of a monthly magazine, why not read an annual book?
In 1965, two works changed the face of genre publishing forever. Ace Books that year came out with an unauthorized paperback edition of an obscure decade-old fantasy trilogy called The Lord of the Rings, written by a pipe-smoking old Oxford don named J.R.R. Tolkien, and promptly sold hundreds of thousands of copies of it. And the very same year, Chilton Books, a house better known for its line of auto-repair manuals than for its fiction, became the publisher of last resort for Frank Herbert’s epic science-fiction novel Dune. While Dune‘s raw sales weren’t initially quite so impressive as those of The Lord of the Rings, it was recognized immediately by science-fiction connoisseurs as the major work it was, winning its year’s Nebula and Hugo Awards for Best Novel (the latter award alongside Roger Zelazny’s This Immortal).
The term castle has been applied to structures as diverse as ancient hill forts and Renaissance country houses. Over the millennium that castles were built, they took on a great many forms with many different features, but in the popular mind castles feature a range of elements including battlements, drawbridges and arrow slits.
What is a changelog?
A changelog is a file which contains a curated, chronologically ordered list of notable changes for each version of a project.
Why keep a changelog?
To make it easier for users and contributors to see precisely what notable changes have been made between each release (or version) of the project.
Who needs a changelog?
People do. Whether consumers or developers, the end users of software are human beings who care about what's in the software. When the software changes, people want to know why and how.
So for this one I have a lot to say that I’ve wanted to say for more than a few years so I’m just jumping straight to my thesis right here at the top of the page: People use Japan as a handwavey scapegoat as a result of a background culture of “wacky Japan” jokes and growing up joking about Japanese video games. They also use it as a catch-all marker of reactionary sentiment partially in reaction to the supposed popularity of anime amongst the resurgent online right wing. The problem with all this is that it almost invariably extends beyond the media itself or even the (deserving) targets of mockery that this stuff is meant to lampoon. Especially in circles that spend a lot of time on nerdy bullshit like video games and TV shows, what arises is a kneejerk response to anything appearing to be of Japanese aesthetic sensibilities and a strange defensive environment where things are on some level expected to be enjoyed in spite of their country of origin. When Japanese media is reactionary, it is said to be a representation of a whole culture, when it isn’t it is said to be a surprising break from it and thus, no matter what, the discussion ends up at the supposed inherent backwards reactionary nature of Japanese popular culture.
I don’t think engineers are very good at pairing. I know I wasn’t, and it was a big reason why I took my previous job at Carbon Five where I was pairing all the time. In addition to being a well respected shop, I thought forcing myself to pair all the time might improve my ability at working with other developers, explaining concepts to others, and might even make my job more enjoyable.
This style is actually very close to an actual navigator / driver situation in a car or on a boat. With all the high level commands coming from the navigator and the lower level implementation happening from the driver.
This style of programming is all about increasing communication and collaboration. Verbally communicating code and editor commands is a skill like anything else but it is one that many people have not developed yet. Don't worry, it's pretty easy to gain and most people pick it up the basics in a few hours.
It's more fun than it sounds: two programmers at one computer. One drives; the other navigates. Switching roles fluidly, they constantly communicate. Together, they accomplish better work more quickly than either could alone.
The driver types. She focuses on tactics--writing clean code that compiles and runs. The navigator focuses on strategy--how the code fits into the overall design, which tests will drive the code forward, and which refactorings will improve the entire codebase.
Pairs self-organize by selecting partners who can best help with the current task. They switch every few hours to share perspectives and knowledge.
This article focuses on an argument based on the author’s extensive experience with development and pairing. If you’d like to read a summary of scientific studies conducted on pair programming, check out our Scientific Research Into Pairing article.
The Master and Margarita
The sprint is a five-day process for answering critical business questions through design, prototyping, and testing ideas with customers. Developed at GV, it’s a “greatest hits” of business strategy, innovation, behavior science, design thinking, and more—packaged into a battle-tested process that any team can use.
Up until fairly recent years, game programmers have consistently used a deep class hierarchy to represent game entities. The tide is beginning to shift from this use of deep hierarchies to a variety of methods that compose a game entity object as an aggregation of components. This article explains what this means, and explores some of the benefits and practical considerations of such an approach. I will describe my personal experience in implementing this system on a large code base, including how to sell the idea to other programmers and management.
A few years ago, entity systems (or component systems) were a hot topic. In particular, Scott Bilas gave a great GDC talk (http://scottbilas.com/files/2002/gdc_san_jose/game_objects_slides.pdf – updated link thanks to @junkdogAP) on using them in the development of Dungeon Siege. The main advantages to entity systems were: