403 Forbidden: Web Sharing Stopped Working After OS X 10.8 Upgrade

Like a kid on Christmas, I was very excited to get up this morning. Not for presents mind you, but for the release of the OS X 10.8 Mountain Lion upgrade.

I wasted no time buying, downloading and installing the upgrade. Everything seemed to go well and within 45 minutes the download and upgrade had completed. Everything seemed to work except for my local webserver which was returning a 403 Forbidden error when attempting to view any webpage under my http://localhost/~john/ web directory.

After some investigation and reading through countless ‘setup apache on Mac OS X’ articles, I found out that the john.conf file was missing from the /etc/apache2/users directory. For anyone who is having the same issue, follow the instructions below to restore it:

1) Open (Can be found in the Utilities folder of your Applications folder)
2) Navigate to the /etc/apache2/users directory.

Use: cd /etc/apache2/users

3) From here, I had a Guest.conf file, but no john.conf file, so I just copied the Guest.conf file and named it john.conf (note: you’ll need your admin password to copy the file)

Use: sudo cp Guest.conf username.conf

You’ll need to change the ‘username‘ part of username.conf to be the same as your username on your mac. This is also the same name as your user folder in the /Users folder at the root of your harddrive

4) Open the new .conf file you made.

Use: sudo nano username.conf (again, replace username.conf with the name of your file)

5) Change ‘Guest’ in the <Directory “…”> tag to your username
6) Press CTRL+x to Exit, and then Y to save changes.
7) Restart the apache server using the following command

Use: sudo apachectl restart

At this point, you should be able to browse your web pages that exist in your /Sites folder of your user directory.

Other webserver extensions may have been removed or disabled by the upgrade. One thing that I had to re-enable was PHP, which I was able to do by following Step 2 on this site.


How Quickly A Year Goes By

It is hard to believe that 1 year ago today I submitted the incorporation papers for 84 North Studios Inc. I want to be able to say that a lot has happened since then, but it doesn’t exactly feel that way. I fell just short of my goal to have 1 app in each major app store by year’s end… my iOS app is still in development and still has quite a bit of time to go until it’ll be ready.

However, I think this next year will be much more productive and will be filled with many more accomplishments. Over the last few months I have been feeling a lot more motivated than I was in the first couple of months since quitting my full time job last year. I think I was in a partial vacation mode, which finally wore off sometime around this April. Also, this second year is starting off with 2 web apps that are more than half-way done, so I’ve got a bit of a good head start.

My main goal for this year is to not only complete the iOS app I had hoped to finish in year 1, but also to release a console game. Microsoft has a pretty cool program for independent developers to release downloadable games on XBOX Live. And since it is part of my Windows Phone developer account, I think I’ll take advantage of the opportunity.


Overdue Status Update

I took the last couple of weeks off from writing posts here, but I made up for it by writing a ton of code. Over the last 2-3 weeks I finished 2 projects and started another.

The first project I finished was Mongoose Loves Mangoes for Windows Phone 7. It was finally released on June 2nd, and it has since racked up around 7000 downloads. It is probably more by now, but the download reports don’t seem to be up-to-the-minute accurate. I hope to port it to iOS before the end of the year, then I’ll have a pretty good comparison between the two platforms as far as advertising revenue and downloads go.

The second project I finished also happened to be my second foray into Facebook apps: The Monkeys & Elephants Stock Announcer Facebook app. But Facebook apps have changed a whole lot since that first one I wrote. So I pretty much was starting from scratch. But now that I’ve got that under my belt I’m pretty well prepared for my next two projects which will also be Facebook apps.

The project I’m working on now I’m trying to keep somewhat quiet, just because I don’t want to put the idea out on the internet for someone else to see, realize how awesome it will be and then somehow build it faster than me. One thing I will say though is I finally found a reason to start using Parse. It is a pretty amazing app platform that gives you a datastore, push, geolocation and other useful services for iOS, Android and Javascript (which is how I’m using it right now). It requires you to be online, but the app I’m working on requires connectivity anyways, so it isn’t an issue. I’ve been able to prototype my app in just a couple of hours thanks to Parse, which is how I found the time to finally make this post!

So yeah, I should hopefully have this project in a usable, minimum viable product ‘state’ within a week or so, so I should be able to get some people to start using it. Then it is on to my NEXT Facebook app project which I think I am the MOST excited about. But I’ll talk more on that later.


Household Projects

I’m not sure what snapped in my head recently, but since I moved from my last rented townhouse to this new one I’ve been wanting to just ‘do’ things to the place. Being a rental property, I can’t (and don’t really want to) do anything too permanent, but I’ve got a couple DIY projects that I’m pretty excited about.

The first little project I gave myself is to install some outdoor speakers on the patio. I’m going to run the wiring through the same hole the satellite cable is running through (so I don’t have to drill any holes). I’ve already ordered the wire and speakers, researched the ‘Zone 2’ feature of my receiver and measured everything out. Just waiting on the UPS truck to bring the stuff I ordered so I can get started.

In the process of getting some supplies for this project, I found myself at Home Depot for the first time under my own volition. And it was probably the first time I enjoyed being there. I used to get dragged there by my dad whenever he needed something. It is a completely different experience when you actually WANT to be there. I found myself actually caring where stuff was, and I started trying to memorize the aisles. I think once I actually own a place I’ll find myself making weekly trips there just for fun to find something (or anything) to do to add to the place.

The second project I have is to revive my Asterisk server and Linksys SPA3102 VOIP Gateway. We never had a home phone setup in the last place, since we’ve all got cell phones so I never had much use for it. But this new place has a door and garage intercom with activating servos connected to the phone line. So instead of having to install phones in the wall all around the house to answer the door, I’m going to get Asterisk to ring my cell phone whenever someone is at the door! I’m particularly excited about this one, and I’m actually only writing this post right now because I’m babysitting a Linux install on my old G4 Mac Mini (that I’ve been holding onto in hopes it would one day come in handy again). Since its a PowerPC machine I’m installing Yellow Dog Linux 6.2 It looks like its not being maintained much anymore (last version was released June 2009), and I’m struggling to find some decent instructions on how to actually install Asterisk on it. So I may have an uphill battle on my hands here.


This Week’s Frustration: Windows Phone 7 Live Tiles

I just spent the better part of the morning trying to update a Live Tile’s Background and BackBackground image in WP7.

The reason it took more than the 5 minutes it should have taken is because most people who paste code on development blogs put too much weight into their assumptions about what other people may or may not know. In my case, the omission was with visual studio file/asset properties. The following piece of code was supposed to ‘just work’:

ShellTile appTile = ShellTile.ActiveTiles.First();

if (appTile != null)

StandardTileData standardTile = new StandardTileData

Title = “Title”,
BackgroundImage = new Uri(“livetilefront.png”, UriKind.Relative),
BackTitle = ” “,
BackBackgroundImage = new Uri(“livetileback.png”, UriKind.Relative),
BackContent = “”




However, the author failed to mention that you need specific properties on the livetilefront.png and livetileback.png images otherwise they won’t be displayed. Those properties are:

Build Action: Content
Copy to Output Directory: Copy always (‘Copy if newer’ should suffice as well).

Without these settings, the images were not being copied into the XAP file, and as such were not showing on the Live Tile. Now, I’ve been reading some articles that suggest that the ‘copy to output directory’ shouldn’t have affected the content in the xap file, which is what I originally though as well (which is why it took me so long to solve this problem). So unless there is something wrong with my Visual Studio environment, this is the way things need to be.

Note: The PhoneGameThumb.png file does not have ‘Copy always’ set and yet it appears in the output directory. So I’m not sure what is going on here, but I’m just glad everything is working now. I’ll save the investigation for some other time.


Mongoose Loves Mangos Progress

I’ve been making sure I put work in daily on ‘Mongoose Loves Mangos’, because it’s very easy to procrastinate when you’re home alone.

I made a short youtube video of where I’m at so far, which you’ll see is a long way since the last video update:

Other than the awesome artwork I’ve been getting from Paul, I added some sound effects to the game which should give it a more polished and professional feel. Quick note, the sounds are from chimps even though I’m calling the animals in the trees monkeys.

I’ve slowly been putting all the other menus together. Just yesterday I added high score tracking, and I’m going to be working on the instructions next. Then I need to start figuring out how to make the game get progressively more difficult without just becoming a rain storm of impossibly fast moving mangos.

All in all I think I’m working at an OK pace for my end of May deadline, however I doubt I’ll get my 2 app quote finished by then.


Busy With A Move

I’ve been a bit busy organizing all the junk I’ve accumulated over time because I’m in the middle of preparing to move again. The good news is it’s a short move, just a couple doors over, so there is no rush to get everything packed and into a truck. We’re just hauling stuff over as it’s ready over the next few days.

Of particular interest to me is getting my internet and satellite up and running as quickly as possible on Saturday (when we’re going to be switching over to the new place). I’ve got the Bell installer coming over Friday evening so it’ll be ready for Saturday, and as I write this I’ve been testing out the cable internet and router in the new place to make sure it still works. I tested out a few locations in the house to make sure that there is cable service and that the WiFi signal is strong enough to reach the highest and lowest floors while not having to be placed in an unsightly location.

Since I’ve been preoccupied with that I haven’t had much time to work on my Windows Phone 7 game since Monday. The last thing I did was clean up the main game interface using images to show health (heart) and score (mango) instead of the words “health” and “score”. I also worked on the collision box for the mongoose so that only mangos that hit him in the torso, head and hands count as caught mangos. This way, you can’t get freebie points if the mango just touches the tip of his tail. Not sure how popular that decision will be, but it should increase the difficulty a bit from being painfully simple.


COCOS2D, Retina Display and UIImage

I’ve been having a small issue with my iOS game development for a while that’s using the COCOS2D framework. Since the start of development I wanted to make sure I supported the retina display. For the most part, I had no problem adding the double resolution images with the -hd filename suffix (COCOS2d doesn’t use iOS’s standard @2x suffix).

I only started running into an issue when I tried swapping out a texture on a sprite with another image on the fly. I was using the following code to create the texture:

[[CCTexture2D alloc] initWithImage:[UIImage imageNamed:@”fullstar.png”]];

When I replaced the sprite’s texture with the one created above it was always using the lower resolution image, not the fullstar-hd.png image.

Turns out UIImage is an iOS class and not a COCOS2D class so it follows iOS’s retina display rules. In this case, I need to have an image named fullstar.@2x.png. Once I created that image and added it to the project my retina resolution image was loaded.

So, what did I learn here? Make sure you know who made your objects! If it’s a COCOS2D object (prefixed with CC) use the -hd suffix for images. If it’s an iOS object, @2x. Simple mistake, and as per usual makes perfect sense in hindsight. Also, this probably would have been avoided by using a spritesheet instead and just treating the changing of the image as an animation.


Who Does Google Think They’re Fooling?

I don’t know why I’m so angry, but the last couple of days every little piece of bad or stupid news has just set me off. It started with seeing headshot after headshot during the Stanley Cup Playoffs, and now it’s with a news story about Google warning about the web not being ‘open’ enough.

I came across an article from The Guardian where Google co-founder Sergey Brin is talking about the threat Apple and Facebook pose with their ‘walled garden’ approach. He is quoted as saying:

“There’s a lot to be lost,” he said. “For example, all the information in apps – that data is not crawlable by web crawlers. You can’t search it.”

Let me translate that statement into what it REALLY means: We, GOOGLE, can’t search this data with our web crawlers and put it in our search results. Therefore, we can’t stick ads beside it and make tons of money!

I don’t deny that Sergey probably cares a lot about the web being open, but he shouldn’t sit there and pretend that his concern is primarily based on moral beliefs and not financial gain. I doubt if he was a billionaire who ran a window making factory that he’d be pontificating on the merits of an open web. But if he did it certainly would have been more convincing.

Note: this article was originally titled “Google Is Full of Shit” but I calmed down a bit after writing this article.


Free Stuff Gets Me Every Time

So I am working on another app just to get some free stuff. It is a recurring theme for me, and it’s how I started off developing apps.

My first app was PlayCreator for the Blackberry Playbook. The reason I wrote it was because RIM was going to send me a Playbook for free if the app was ready before launch. I then converted it over to Android (here) because Google and Samsung gave me a free Galaxy Tab 10.1

I’m at it again now with a new Windows Phone 7 game, Mongoose Loves Mangos. The only reason I’m making this game is because the Canadian arm of Microsoft is offering free stuff to people who create new ‘quality’ Windows Phone 7 apps. If I make 2 I get a free phone. If I only do one I get my choice of some other stuff. So, assuming I get this app and Picado done I’ll get my hands on a new Windows Phone 7 phone (stupid name).

Here is a short demo of what I’ve got done so far. What I’m showing here is the sliding effect when the mongoose changes direction. Also to note, the concept art was done by Paul Covello