Category Archives: General

PS4 Fortnite Accounts Are Blocked On The Nintendo Switch

Luke Plunkett, Kotaku:

Fortnite players who had an Epic account on PS4 and have tried to play the new Nintendo Switch version of the game are reporting that they’ve run into a problem: they’re not allowed to use the same account.

That’s right, if you have played the game on PlayStation 4—even just once—that’s enough to have got your account locked to that system. It goes the other way too; if you link your Epic account on Switch, you’re locked out on the PlayStation 4.

This is maddening, but it comes as no surprise. To Sony’s credit, cross-network/crossplay is fairly new to the console world. That said, as I noted in my piece Sold on Cross-Network Play, “this is not a technical limitation. It is political.” The fact that Fortnight crossplay is supported across Switch, iOS, Android, Xbox One, macOS, and PC tells you as much.

In Cross-Network Play is “the Next Logical Step”, I noted the following:

Sony claims their reluctance of opening cross-network play is out of protection of their community. I think that is a fair stance, but is the Sony community any less toxic than others? I think the real fear is losing an amount of ability to lock in players to PlayStation 4. It’s the same case made for exclusive games and content; the latter I vehemently oppose.

Looking at Sony’s sell through numbers, it’s easy to see where their comfort of lock-in comes from. They likely have an overwhelming majority of the console base on their platform. Here’s a visual from my piece Some Numbers that Illustrate Nintendo’s Switch’s Massive Success:

Sony is going to run that lead dry of security loyalty to their platform.

But the majority of consoles aside, the masses are playing Fortnight. And if they aren’t on PS4, they are everywhere else. If that’s not enough for Sony to about-face, I don’t know what is.

Tagged , , , , , , , , ,

Switch 2nd Unit Set

Sam Byford, The Verge:

Nintendo is now selling a cheaper Switch package in Japan that doesn’t include the TV dock. The “Switch 2nd Unit Set” is ostensibly aimed at households that already have a Switch hooked up to the family TV and therefore don’t need a second dock, but it could also be an option for players who only plan to use the system as a handheld device.

Home console?

Tagged , , ,

Ben Thompson: ‘Humans Run on Stories’

Ben Thompson on The Talk Show with John Gruber podcast:

Stories matter. Humans run on stories.

I look at my own site and the articles that often resonate are not the ones with brilliant analysis or something clever. It’s the ones that tell a story.

People know it implicitly, but have a very difficult time articulating it. If you’re selling to consumers, there’s so much that goes into it that doesn’t go on a spreadsheet. That sort of stuff matters.

I subscribe to Ben’s Stratechery Daily Update newsletter. I read a lot of it and consider Ben’s insights priceless. But it’s typically his free weekly articles that grab me.

His most recent, ‘Tech’s Two Philosophies’, had me reeling. After reading it over morning coffee, I raced to work to share it with my team.

I shoehorned Ben’s ideas into something relevant to our work. It was a stretch, but I don’t think overly so. Regardless, I was so moved by the story in the piece that it woke me up better than any cup of coffee.

Humans run on stories. They absolutely do.

Tagged , , ,

Polygon’s God of War Review: ‘You don’t find collectibles; you find entire chunks of story’

Chris Plante, Polygon:

All of which is to say that the game is relaxed to the point of bordering on indifferent. Many of God of War’s most interesting surprises are optional, branching from the game’s sturdy throughline: secret rooms giving way to hidden caverns winding to towering statues or belligerent dragons — which I would have missed altogether had I just followed my compass to the next objective. You don’t find collectibles; you find entire chunks of story tucked behind a mossy wall or under a tropical island. God of War, like last year’s Nier: Automata and The Legend of Zelda: Breath of the Wild, rewards the player who inspects its immaculately designed world as if it were a hidden object game.

This reminds me of Star Fox 64. A player could “beat” Star Fox 64 without ever visiting over 50% of the areas/missions created for the game. (“Beat” in quotes as the path the player uncovers indicates a level of completeness, ultimately leading to a truer ending.)

It’s one thing to sprinkle trinkets throughout a game. It’s another to build entire stories and environments that may never be found. God of War sounds remarkable.

Tagged , ,

Building Zero Counts

Since launching Zero Counts in 2014, I’ve spent a number of hours overhauling the ‘Chunk’ WordPress theme into a design of my own.

In 2017, inspired by reading Huffington Post Highline’s ‘Millenials Are Screwed’ feature on iPhone X, I decided it was time for Zero Counts to introduce a mobile theme — an OLED-first one at that. (Also, I needed to beat Gruber at his own game.) But I had no idea how or where to start.

My workflow for editing Zero Counts’ theme consisted of searching for the theme’s style.css on my host, copying the file to my desktop, guessing the appropriate CSS changes, copying the file back to my host via FTP, and crossing my fingers.

Meanwhile, my day-to-day work was increasingly spent in Sublime Text, Sourcetree, Github, and leveraging a CI/CD (Jenkins) — most of which had been foreign to me months prior. I was learning the benefits of local testing, change tracking, and automated deployments.

In a fit of panic, I realized how risky it was to be iterating on the Zero Counts theme in production. Whoops!

With my desire to launch a mobile theme, so grew my desire to overhaul my development workflow. At the top of 2018, I got cracking.

Goals

  • Test locally
  • Track changes
  • Break out child theme
  • Create mobile version
  • Deploy automatically to production
  • Bonus: Develop on iOS

Tools

Theme Research

Before doing anything, I needed to get a bit more comfortable with how WordPress themes worked. WIRED’s Jake Spurlock kindly pointed me in the direction of WordPress.org’s theme documentation.

Local Testing

Luckily, the documentation also included details on setting up a local development environment.

More specifically, I needed to set up MAMP (Macintosh, Apache, MySQL, and PHP) on my Mac. This provides, among other things, a local MySQL database for a local WordPress install to read from. WordPress.org has a great article about setting up MAMP here.

Ultimately, I needed to:

  1. Download and install MAMP. (The free version should do the trick.)
  2. Set up MAMP Settings. (My set up show Apache Port: 8888, Nginx Port: 7888, MySQL Port: 8889, Web Server: Apache, Document Root: ~/Sites)
  3. Start MAMP and create a database. (From the phpMyAdmin, I created a database called zerocounts_net.)
  4. Download and install WordPress locally in ~/Sites/[site name].

Because Zero Counts has existing posts, I exported them from my production database on ZeroCounts.net. To import them into the newly created local database, from the WordPress dashboard:

  1. Click Tools
  2. Click Export
  3. Select ‘All content’
  4. Click Download Export File

An XML file with all of my posts was downloaded to my computer and ready to be uploaded to my local PHP database. With MAMP servers started, I entered phpMyAdmin, selected my newly created database, clicked the ‘Import’ tab, chose the XML file that was downloaded from ZeroCounts.net, and specified format: XML. This injected all of my existing posts (plus lot of other stuff) into the local MySQL database.

At this stage, my local site had all of my content, but certainly didn’t look like Zero Counts. I still needed to inject my custom theme. Before that, I wanted to begin tracking changes.

Change Tracking

I won’t go into the technical details of git repositories (repos) as I’m still getting my sea-legs. What I will say is the primary use case is to see a log of code changes and comments associated with the commits for quick investigation, reversions, and collaboration.

Git repositories can exist locally and/or remotely. In the case of Zero Counts, I develop locally using the local WordPress install I configured above, commit (save with a comment to myself) my changes, then push (upload) those code changes and commit details to my remote git repository. I can then go to another device — say my iPad (more on this in a bit) — pull (download) those code changes and commits, and be running/viewing the same code locally on another device. Think of it as a very manually, albeit safe, way of syncing my website’s code between devices.

GitHub is seemingly the standard when it comes to remote git repositories; however, with a free account, one can only create public repositories. I.e. my code would be publicly viewable. Private repositories are available on GitHub to paid accounts starting at $7/mo.

As a hobbyist, paying for a private repo that I may not use frequently seemed silly. Luckily, there is a solution in Atlassian’s Bitbucket. For a novice like myself, seeing little difference between GitHub and Bitbucket, Bitbucket offers free private repositories and therefore a membership from me!

Atlassian also offers a robust Git GUI for macOS and Windows called Sourcetree. There’s some peace of mind using a single developer’s sibling software and service together. As a bonus, I already had some familiarity with Sourcetree from my day-to-day work.

With a Bitbucket account created, I downloaded and installed Sourcetree. I created a new local repository in directory /wp-content/themes/ titled [theme]-child, where [theme] is the name of my default theme. (This will make sense soon.) I checked the “create remote repository” box and signed into my Atlassian account. This created an empty repository on my Bitbucket account for my WordPress child theme.

Child Theme

WordPress themes are great starting places. Chances are, a WordPress user will want to make changes to the theme’s style. With most themes, users can make small appearance tweaks (colors, fonts, etc.) using the simple Appearance editor. Some users many want to go a bit further with how their theme looks and begin digging into the actual CSS.

Some WordPress themes allow for custom CSS that overrides the default theme’s style.css via the Appearance editor. However, there may be bits of the theme that don’t exist within style.css and users will need to poke around in the theme’s many PHP files. This can be a bit overwhelming if you have no familiarity with code. If one is able to successfully make changes to the PHP files, be careful. Changes to themes are typically overridden with regular theme updates. Instead of editing the theme directly, one should create a child theme from the default theme.

In an FTP client, copy the contents of folder /wp-content/themes/[theme] into the new local directory /wp-content/themes/[theme]-child.

Open the new child theme’s style.css file and edit the initial comment as follows:

/*
Theme Name: [Theme] Child
Theme URI: https://domain.com/wp-content/themes/[theme]-child/
Description: [Theme] Child Theme
Author: [Your name]
Author URI: https://domain.com/wp-content/
Template: [theme]
Version: 1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: [comma separated tags]
Text Domain:  [theme]-child
*/

With a child theme established, the child theme will adopt core PHP updates from the default theme without interrupting your CSS and miscellaneous PHP changes.

Push Child Theme to Bitbucket

Now that I’ve added my child theme to my local repository, it’s time to push it up to Bitbucket.

I use the following terms remind me how to use git:

  • Commit: Save with notes
  • Push: Upload
  • Pull: Download (We’ll come back to this.)

Sourcetree recognizes the addition of the files I copied from my hosting server. In Sourcetree, I clicked the ‘Commit’ button, left a note such as “Initial commit”, checked the ‘Push to remote repository’ box, and committed. This committed (save with notes) and pushed (upload) the files to Bitbucket. The entire batch of files included the note “Initial commit” (or whatever comment I left).

From here on, any changes I make to the files in [theme]-child automatically appear in Sourcetree, ready for commits and pushes.

I try to make it a practice to commit any single change I’m satisfied with. Occasionally, multiple theme changes will be included in a single commit, because I’m human and forget to save and note every little thing I’m doing.

Automatic Deployments to Production

At this point, I was able to make changes and test locally. Once satisfied with my changes, I was able to commit and push these changes to Bitbucket for change tracking and safe keeping.

Now, if you are truly comfortable with your changes, you can set up an automatic deployment to your production server. Note that a safer practice is to set up a staging server to push to first. This ensures your changes are reflected to your liking on the web, saved in the event something detrimental occurs to your local server, and allows you to build on several changes before deploying to production. For Zero Counts, I feel safe with my only testing locally and pushing directly to production. The changes I’m making are usually minimal and the audience size doesn’t necessitate that I be coy about changes as they hit my site. I leverage my small readership for design feedback and make small, visible tweaks often.

Bitbucket includes a feature called Pipelines that will detect when changes have been pushed to my Bitbucket repository, triggering a push of the changed files from Bitbucket to my production server.

For a thorough step-by-step tutorial on setting up Bitbucket Pipelines with WordPress.org, look no further than Peter Brumby’s excellent article, ‘Continuous delivery for WordPress using Bitbucket Pipelines’.

To enable Pipelines, I needed to provided Bitbucket with my SFTP username and password.

  1. Sign into Bitbucket
  2. Select my repo
  3. Choose ‘Settings’
  4. Under PIPELINES, choose ‘Environment variables’
  5. Add SFTP username: Type variable = SFTP_username, Type value = [SFTP username]. Click Add.
  6. Add SFTP password: Type variable = SFTP_password, Type value = [SFTP password]. Check the Secured box. This will obfuscate the SFTP password on Bitbucket.com for additional security. Click Add.

Once I set up my SFTP login credentials as variables, I needed to write instructions for Pipelines to sign into my SFTP and copy the changes I pushed from my local repo to my remote repo ultimately to my SFTP, thus, to ZeroCounts.net.

Pipelines are controlled with a YAML (.yml) file. This essentially provides Pipelines with a set of instructions once a ping from a webhook is detected. (A webhook is like a push notification for servers.)

The YAML file for Zero Counts looks like this:

image: php:7.0.27

pipelines:
  default:
    - step:
        script:
          - apt-get update
          - apt-get -qq install git-ftp
          - git ftp push --user $SFTP_username --passwd $SFTP_password --verbose sftp://ftp.[host]/home/[username]/[domain]/wp-content/themes/chunk-child

The gist of these instructions allows Git to log into my SFTP and copy only the changed files to my production server. The aforementioned article by Peter Brumby explains these steps in more detail.

Mobile Theme

The above is all well and good for desktop theme development, but mobile proved to be a different beast.

I use Jetpack for WordPress analytics and my mobile theme. Jetpack comes with a default mobile theme that can be altered, much like the default WordPress theme. I installed Jetpack on my local install of WordPress from the local WordPress dashboard. The mobile theme lives at ~/Sites/[domain]/wp-content/plugins/jetpack/modules/minileven/theme/pub/minileven.

To set up the remote repo for the mobile theme, I copied the contents of minileven/theme/pub/minileven from my local WordPress install to a folder on my desktop. I then deleted the minileven folder and created a new local (+ remote) repo from Sourcetree named ‘minileven’ in /wp-content/plugins/jetpack/modules/minileven/theme/pub/ and copier the contents of the copied directory back into it. It seems a little redundant, but I wasn’t sure how to initialize the existing minileven directory as a local repo. Once the files were copied back in, I ran an initial commit to the remote repo. Now I was able to track changes to the mobile theme.

Remember the bit above about updates to WordPress themes not affecting the child-theme? Jetpack does not support child themes. After a Jetpack update, a customized mobile theme is overridden by Jetpack’s default theme. (I’m sure I can find what controls WordPress child themes, but that’s another project for another day.) Therefore, after accepting a Jetpack update, the custom mobile theme needs to be pushed back up to Bitbucket to override the default Jetpack theme that sits on the production server.

In this case, there are two types of deployments:
1. Regular mobile theme updates (like my desktop theme updates)
2. Replacing Jetpack’s default theme after a Jetpack update

Remember that YAML file I set up for desktop theme updates? A nearly identical set of instructions can be used to cover item 1. Item 1 is the default pipeline that will run with regular pushes to the remote repo.

For item 2, I needed to create a custom pipeline that I can manually trigger from Bitbucket. I cleverly named this pipeline “full-deploy-after-jetpack-update”. I only run this after a Jetpack update.

image: php:7.0.27

pipelines:
  default:
    - step:
        script:
          - apt-get update
          - apt-get -qq install git-ftp
          - git ftp push --user $SFTP_username --passwd $SFTP_password --verbose sftp://ftp.[host]/home/[username]/[domain]/wp-content/plugins/jetpack/modules/minileven/theme/pub/minileven
  custom: # Pipelines triggered manually
    full-deploy-after-jetpack-update:
      - step:
          script:
          - apt-get update
          - apt-get -qq install git-ftp
          - git ftp init --user $SFTP_username --passwd $SFTP_password --verbose sftp://ftp.[host]/home/[username]/[domain]/wp-content/plugins/jetpack/modules/minileven/theme/pub/minileven

The difference between these pipelines is push vs init. Because the Jetpack update wipes out my custom theme, it also wipes out the git tracking sitting on my production server. The git files need to be replaced and therefore re-initialized. (Initialization is still a little beyond my full comprehension, but I basically understand.)

Now that I was tracking changes of the mobile theme, I could begin work on my OLED-first (black/dark) mobile theme. As of this post, it’s still a work in progress, but I’m pretty satisfied.

iOS Development

With having a mobile theme in place, I began thinking about how neat it would be to develop on a mobile device. This is far from perfect, but it’s gotten me out of binds a few times now.

A little app called Working Copy allows me to latch on to my remote Bitbucket repos, make changes to the files, and push those changes up to Bitbucket, thus triggering a deploy to my production server.

The free version of Working Copy can be upgraded to the Enterprise version. Bonus: The dark icon sticks around.

I wanted to be able to use a full iOS compatible IDE and wanted Coda to be that tool. After paying for Coda for iOS, I found I was mistaken. It doesn’t seem to offer the ability to latch on to remote git repos like the desktop app does. Someday…

Next

This whole endeavor was my January 2018 project. I’ve only recently been able to sit around and write this all out.

There are certainly steps I’ve missed and efficiencies to be found. If you are following along and find glaring issues or gaps, let me know. I’m happy to help and update this post. If you find issues with this process, I’m also all ears. The biggest potential issue being the lack of a staging environment. I’ll put that next on my docket.

Tagged , , , , ,

‘Everyone feels lost all the time’

Uncharted director and writer Amy Hennig and Campo Santo (Firewatch) founder Sean Vanaman in conversation for Polygon’s excellent 2017 Year in Review essay series:

Amy Hennig: I talk to students and young developers sometimes, and they’re always sort of amazed to find out that everybody has imposter syndrome.

Sean Vanaman: I still feel like I’m ripping everyone off.

Amy Hennig: You look back at your own work and go, “I’m not even sure how I did that.”

Sean Vanaman: Exactly.

Amy Hennig: So even though you have this underlying sense of faith and tell yourself, “Well, I’ve been here lots of times, and I’ve always figured out a way to solve these problems, so I’ve got to relax and assume that I will figure it out again,” in the moment you’re like, “I don’t know how I did that before. I don’t know what I’m doing.” And everybody feels that way. It’s something I haven’t heard creative people talk about that much until recently. I always hear this sigh of relief when I bring it up. Everyone feels lost all the time.

This is a wonderful conversation between polar perspectives. Whether you’re running a large ship or a tiny dinghy, self-doubt is inevitable. I’ll add that it’s not just the captains that encounter it.

The quicker everyone and lay bare their uncertainties, the quicker the entire crew can sail in the same direction.

Tagged , , , , , ,

Dark Souls: Remastered Announced for Nintendo Switch

During today’s Nintendo Direct Mini, Nintendo announced Dark Souls: Remastered will be heading to the Switch on May 25, 2018. The title will also be launching on PC, PS4, and Xbox One.

This continues a trickle of AAA third-party ports to the hybrid portable/set-top console. In 2017, among other third-party ports, Bethesda released Elder Scrolls V: Skyrim and DOOM to the console and will soon to be releasing Wolfenstein 2: New Colossus.

Dark Souls was originally released in 2011 for PS3 and Xbox 360. It spawned two sequels and riff Bloodborne.

I have never played a Souls game. The idea of sitting in front of a TV, beating my head against an insanely difficult boss for hours on end is not a luxury my life can afford. However, doing so on a portable console is a whole different story.

Killing hours traveling, accompanying my wife on the sofa, relaxing in bed, stealing myself away to any place to chip away at a game are the reasons I’ve tucked my consoles away. Furthermore, the ability to quickly put the Switch to sleep and seamlessly launch back into a title make it my ultimate gaming device. For all of these reasons, I feel the Switch will allow me to join the Souls conversation, finally.

While Dark Souls: Remastered is the first of the series, the announcement of another classic PS3/Xbox 360 port to the Switch extends my enthusiasm for the console. I’m reminded of how tickled I was seeing this tweet by Jon Cartwright:

Honestly, it’s remarkable to see a Nintendo console glean so much third-party support. I’ll just keep my fingers crossed for Cuphead.

Tagged , , , , , , ,

Miyamoto: ‘I always look for designers who aren’t super-passionate game fans’

Simon Parkin reporting for The New York Times:

Even people like Mr. Miyamoto, 65, a leading figure at Nintendo since the 1980s, is ceding control at the company’s Japanese headquarters.

“More and more I am trying to let the younger generation fully take the reins,” Mr. Miyamoto said.

This younger generation has been carefully chosen; Mr. Miyamoto says he wants people who are more likely to create new kinds of play, rather than merely aim to perfect current ones.

“I always look for designers who aren’t super-passionate game fans,” Mr. Miyamoto said. “I make it a point to ensure they’re not just a gamer, but that they have a lot of different interests and skill sets.” Some of the company’s current stars had no experience playing video games when they were hired.

Tagged , , , , , , ,

Joy-Confirmation

Andrew Goldfarb reporting for IGN:

According to Koizumi, part of Switch’s appeal may be the hardware itself, which allows playing to be a different social experience than smartphones can offer.

“Just to add a little bit to this idea of how people viewing smartphones as an influence on the future of portable gaming, I certainly wanted to see all the possibilities of having controllers that could be separated from the hardware, so that you could be able to hand one to another person in a variety of different environments,” Koizumi added. “I think that really represents an amazing advantage over smartphones. That was something that we had focused on very clearly as something we could achieve to reach that distinction.”

It may not add much weight, but here’s an image after my younger cousins swarmed me at Christmas, asking if I owned the Switch.

Tagged , , ,