NOTE: This blog has been moved to http://www.looksgoodworkswell.com

Tuesday, December 24, 2013

Moving This Blog to from Blogger to Ghost

My new blog is hosted at http://www.looksgoodworkswell.com. It runs on Ghost, a NodeJS blogging platform.

Background

In 2005 when I started this blog the easiest thing to do was to snag a blogspot account and start posting. When I first started blogging it was really to just make notes for myself. Over time the blog became more popular and really outgrew what I would want to do with it on Blogger.

But inertia is a terrible thing ;-) I remember having a conversation with Matt Mullenweg (founder of WordPress) 7 years ago and he told me how easy it was to migrate my blog to Wordpress. I promised I would since it was a much better platform. But I never did it. Just always felt like a little less important than all the other things in life.

5 yrs ago, Theresa Neil & I released our book Designing Web Interfaces (and yes it is sorely in need of an update) and we launched a companion blog on Wordpress. I liked Wordpress, but I didn't love Wordpress. I think it had to do mostly with having to hack away in PHP. Mind you I don't hate PHP. I just don't love it. Due to this I found even less reason to move. I mean if I am going to move to a new blog platform I better really like the environment and believe in its mission.

Enter Ghost

I was really excited when the Ghost blog platform was started on KickStarter. It combined several things I really liked.

1. Markdown for Editing

I really hate writing a blog post and having to mess with a rich text editor or having to think about markup. I just want to write something. Blogger was terrible in the markup it generated. I felt dirty every time I wrote something. Not a nice thing to have run through your mind while trying to inspire the masses.

But markdown -- now that is a different story.

One of the challenges some of you that read this will face when you get a little older is it is too easy to get comfortable in a set of tools. Github certainly tipped the scale for me to awaken me to the simplicity and beauty of markdown. In fact the current book I am writing I am using the Mac app Ulysses which has a really nice markdown environment.

In Ghost, markdown is the lingua franca. It has a really nice side-by-side markdown/preview editor. You can focus on writing and not on the formatting.

2. NodeJS as the platform

In case you didn't know, I love NodeJS. It has helped us start a revolution at PayPal for our engineers and soon our customers as experiences will start rolling out faster.

The good news is Ghost is built on NodeJS. Not PHP. Not some bizarre 2001 platform like Blogger. Given that it is node I can spin up my blog locally or host it on nodejitsu (or any other cloud supporting node) or I can host it on ghost itself for a nominal monthly fee.

Knowing how your blog works -- from how it stores your blog content, how it renders it, how it gets deployed, etc. is really powerful in itself. It's also cool that I can keep my blog as a git repo.

3. JavaScript Templating for Themes

It's simple to grab themes or write your own themes. It uses handlebars templating so is really easy to start working with. If you use the Ghost hosted solution (sign up for an invite) you can just hack on your theme, run locally (or on another platform like nodejitsu) for testing and then when you are happy just upload the theme to ghost.io platform and you have your new look & feel.

Moving from Blogger to Ghost

Since Ghost is still early on, there are no direct import tools to bring Blogger posts to Ghost. What I did was use the Blogger to Wordpress export to create a dump of my blog posts. I then set up a temporary wordpress blog on one of my Dreamhost sites and imported the posts there.

Then I installed the "Wordpress to Ghost" plugin in my temp Wordpress blog. Then I was able to export a JSON file suitable for Ghost.

Because I could install Ghost locally it was easy to import the JSON file and verify that all 205 posts had made it over correctly. Of course I found issues. There were links to images stored on blogger, links to resources that were scattered all over one of my servers and some links were hardcoded to the blogspot blog. 

This gave me a chance to clean up all these links, have a better strategy for where to put files for my blog and so on. It actually felt good to clean up 9 years of crufty stuff.

I experimented with hosting the new blog on nodejitsu. The big issue right now is jitsu deploys are destructive so each deploy blows away your content (the blog database is stored in the content directory and thus pushed with the deploy). Martijn Swaagman has helpfully written a persistent-ghost wrapper for nodejitsu that allows you to install ghost with jitsu CLI and then when you deploy it copies the database out to its mongo grid, does the deploy and then restores the blog post. Yes, a hack, but it seems to work fine. I did run into an issue with running my blog locally in this configuration. The node module node_sqlite3 doesn't install correctly with node-gyp so you have to do a manual install of it.

In the end I decided to just go with the Ghost hosted platform. I figured I would get better support (you do), better analytics, better integration with their marketplace and they would worry with keeping it running and secure.

However, having the ability to run it locally or any node based cloud solution gives me peace of mind for the future. Even if they failed as a company, I have the blog software and can deploy it and manage in any way I see fit.

I started with a free theme called WillSong. Nice simple theme. I did hack it a good bit to get it to be a little better at responsiveness for mobile and added a third column for bio area, etc. But this is what is cool about the themes. They are really easy to change since it is just Handlebars, HTML5/JS/jQuery, etc. (or they could be any solution you want). Since a theme is self-contained, you just zip it up and can upload it to the hosted blog and you have the new look & feel.

Follow Me at Ghost

Please update your link to http://www.looksgoodworkswell.com for any new blog posts coming my way. Of course the best way to keep up with me is to follow me on twitter @billwscott




Thursday, August 29, 2013

Hiring in Austin

My team in PayPal Austin is hiring. We are looking for user interface engineers that can span the stack from node.js up to backbone.js. As part of the change we have been bringing to PayPal, our UIE teams partner closely with our design teams following the Lean UX methodology. And instead of just focusing on the HTML/CSS/JS client bits, we also work on the nodejs server bits as well. The process & tech stack allows us to move much faster than ever before.

We recently refocused the Austin team to own the developer.paypal.com experience as well as other aspects of the external and internal developer community. If you haven't check out developer.paypal.com recently, you should. New APIs, new experience, but much, much more coming. Come be a part of this team to take our developer experience to a completely new level.

Contact me @billwscott on all normal channels: twitter, gmail, linkedin, etc.

Fluent Talk: Releasing the Kraken. Clash of the Titans: NodeJS & PayPal

In a most unlikely place. We have unleashed the Kraken.

Thursday, January 31, 2013

Key Position: Sr. UIE Manager for our Wallet team

I have discussed in the past that we have been on a mission to change the culture, technology, process and experiences at PayPal. 15 months into my adventure here I have never been more excited.

Starting last year we moved away from Java & JSP for rendering our UIs and instead went to JavaScript templating (dust.js), using LESS for our CSS pre-processing, require.js for module dependency, jQuery, Twitter Bootstrap and bunch of other open source goodness. In addition, we have been using node.js as the underpinning for building our user experience code in a rapid, high iteration fashion. And even more exciting we are working on getting node.js to the point of production ready to build our app stack on top of it.

In addition, we have been pioneering Lean UX as a working model that puts our user interface engineers in the room directly with product & design to help lead our new experiences.

And we have been hiring some great talent.

Speaking of talent, I need to find a great manager for one of our most important teams -- the Wallet team. All of the consumer experiences fall under this area and cover desktop, tablet and mobile. We are also leading the charge on mobile first and the wallet team has many exciting opportunities to rethink the consumer's wallet across these channels.

Here is a link to the job description:
http://jobs.ebaycareers.com/silicon-valley/user-experience/jobid3066378-sr-uie-manager-wallet-paypal-jobs

What am I looking for? You should be passionate about all things front end. You should have a good solid history of writing and delivering front end applications in JavaScript and have a strong understanding of all of the industry best practices as well as the industry trends and key open source projects. Some experience with node is a plus.

What do I need you to do? Since the team is about a dozen in size, I don't need you coding on a daily basis. What I want you to do instead is to take this great team to greater heights. Inspire them. Grow them. Mentor them. Help instill great engineering into the team (continuous integration/deployment/social coding). I also need you to be passionate about experience. And passionate about delivering this experience to multiple channels. Ensure that we are utilizing responsive web design in every possible way.

You will need a strong working relationship with our product team, middle/backend engineering teams, and user experience teams. You will set the example for how this team gets stuff done. I need you to be a leader!

If you are interested in this exciting challenge then ping me right away. I am on twitter @billwscott or same handle for my email at gmail.com.