A Few More Upgrades

Still upgrading the blog and trying to drag it until the next year so I can just send blog posts to it via the Surface Pro.  

  • Removed the Social plugin in favor of the Jetpack equivalent, Publicize.  Slowly downgrading all old plugins in favor of Jetpack equivalents.  This hopefully removes the twitter double-post.
  • Installed Disqus comments.  I know they’re annoying but after years of trying to deal with commenting systems that weren’t actually horrible moved to something cloud hosted.  The thinking here is I can blame the cloud provider instead of myself.  If it turns out terrible I’ll go back to the regular WordPress commenting system.  It should have guest commenting turned on so it shouldn’t force anyone to make a Disqus account.

Nothing to see here.  Just move along.

Also, ha ha ha I have the proofreader plugin turned on so it smacks my fingers with a ruler whenever I use a passive tense verb conjugation.

On the Surface Pro 2

Hey look!  A return to blogging!  The blog is getting a slow but certain face lift.  But this isn’t about blogging, but about my new blogging device, a 128GB Surface Pro 2, which showed up under the tree on Christmas.  After 48 hours of heavy use of the device I’ve come to some nuanced conclusions about it and how it fits into the technological niche.  The tl;dr is that I am terribly fond of the device but it comes with some caveats.

This is also my first time blogging or writing of any sort on the device.  Let’s see how this goes!

The Good

  • Steam!

Steam runs.  Steam plays.  Steam downloads games.  Game run!  Games run well.  Unless your gaming tastes run to high performance FPS then Surface makes a surprisingly nice portable steambox.  I’ve downloaded and tested several games and they have all run flawlessly.

  • Windows Live Writer

Microsoft offers Windows Live Writer, a piece of fully featured WYSIWYG blogging software with tools to embed images, movies, maps, etc., for free.  It hooks to WordPress sites and has an enormous list of tools for formatting and laying out blog posts.  It runs without issue on the Surface Pro 2, turning the ultrabook into a portable blogging machine.  Who knew?

  • The Pen and Manga Studio 5

Easily the most impressive piece of software on the Surface Pro 2 so far has been Smith Micro’s Manga Studio 5.  The pen interface works perfectly with the art studio software turning the ultrabook into a full featured drawing tablet with velocity and pressure support.  It is no wonder web comic artists swear by Surface and drawing software.  The first time running the software with the pen is the first time I realized this little box was something completely unexpected. 

  • Netflix

Netflix is everywhere, on everything.  It’s embedded in my DVD player.  Today, Netflix players come with socks from Target.  But between the touch interface and the aspect ratio, Netflix feels natural on the Surface.  Not many other pieces of natively built in software stands out but Netflix did a nice job on their conversion of the client for Surface-oriented clients.

  • The Kickstand

The kickstand keeps the Surface Pro propped up at a comfortable writing height, especially on a table, a tray or a writing desk (full disclosure: it is currently on a writing desk).  It isn’t neck-crane difficult to see and it isn’t lying flat.  It sits at a natural height for doing serious work, and then collapses down again to be a lap or portable device.

  • The Type Keyboard

The type keyboard (not the touch keyboard) plugs into the bottom of the Surface, disconnects, acts as a cover, folds backward, and has highly accurate and responsive keys.  Although it is an expensive add-on, the type keyboard is worth it – it turns the Surface Pro into a device that both can be used for media and for actual Word/Excel work.

  • Flash

And it plays Flash.  If, say, your favorite web comic is loaded with flash files….

The Bad

  • Windows 8 is pretty terrible

As every technology magazine and blog has pointed out over the last year, Windows 8 is pretty terrible.  And it is pretty terrible.  It’s a well meaning mess that has no direction, no clear sense of self, and gets in the way between people and their computer.  Metro can be bludgeoned into shape by someone with the patience to read blog pages on usability but if you’re expecting it to be usable out of the box, it’s not usable out of the box.  It’s 8-12 hours of use to set up the hacks around the roadblocks it throws up to get it to work.

Don’t get me started on the insane security requirements and the “run as administrator” button.

  • The Touch Keyboard is also pretty terrible

The clicky-clicky type keyboard is superior in every way (see above).  The touch keyboard is garbage.   It rarely registers clicks, it slides around, and it feels cheap.  Avoid at all costs.  Get a type keyboard.

  • The Windows Store is sad

The Windows Store is full of sad widgety software which hardly works.  The store itself has hardly any pieces of software of note.  Most of the software doesn’t work right.  Windows has tons – TONS – of software.  Pretty much every piece of software available on WIndows 7 runs on Windows 8.  Steam games run.  Word and Excel runs.  Skip the store.

  • The inexplicably terrible experience with Youtube

I’m still not sure what is going on here, but Youtube hates the Surface Pro 2.  The apps in the Windows Store are worse than useless so one needs to run Youtube in the browser.  That’s not a dealbreaker by any stretch but I am so used to the super slick Google Youtube and Jasmine apps available on the iPad that not having a nice Youtube app feels like a travesty, especially in the face of the extremely well-done Netflix app.  Very strange.

  • Browsers

Well… the good news is, after several hours of cajoling, Google Chrome does work on the Surface Pro… kind of.  It’s support of touch controls are schizophrenic.  It has no idea how to draw the screen half the time.  Firefox does not work at all.  Don’t even think about Firefox.  I have not tried Opera. 

IE10 is not horrible and has terrific touch support but it is Bing centric.      

  • Windows Live Accounts

Yep.  You have to hook yourself into the Microsoft microcosm to use the Surface.  It did take my Gmail account so I didn’t need to suddenly manage yet another email account.  But having to create yet more accounts in yet more systems to do yet more things is annoying.

Overall

Microsoft sells the Surface Pro 2 as a tablet designed to compete with the iPad but the Surface Pro 2 is not a tablet, it’s an ultrabook.  One does not lie in bed and read a book with the Surface Pro 2.  It is too heavy to hold comfortably one-handed.  But it does everything a performant PC does and more.  If the expectation is one of a nice ultrabook with a touchable screen and an 8 hour battery life, it delivers.  If one is expecting an iPad or Galaxy Tab-like experience… it’s an ultrabook.

It’s filling a blogging/Steam playing/on the couch using niche in my life.  It’s been given a mouse, it runs twitter and social networking apps, it plays the Stanley Parable.  I can see how it isn’t for everyone and I can see how an iPad/Galaxy Tab is plenty for most people.  But like the XBox 360, Microsoft occasionally puts on an excellent piece of hardware laden with some terrible software – and if you can get through the software barriers there’s a gem inside.

The Agony and Ecstacy of Mike Daisey

I was one of those people who were affected by This American Life Episode #454, Mike Daisey and the Apple Factory, adapted from his show, “The Agony and Ecstacy of Steve Jobs.” It was enough that it gave me mild pause over acquiring the new iPad3. If the device is made in slave-labor-like conditions, regardless what Apple says, do I really want to get one?

It turns out most of the report was fabricated. Listening to the Retraction this morning was heart wrenching. It’s always been clear This American Life holds itself to the highest journalistic standards. It’s one of the few places to go for interesting and non-biased stories across the spectrum. So when they ran Mike Daisey’s piece, they gave it a vetting but they gave him the benefit of the doubt. And he lied.

When Ira Glass calls Daisey out on his lies, the dead airspace tells more than ten thousand words of excuses.

Is it okay to tell a lie to get at a greater truth? No. It’s not. Daisey tarnished the reputation of TAL for his own greed and his own ego. He’s set back worker rights movements in China. He has set ground to dismiss all sorts of worker abuse stories — because, if this one was fabricated, all others must be, too. It’s unclear if there are any abuses at FOXCONN or, if there are, what Apple’s role in correcting them should be. It’s become a horrific muddle.

Ink spilled all weekend on this topic, so there are people better than I to pontificate on what fabricating journalism and passing it off as fact means. It’s all a massive disappointment. One thing for certain: some reputations have been destroyed and others severely tarnished for one big display of hubris.

(I’d like to several Atlantic pieces on this but the Atlantic seems to be down.)

CMS Updates and Adds

I added ~15 pages to the Nephilim FATE Conversion CMS on the site.  Most of these are cut and paste jobs although some are cut-and-paste-2-or-more-together jobs.  I’m pondering one of those fancy edit-right-in-the-page buttons for when I come through and clean things up.  All the links in the main index page and in the table of contents included on every page should be good.

What the system desperately needs is examples so duly noted I will need to add examples.  I also need to move major arcana and game seeds out of the blog stream and into the right place.  

WordPress isn’t really a great tool for this but it’s what I have.  Ultimately something like Drupal is better for a blog+CMS build out but I didn’t want to migrate all my crap into Drupal due to complete laziness.  I may be forced to over time.  

So!  If you ever want to publish a ton of gaming materials on your site for people to pick through and download AND you want to have a front page blog AND you’re cheap and wish to spend no money AND you are starting from scratch, Drupal is your best choice.

WordPress CMS Additions

I fell over last night so no long lists of Alchemical Formulae to round out Alchemy until tomorrow. This is a quick purely technology post.

I looked at adding a Wiki to the site to support static pages and then I looked at the WordPress CMS (content management system) add-ons. The WordPress CMS add-ons only make WP about half a CMS but, on the face of it, it’s an okay fit for me. My matrix of these systems is:

1. Single user site — blog + plugins.
2. Multi-user, no-external user editing site — CMS + plugins. Drupal is a great choice here.
3. Crown-sourcing site — Wiki.

Since I’m a single user, single author site where I want to host a big number of static pages with comments, themes, table of contents, etc. I decided to forgo the wiki and customize my site to the hilt with WP plugins. This is frought with peril because most of the mid-tier WP plugins are garbage. Sorting the garbage plugins from the good-but-not-a-good-fit plugins from “works!” is an investment. I ended up with:

– CMS Tree Page View

This plugin allows me to build my static pages as a tree from roots down to child pages. It supports arbitrary order and a drag-and-drop interface. Highly useful for organizing a large number of static pages into individual sites within a main site.

– Custom sidebars

My favorite find so far. Allows a site owner to design several sidebars for different portions of the site. A blog has blog sidebars (categories, archives, tags), a static section has a table of contents, another static section has a different set of links, etc. The sidebars are named, seperately configured, and added in the post. Super nice.

– Exclude Pages from Navigation

WordPress wants to add all pages to drop down menus. It wants to add child menus to child menus. This looks messy, especially if the site has custom sidebars with embedded navigation. This adds a checkbox to exclude pages from navigation.

– Search Everything

Forces WordPress to index all the static pages for search engines and the search box on the site. Normally it only indexes blog posts.

– Widget Entries

Very useful for custom sidebars. It provides a place to organize, edit, and create custom text widgets with a full page editor instead of the teeny editor provided in the add widget screen.

I would love to have breadcrumb navigation added to static pages, too, but so far all the breadcrumb plugins require hacking up theme templates and I’m not certain I want to do that.

So that’s where I am with being able to put up full game conversions on my site — among other things.  I might reach a point where I need to convert to Drupal but… not quite yet.

Wikis and PDFs

I am getting near to the end of my conversion and I will go back to posting normal stuff with the occasionally interesting Nephilim RPG seed on my blog, probably to the relief of most everyone.  I’ve been thinking about what to do with the conversion that all two of you are reading and decided to a four step process — so complex it is almost a flowchart:

1. Collect the posts and populate a wiki.  Add lots of other “game”  information to the wiki, like a huge list of summonings and descriptions of the Major Arcana and Secret Societies and game seeds and that stuff.

2. Bang around with the conversion for a while in a playtest setting.

3. Occasionally scrape some of the cooler stuff and post it on the front page on Mr. Blog.

4. Once happy with conversion, produce a PDF for download linked too off my blog.

I am on step 0.5a: dither about technology.

I spent the entire week looking for a good way to put together a WP + Wiki combination with the WP as the root and the wiki as pages of the site. The best I can find is to set up an independent Wiki build in a /wiki directory under root and theme the wiki to look as close to the CSS running on the blog as possible.

I did look at the WP/Wiki embedded solutions and only found two that came near to working: WP-Wiki and WordPress Wiki.  They were both underpowered, slow, and had a difficult time linking across pages with wiki tags.  Neither were more powerful than writing flat pages and hand-crafting the URLs.  Neither provided much in a way of good Wiki functionality.  Wordpress Wiki might be better with the paid-for version, but why would I shell out $35 when the internet is littered with Wiki software?

Bluehost offers me four possibilities of wiki software:

  • MediaWiki, the Great Standard
  • PmWiki
  • DokuWiki
  • WikkaWiki

I have a comparison chart of the different systems generated over here on wiki matrix.  It sort of feels like a push between DokuWiki and MediaWiki.  The biggest difference seems to be that DokuWiki uses file storage and MediaWiki uses the database.  My gut tells me I should simply use the ANSI Standard and not fret even though it isn’t mobile friendly, but MediaWiki has terrible support for commenting systems.  (Although this may cure my issues.) On the other hand, DokuWiki only has simple tables.  Decisions, decisions.

If my aim was to give a full encyclopedia fronted by a blog, it might be worth migrating to a full-blown CMS like, yah, Drupal, but that’s more power than I really need.  I need a blog, I need an easy way to generate static content, I need comments on the static content, and that’s about it.  The WP wiki plugins are terrible and the static page authoring tools are too wimpy, so I need a wiki that works but I don’t need a huge moving van.

I do wish the WP Wiki plugins were more usable because they would have my life much simpler.  I was stunningly unimpressed.  Sure, I got my themes, but they worked spectacularly poorly with WP-Wiki surprisingly better than the WordPress Wiki plugin.  The WordPress Wiki plugin didn’t seem to do wikilinks at all and the WP-Wiki didn’t know how to build subdirectories.  I may give them another shot, though, before I bite the bullet and stand up a second system.

So that’s where I’m going with this.  I’ll have a report once it is up and running.

RPGs as Data Driven Apps

I meant to work on this post earlier this week but my week got real busy and I lost my time to write up posts.

I spent some time thinking about how pen-and-paper RPGs are best represented in an electronic medium. I don’t mean writing a full game like Neverwinter Nights; I mean representing the actual experience of the books, rules and dice in an app format. I realized that RPGs are by their very nature data driven: the character sheet, the rule set, the world setting, and the information that goes with it. Because everything is created whole-cloth — even those settings based on established properties — the game must be communicated with information for it to go. This is different than a card game or a board game which require a very small amount of fixed information (what’s on a card, say, or a die roll moves you 5 spaces, or you need to play this token) and a large set of rules. An RPG requires a large amount of information and an arguable amount of rules.

The devil is in the details with the amount and control of the information surrounding an RPG. This lies at the heart of many rules and design-based conflicts: how much information is needed for a person to interact with the world, how is the information manipulated to model the world, and how is this information communicated and stored. In the past, games often required a HIGH amount of information to interact with a HIGH number of system rules to determine a HIGHLY DETAILED piece of data after running the system — a simulationist system. Today, we have a huge number of styles from a low data with small ruleset games (like Fiasco) to moderate sized amount of data/character and data/world with moderate sized rule sets (like FATE or Cortex) to high information games with high detail (like D&D4).

This is all run on data. The nice thing about data is that data is about all a computer understands. It can hold data, process rulesets on data, and present data-driven results at the end of processing. So for example we have a large piece of data model in a character sheet. A character sheet possess stats in some form (d8 Wits, 18 Strength, 3 dots in Hawt, etc). The world may also possess similar unified stats — an NPC, a known test, a quantified piece of the world. Passing the world stats and the character stats through a known resolution engine generates a known result, which may also be stored and used to modify other data.

This is all basic game writing 101 and absolutely nothing new, but it’s important to lay out the basics before figuring out how to make it go. A character sheet is simply a line from a data model that has a paper-based persistence model representing a shared contract between player and game world. What becomes more interesting is in building up databases of world information. Pulling up, for example, cult information for Trail of Cthulhu with lists of cults (pick one) and integrated NPC and evil book lists, perhaps be able to cross-reference this with information either found online (automatically populate a database with reference information that auto-loads inline) and information in published material. Work against perhaps web services of a master repository that hosts a bigger centralized database and… but this is starting to get off the device and into web servers and databases and LAMP stacks and generally wandering off the reservation. But this is the idea — RPGs are data driven applications and more data makes them better.

This is where my mind is starting to go for RPG-based apps. There’s more to it than that, though:

* Core Data for storage, persistence, data modelling and all the CRUD facilities (create, read, update, delete).
* Cocos2D engine for dice rolling, card playing, and visual representations of game mechanics.
* WebKit for integrating web resources and maybe a shared repository
* Quartz for drawing really nice character sheets, game sheets, NPC sheets, and to generate PDFs on the fly.
* UIKit with Cocos2D for front end data management screens.
* Network stack for cross-communication between devices, communication with back end web services.

I think it would be nice to be able to have a database of NPCs whose sheets render nicely on the screen and then with a click be able to summon up world information around the NPC — their horrible organization, say, or, GOD FORBID, a RELATIONSHIP MAP… Computers are really good at knitting all this data together into a palm of the hand player, GM and gaming community set of tools. It’s what they do.

These are where my thoughts are sort of going for apps, but I also have lots of thought about an iFiasco app too which hasn’t been fleshed out yet.

And Man… iPad based Smallville Relationship Maps with integrated character sheets. Just…. damn. Can it be done? OF COURSE.

iPad Game Programming

Friday I had a spirited conversation about what sort of widgets and toys I need to really make game-based iPad apps. I came up with a list that looked like:

  • Handle Playing Cards (backs, fronts, turn, flip over, etc.)
  • Handle Game Tokens (rotate, pass around with a gesture, etc)
  • Handle Dice (roll dice, move dice around, support pools)
  • Handle Game Play Surface (game boards, playing surface)

I sort of skuttled around the Internet for a while and found Cocos2D. I downloaded it, installed the Xcode 4 templates, built the library, and worked through the first two tutorials (of about 20). I have to say, other than my brain tried to fold itself into unnatural corners of space time trying to remember basic geometry* from High School — which I just blanked on — I was stunningly impressed with the library. If you’re following along with what I am doing, I encourage you to go look at the library and start thinking about the possibilities. Will it work for rendering screens for card games and board games and dice based games? As soon as I figure out how to get dice to roll without having to use Cocos3D (although I may have to) then yes, I can build up a library for making interactive games on the iPad.

Current plan is with my new knowledge of Cocoa Programming and the way it handles stuff is to expand into mastery of Cocos2D, persistence libraries (for saving game state), networking, and some Core Data for something I’ll talk about at length tomorrow — I had some deep thoughts over the weekend for how a certain kind of app should work and I’ll delve into it.

Meanwhile, as sort of a joke, I was trying to come up with a name for an LLC since these apps need a name of a company. In my throbbing brainmeats, the current forerunner is Naked Llama Games, LLC after my friend the poor, shaved llama who gave up its downy undercoat to be blended with cotton to make a sublime wool for those who really want to make very expensive hats. Sadly, my copy of Adobe Illustrator is insisting my license is no good despite having the CDs and the license, so for a logo I will have to use Inkscape. Not that there’s a single thing wrong with Inkscape.


* I am going to need to pick up some sort of geometry refresher. Perhaps wikipedia can help me out here.

iPad App Ideas!

Having finished reading Cocoa Programming by Daniel Steinberg and worked through all 27 (!) chapters with the hands-on projects, and now starting to delve heavily into specific topics (UIKit, CoreGraphics, Core Data and the network tools) I feel I have officially leveled up and gained a new feat: ability to craft small applications and possibly, eventually, try to get them through the Apple Doom Process.

I am looking for your ideas! I have some small ideas in mind but, after talking with many people, I know other people have other ideas about apps they would like to see! Now, the first few apps will be small, and free, so I am thinking things that I can wrap my arms around and come up with a plan and get done. Understand the first few apps will be a bit slow getting out the gate while I learn process.

How does one leave me an idea to discuss turning it into an actual piece of code?

1. Leave a comment on my blog.
2. Leave a comment on the blog on Livejournal.
3. Leave a comment for me on facebook.
4. Send me a direct message on twitter. (Name: multiplexer)
5. Email me at edresner@gmail.com.
6. Track me down in person. (GASP)

I will go back and forth about graphics and layout and user interaction — the stuff I don’t very well — and attempt to turn it into a real thing that runs — the stuff I do do well.

So! If you have something in mind or something you are envisioning, this is a head’s up that you should talk to me about your idea and I’ll try to figure out how hard it is and work to get it done!

And again, the first few are free to counterbalance my fumbling around a bit.

The Beauty of Objective-C?

This is a tech blurble.  If you’re not interested in tech blurbles, you can skip this one.  Sometimes it reaches peak blurble and it flows out over my blog and then the tide recedes for a while.

I really love Ruby.  Something about Ruby does it for me. I’m not clear what it is — the readability, the list comprehensions and lamda functions, the easy way to get things done, the Japanese language syntax to a long line of calls, the ability to shove an entire program into one super long line of code*, or what it is about it. I just enjoy programming in Ruby. It doesn’t fight me. It generally does what I want it to do. Plus yield! Oh yield, you crazy functional programming primitive you. Occasionally, in my Python code, I will write something in Ruby syntax (because it’s completely possible) and leave a comment like:


# Ruby-style list comprehensions FTW yo!

It’s childish.  But that’s what code comments are for — childish things.

My second favorite language is Python. It has the all powerful master of the universe ctypes class that makes it such THE tool for manipulating operating systems. All the power of C, none of the hassle of C! It goes best with Advanced Programming in the Unix Environment.  The two are like a fine peanut butter and jelly sandwich.

Toss in C and some assembler and I have a full toolkit to really cause some damage and occasionally write some code.

I have been filling my head with Objective-C for the last two weeks and working through Cocoa Programming from Pragmatic Bookshelf** to learn the beast. In general, I would call this a success, as given 10 minutes I can write a small program now, but I find the language clunky and cludgy the exact same way I find Java clunky and cludgy. I can’t tell if it’s just me. It might just be me.  I feel a bit like I have been driving a nice reliable sedan for a while in Python shape or Ruby shape (depending) and suddenly I’m in a Ford Pinto and any moment it can catch on fire. Essentially, it’s C mashed together with Smalltalk using wacky Simula bracket syntax and mixed up with a huge number of toolkits (legacy and not) to turn this mess into this big development platform for mobile. The wikipedia page does have a decent overview of the programming primitives for the wary.

It’s not so much that it’s like Simula. What is bothering me is the sheer amount of accounting. One needs to remember if the call is a class method or an instance method and call appropriately, remember argument names, mess with properties, set the memory model correctly for all said properties which may be different depending on the nature of the class (mutable, not mutable, copying, etc), remember to manage memory in dealloc() when the class is disposed, create models where the class is properly created and hangs around, manage different forms of class instantiation and other bookkeeping that gets between one and actually doing work. I am vaguely reminded why Java turned me off so badly — but worse.  Toss in that the book I am reading is married to beautiful code — can we eliminate ALL LOOPS and DECISIONS in this application to make it SUPER COMPACT? — and it’s headachy.

From my standpoint, there’s some major pros — one can theoretically consume C-based libraries and packages and even just give up and write the guts code in C — and some cons — getting used to the weird syntax, and having to do all this paperpushing to bring up an application — to working this way. Deep down it just feels slow.

I have this feeling people are going to get tired of working this way and do what they did with Java: make Java implement any other language, please any other language, on the JVM, then Java.  Just make the bad and hurting go away.  Python => JPython.  Ruby => JRuby.  Hell, one can do Grails stack on the JVM with groovy which pretends to be Java with Spring but is more a Ruby on Rails stack then anything else.  Clojure, last week’s toy of the week, is LISP — dear God, LISP!!!!! — implemented on the JVM!  LISP!  Did I mention LISP?

Meanwhile, I am merely whining about the incomprehensibility of Objective-C.  I am getting enough of the hang of it to read through stackoverflow articles which pushes me out of newbie and firmly into “can cause mayhem.”   And then past the language barriers, mastery of the data structures (NSDictionary, NSArray, etc).  And then — the world!

(I found an article on how to do list comprehensions on the NSArray class in Objc-C here.  It is possible.  Thank you magic Internet.)


* Which, arguably, I can do in C.
** I will post an in-depth review.