Technology

Web Site Facelift

I’ve given the site a new theme — I felt the old theme was too small and cramped, the site needed some room to spread out and breathe. (I.e. I’m getting old and my eyes are getting worse, so I needed a bigger font.) The color palette still needs work, but I’m pretty happy with the general layout.

I’ve been getting really into cryptocurrency trading lately, and have some ideas for new blog posts on that topic, so this was step one toward becoming a crypto blogger!

I wanted the Federation; I got the Alliance

My friend Autumn recently posted this quote on Facebook:

“I wonder if I’m helping you build a future I wouldn’t want to live in.”
-Ian McDonald, Dervish House

I’m not familiar with the quote or its source, but the concept has been rolling around in my brain in the wake of Snowden’s leak.

I’ve worked in technology all my life and I take pride in the fact that we are advancing our capabilities as a species and overcoming our limitations, potentially moving toward a Star Trek-like future where our technologies are used in the service of our peaceful well-being.

But we are already much closer to a Firefly-like future, where the technology is used in the service of those with power at the expense of those without, all the while paying lip service to higher ideals.

The conclusion I’ve come to is that I have no choice but to continue on this path, because those in power will build that future with or without me, and only through my participation can I hope to find some small opportunity to mitigate the damage or steer things in a more positive direction.

I got lazy and stopped posting; my web site got lazy and stopped loading.

Tonight I tried to drop by my blog and found that it was out of commission!  No WordPress pages would load (although non-WP static HTML pages were fine), instead giving me a browser error message explaining that the server returned no data.  I checked the filesystem and found the files intact and not recently edited (I had been hacked once several years ago and thought this might have been malicious as well).  I headed over to the database (fortunately phpMyAdmin was working) and looked around the DB a bit.  The last change there was from 2/25.  ಠ_ಠ

A little bit of Googling led me to http://www.colinmcnulty.com/blog/2008/07/08/solution-to-wordpress-blank-screen-of-death/ where I found the solution.  Fortunately, my problem was not the same as his, but following the steps that didn’t work for him did work for me.  Evidently something went wrong with my plugins; disabling them all directly from the database magically restored my web site.  I logged back in, upgraded from Word Press 2.7 to the latest 3.5.1 (big jump!) and here I am.  In response to my snark on Facebook about everybody letting that go almost two months without telling me, my coworkers persuaded me that I should do more self-promotion and update more often, so here’s a post.  I try not to post here unless I have something useful to say (no “I ate a piece of toast today” updates on this blog; that’s what Facebook and Twitter are for), but hopefully that link will help some poor soul whose Word Press site spontaneously decided that it didn’t need to serve pages anymore.

Just, y’know, ignore the bit at the end where it turns into a sales pitch.  ಠ_ಠ

A Quick Thought on Language and API References

We spend a lot of time and energy on making software usable and user-friendly, and with good reason.  It only makes sense to make the computer adapt to the user, not vice versa.  So why is it that we don’t give this kind of attention to the tools the we as technologists use every day?  When is the last time you saw a beautiful, easy-to-use language or API reference?  It seems to me that there’s a lot that could be done to make these gargantuan beasts easier to use.  Things like configurable sort order:

  • Alphabetical is a great default, and fantastic if you know the name of what you’re looking for.  I fully support keeping this as the default.
  • But what about optionally sorting by subject, for when you know the thing you’re looking for is in the library, but you don’t know what it’s called?
  • How about sorting by frequency of use?  Don’t show me the arcane shit that nobody but embedded programmers care about at the top of the reference just because it happens to start with ‘a’, show me the common stuff that everybody needs on a daily basis.
  • What about logical order of use?  Show me constructors first, then mutators, then accessors, then utility functions/methods, then destructors, so that the reference document itself mimics the structure of how to actually use an object or library of functions.

Language and API references tend to be huge and difficult to use, and there’s no reason at all why this should be.

My Web Development Toolbox

Yesterday, my friend Carlos posted about the core web design tools that he uses on a regular basis. I thought I’d chime in and mention some of mine, particularly as Carlos is a Mac user and some of his tools aren’t available for Windows, which is where I get most of my work done.

Launchy

launchy

For Launchbar-like keystroke launching functionality on Windows, Launchy is a great choice — and free!

TextPad

textpad

Like Carlos’s pick, TextPad supports syntax coloring for a number of languages. It’s also extensible — you can define new document classes and color them yourself, or download user-defined document syntax definitions created by the TextPad community.

Microsoft Visual Studio 2008

msvs

Yes, even though PHP is my language of choice, I sometimes find myself turning to the Evil Empire’s software development tools to work on it. MSVS has exactly one thing going for it: the slickest implementation I’ve seen of simulated in-place editing of files on a web server. This is such an important feature and so few programs seem to support it. Linux can easily and freely be extended to treat an FTP site as part of the local filesystem, but until Windows offers the same ease-of-use in this regard, it falls to the application vendors to offer this feature. Kudos to Microsoft on getting this one right — in their programming tools if not their operating system!

FileZilla

filezilla

Because not everyone is onboard with simulated in-place editing, I often find myself needing to perform the edit-and-upload cycle manually. FileZilla does a fantastic job of giving me the FTP functionality I need with the ease-of-use I desire.

Google Chrome’s Inspector and FireFox’s Firebug

inspector

Not much I can say here that Carlos didn’t already mention, except that Chrome is my browser of choice rather than Safari. It’s still based on Webkit, though.

The GIMP

gimp

Lately I find myself doing a fair bit of graphic design work. That means I spend a good chunk of time working with The GNU Image Manipulation Program, the free open-source alternative to PhotoShop. All my screenshots for this post were made with Windows’ built-in screenshot functionality pasted into The GIMP.

CSSDrive’s Color Palette Generator

cssdrive

I must admit, the visual aspect of web design is not my forte, I’m more of a tech guy. That means that anything I can lean on to help me make things look spiffy is extremely useful. One example is this nifty Color Palette Generator, which allows you to upload an image and derive a color palette from it. Use this with a logo to generate a similar palette, or a nature photo to come up with something that’s naturally aesthetically pleasing. Very handy!

Those are the tools that work for me — what about you?

(Many thanks to Carlos for inspiring this post to my oft-neglected Technology category!)

Six Elements of a Good CRPG

Since I plan to create a computer role-playing game, I’ve been doing a little thinking lately about what makes them good. Although I don’t expect my first game to be a Final Fantasy killer, I do want to make the best game I can, and the first step is to define what that means and how to do it.

Here are six elements I think make for a good computer role playing game, in order of importance:

  • Characters. Rich, believable characters with realistic desires and goals and well-written dialogue help draw the player in and give them a reason to care what happens. If you want to make the player feel something with your game, characters are the way to do it.
  • Plot. The events of the game should be significant, even epic, so that the player feels like their actions matter. There should be high stakes, rich rewards, and dire consequences. There should also be a few plot twists to keep the story from being too predictable, but don’t go overboard — a plot that’s too convoluted is worse than one that’s too straight-forward.
  • Combat. A good CRPG features a fun, interactive combat system with the occasional surprise. These days just selecting commands from a menu isn’t enough, there should be some other element of player interaction. Random encounters should be common enough to build the party’s power, but not too common — it’s no fun fighting random battle after random battle when all you want to do is get to the good stuff (the boss fight, plot advancement, treasure at the end of the dungeon, etc.)
  • Graphics. The graphics should be colorful and distinctive, in a style suitable to the flavor of the game. Personally, I don’t care for the manga-style art used in many CRPGs, but that’s a matter of taste. For a high-fantasy game, the graphics should be clear and bright, while a dark post-apocalyptic RPG would probably be better served by a grittier style.
  • Music. Like the art style, the music needs to be well-suited to the tone of the game, the nature of the storyline, and the current environment the characters are in. Exploring a dank, monster-infested dungeon may call for creepy music, while an unexpected death scene might need a somber dirge, and a grand palace should have something suitably dramatic. One important element is that the music not be too repetitive, as it will be playing over and over again anyway and can get boring or annoying quickly if you’re not careful.
  • Sound Effects. Sound effects are not often done well, perhaps because there are so many other elements that are more important, but they’re worth paying attention to. An inappropriate sound effect or one which is re-used for many different things can be jarring, so it’s a good idea to make them different and as recognizable as possible.

These are the things that came to mind when I sat down to think about what to focus on in working on my game. By no means do I consider this list complete, or even necessarily correct. Think I missed something? Disagree with what’s on the list, or what order it’s in? Leave a comment and let me know!

The Greatest Video Game That Never Was

I was a Nintendo devotee in the NES and SNES days, back when Nintendo and Sega had an intense rivalry and Sony hadn’t yet arrived on the console gaming scene.  It’s no small coincidence that some of my favorite video game series began there.  Chief among them is the Final Fantasy series, many titles of which exemplify The Way Console RPGs Ought To Be.  I consider Final Fantasy IV (sold as Final Fantasy II in America) the greatest video game of all time and the paragon of console RPGs.  Given my love for both Nintendo and Final Fantasy, you can imagine my heartbreak when the two divorced in 1997, Final Fantasy leaving Nintendo’s 16-bit SNES for another console: the 32-bit Sony Playstation.

With this change from one generation to the next and one brand of consoles to another came other notable changes in the franchise, some for the better, some for the worse.  The games began fully embracing the industrial feel that was introduced in small ways in the early games and explored in more depth in FFVI (FFIII in America).  The resolution and color, of course, improved with the greater capabilities of the next-generation console, and the rendering was changed from 2D to 3D.

The industrialization of the Final Fantasy worlds has always felt out-of-place to me.  Although right from the beginning, Final Fantasy has had airships, technological marvels such as the warmech and the computerized sky castle in which he lives, and the occasional robot, these elements were used sparingly to add a touch of wonder and other-worldliness.  Here were things that could amaze our characters just as we would be amazed by their own magical abilities and equipment were they to step into our world.  When I played Final Fantasy III American, I was disappointed to see a much more industrial world than in I or II American.  It’s been many years since I played it, but I recall that I didn’t play far beyond an encounter with a ghost train — really?  A train soiling my beloved fantasy series?  FFVII carried this trend even further, featuring guns and slums and motorcycles and trains (again), departing further and further from its fantasy roots.

Don’t get me wrong, I don’t have a problem with games like that.  I was just disappointed to see such a shift in a series which had originally established itself solidly as high fantasy.  It continued getting darker and grittier and more industrial, and I continued thinking “gee, this is a fun game, but what ever happened to Final Fantasy?”.

Alongside the industrialization, the graphics improved from the SNES’s resolution of 512×448 with 32768 colors (but only 256 onscreen at one time) to the Playstation’s 640×480 with 16.7 million colors — and from the older tile-based 2D graphics to a new 3D style.  Sadly, this meant losing the old-fashioned charm that comes with the tile-based model.  3D games look more realistic, but they look less like games.  Every day another game comes out that looks more like a movie and less like a game.  There’s an inexplicable feeling of nostalgic fun and joy that I get when playing 2D games that is dampened by a 3D look, and further dampened in proportion to the realism of that look.  Some games should be 3D — the Unreal series is one example — but leave my console RPGs 2D and tile-based for best enjoyment.

All this leads me to one conclusion: there was an entire era of Final Fantasy games that I would have dearly loved to play, only Square never bothered to make them: the 32-bit 2D tile-based era.  Greater resolution, richer color, new and improved, while still retaining the charm of the traditional tile-based RPG.  Games strongly rooted in fantasy, using other genres for a touch of flavor rather than the main course.  Epic swords-and-sorcery tales in the tradition of FFI, FF4j, and FFV, not dark, gritty, industrialized worlds in the tradition of FFVI. 

I came to love the Final Fantasy series because of what it was in the early days, and it saddens me that they departed so far from their roots as they went on.  I can see only one solution to this problem: learn to make games so that I can write the games I wish they had.  This is why I am studying game programming: I intend to create the games that I would have played had they existed.  My first project will be a simple role-playing game engine for the PC, which I will then use and extend and expand to create the RPGs that never were.  Watch this space for news on my progress.  🙂

(Footnote: As you can imagine, I was VERY pleased at the announcement last week at Game Developer’s Conference 2009 in San Francisco that FFIV’s direct sequel, Final Fantasy IV: The After Years will be made available in North America this year as a WiiWare download.  It’s been out exclusively on Japanese mobile phones since early last year, and since I neither speak Japanese nor have a Japanese mobile phone, I was very disappointed to be missing out.  Hooray for WiiWare!)

Welcome to the Technology Category!

When I sat down to write this post, I realized that my Technology category is a nearly blank slate.  Apart from the Gmail tip I posted a few weeks ago, this category has yet to be shaped by any posts.  So in order to introduce you to this category and to get my own techno-creative juices flowing, I’m going to begin by posting about some of the things I will likely discuss here, starting with the two main projects I’m working on right now:

DavidSafar.com – My most obvious project is probably this blog.  In addition to doing the writing, I’m doing a fair bit of work on it in PHP, HTML, and CSS.  I’m letting WordPress do as much of the heavy lifting as possible, but I also find myself needing to hack it occasionally or edit the theme.  When I do something particularly interesting or difficult with it, I will share my experience here so that you might benefit from it if you find yourself needing to do something similar in the future.

Tricks of the Windows Game Programming Gurus – I am working my way through this programming book, learning DirectX and game programming techniques with an eye toward writing my own fantasy role-playing games for the PC.  This is a large and complex topic (and a very long book), and I’m spending a lot of time on it.  I’ll post a book review in the Reviews section when I’m done.  When I move on to writing games, I will write posts here about that, too.

Some other tech-related things that are going on with me (or will be soon) that may generate posts:

Cell Phone Search – I’m in the market for a new cell phone, probably an Android phone.  If I discover anything interesting in my search, I’ll note it here.

Laptop Search – This is on the horizon, but I’ve decided to wait until Windows 7 hits the market later this year — I don’t want Vista, nor do I want to spend the money on a brand new Windows XP machine right before it becomes two versions old.  I’ll be looking to replace my current Dell Vostro 1000 with something a little beefier and better suited to some of the heavier programming tasks I expect to be throwing at it in the foreseeable future, and I’ll write about the selection process as it takes place.

Laptop Hard Drive Transplant – Since I’ll be keeping my current laptop around for a while, I do want to buff it up a little bit.  The next step in the process is to upgrade the hard drive to a faster one to speed up compiling.  This will likely entail using Norton Ghost or something similar to copy over all the data from my old hard drive to the new one without having to reinstall Windows.  I’ll discuss this process when I try it out.

The Importance of Adequate Cooling – Both my laptop and my gaming desktop have heat issues which cause them to either shut down or reboot without my permission when they get too hot.  I’ll be working to mitigate those in the next month or two before the heat of summer strikes, and documenting my methods and results.

Video Games – I’m a life-long gamer, just finding my way back into the fold after a rather long dry spell.  Along with posts about my own gaming projects, I’ll also talk about other games that are on the market for console and PC.

That’s a pretty good overview of the sorts of things you’re likely to see here in the near future.  I’m also open to tech questions, so if you have questions about tech topics, send them to me at askdavid (at) davidsafar (dot) com.  If I get enough questions, the Ask David tech advice column may become a regular feature here.

In summary, I’ll be covering all manner of topics in computers, hardware, software, operating systems, the Internet, programming, web design, and mobile devices, as well as taking questions on anything related to these areas of technology.  I’m looking forward to seeing where this section of the blog goes, and feedback is most welcome.  If you have anything to say, please share it in the comments.  🙂

For Gmail Users… Keyboard Shortcut Guide!

As far as I know, this isn’t new, but I just discovered it, and it’s exactly what I’ve wanted for some time now.

To see a guide to Gmail’s keyboard shortcuts, just type a question mark when focus is not in a text-entry field.

Never knew that was there, but always wanted to see it! 😀

Many thanks to LifeHacker for this one.