If I were David Bowie, I’d be pretty amazed.
As some of you may know, I made Markpond, a bookmarking website. I’m not going to lie, it’s similar to Pinboard. But I made Markpond as a challenge for myself.
I’m 15. I’ve “got my whole life ahead of me”. So I figured why not make something that I use on a daily basis. That way, if something irritates me, I’ll be motivated to fix it. And if it fails, it doesn’t matter.
Markpond is not a startup. I’m not intending to make that much money from it. I made it in the spirit of hacking – because I was motivated to make something that worked, and be able to point to it and say “I made that”.
It’s not a free service because I spent a lot of time on it. The basic account if £5/year, and the archival account is £10/year. That’s not that much. It’s actually quite cheap. And best of all – you get a three-day free trial (in that you’re only charged on the third day of use), and so if you want to cancel your account before then, you can do so without incurring any loss.
Well, you’re probably going to ask what Markpond does differently from all the services out there at the moment. Well, the answer is – not that much. But it might do in the future. Right now, the only major difference is the Little Printer publication, which is quite cool.
Despite being a hacker, and a geek, I do like looking at pretty things. And if I’m going to use a site every single day, I’d like it to look nice. And I think I’ve done that without having an impact of the speed and overall responsiveness of the site. The front page of Markpond gets 89% from Google PageSpeed, compared to 84% for Pinboard and 70% for Kippt.
I’m not saying that PageSpeed is the only measure of how fast a site is, but Markpond’s good score is also a direct result of gzip compression coupled with Rails’s asset pipeline and using SVGs instead of normal images.
The speed of Markpond isn’t just limited to the front-end though. The average server response time for a full profile page is around about 100ms, which is pretty damn good considering Markpond is run from a single Mac Mini.
So – what am I saying here? Well, mostly that I don’t see why you can’t have a site that looks good while simultaneously being on average only 30ms slower than the current status quo. Some people will like the fact that Pinboard has a geeky interface with no images and the default font. But personally, I don’t – not for a site that I visit every day.
As so that, coupled with the project being a personal challenge, inspired me to create Markpond. I’m not looking for huge success – Markpond isn’t my full-time job – I’m still in school doing my GCSEs. But if there are similarly-minded people out there, I can’t see any harm in providing a service for them. So I have.
Right. Let’s start out by going to their homepage.
Looking nice enough. Finally, maybe they’ve fixed the awful site design from 2003 they had before. Oh wait. Let’s try logging in.
How about the developer site?
NOPE! It’s gone. Completely. The UK one sometimes redirects to https://www.sandbox.paypal.co.uk, a domain that doesn’t exist on any DNS tables. Other times, it’s just 404ing. I even tried using a US proxy, and trying again to see if the US one was broken as well. Guess what? It was broken as well.
I’m at the point of redesigning Markpond where I’m choosing a payment platform. If I possibly could, I would be running in the opposite direction right now. PayPal, a huge multinational company, has broken its developer site completely. And it looks like it’s been like that for the past few days. No service announcement, no public apology, just silently broken.
If I could, I would use Stripe, which looks amazing. But, it’s US and Canada only for the foreseeable future. There’s also Braintree, which has a nice functioning sandbox, but as far as I can tell requires a social security number to get your payment processing online, which of course I don’t have because I’m not a US citizen.
So it’s back to PayPal again. And for now, all the code I’m writing can’t be tested until I either put it in production and hope there aren’t any errors, or until I set up a second actual PayPal account, send some money over to it, and then try buying something back with it through the site. Great.
Now that I have a Mac laptop, I thought that I’d go about setting everything up that I’d need to code in my favourite programming languages – PHP and Rails.
This post is not for the faint of heart, so continue at your own risk.
1. Install MAMP
This is the easy part. Download MAMP from here and install it like you would with any other application. Simple.
This will install Apache, MySQL and PHP. If you went for MAMP Pro, like I did, it’s really simple to add new projects. Just go into the control panel, click on the hosts tab, and add a new one with a document root of wherever.
2. Install XCode
In order to continue, you’re going to need to install XCode. You can get it for free from the Mac App Store.
Once you’ve got the program installed, you’re also going to need to install XCode command line tools. Do that by going opening XCode, then going to Preferences.
Then go to the Downloads tab, and within that the Components tab. Find the “Command Line Tools” entry, and click install.
Here’s what it should look like:
2.5. Install Homebrew
If you don’t have Homebrew already installed, you really should do. That’s why I’m not putting it as a full step. It’s a simple package manager for OS X, like aptitude for Linux.
ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
And you’re done.
3. Install Ruby
Although OS X already comes with Ruby, it’s usually not up-to-date. To fix this, we’re going to use RVM to install a new version over the old one. This will mean that we will not upset any of the core functionality of OS X (or something).
So go into Terminal and run:
\curl -L https://get.rvm.io | bash -s stable --ruby
This will install RVM and the latest version of Ruby (in my case 1.9.3).
4. Update gem
To make sure everything from now on goes smoothly, you’ll want to update the gem package manager. To do this, paste this into the terminal:
sudo gem update --system
5. Install Rails
Because Rails is only a gem, installing it is extremely simple. Just run:
sudo gem install rails
This will also install a bunch of other gems that are dependencies of Rails.
6. Install MySQL
You’re probably wondering why I’m installing MySQL, even though we installed it earlier with MAMP. The reason is that the mysql2 gem that is needed for Rails to talk to MySQL will not install without this version present.
brew install mysql
Should get you up and running.
7. Install mysql2 gem
Now that you have a “proper” installation of MySQL, you can go ahead and install the mysql2 gem.
sudo gem install mysql2
8. Switch back to the old MySQL install
Now that you’ve got the gem installed it’s safe to switch your console back to using the MAMP MySQL server. Simply
sudo nano /etc/paths
And add this line to the top of the document
And restart the terminal. Now, running the
mysql command will point to the MAMP installation, which is the one you want to use.
And you’re done!
Creating a Rails App
When you want to create a new Rails app,
cd to the place where you want to put your projects. In my case it was
~/Sites. Then run
rails new app_name -d mysql
And the last thing you’ll want to do is go into
config/database.yml and change the file by replacing the sockets with
Finally, create the databases needed by your app manually, because Rails won’t do it for you. You can use the phpMyAdmin build into MAMP to do this, but I prefer Sequel Pro, which is free and awesome, and a native Mac App.
Test out your new Rails app by
cding to your app’s root, then running
And (hopefully) all should be well. If it isn’t, feel free to leave your problems in the comments and I’ll see if I can help.