Tuesday, June 09, 2009
Saturday, June 06, 2009
Video Game Industry Rant
Video game manufacturers may pressure resellers
Video game manufacturers have long tolerated the practice of retailers reselling used games without any of the secondary sales going back to publishers and developers.
But the tough economy and the increasing number of retailers in the used games business are bringing a sore subject to the fore and contributing to a migration toward more downloadable content and full digital distribution of games.
...
Video games are different from movies or CDs, which often hold more sentimental and replay value over games, which can be played through in 10 hours and then discarded. The challenge for the industry is to get consumers to buy games they'll want to hold on to.
This exposes that some people in the industry just don't get it. If you make a good game, like Bioshock, GoW, Halo, L4D, R6V, it will become a classic that people keep in their collections forever as a badge of honor. Something they come back to play with their friends over and over.
Take "Fallout 3" for example, the *used* price is still 80-90% of the full new price 3/4 of a year after its launch. This is because no one is selling their copies back, so the demand outstrips the supply by a large margin. This is because the game is a classic that the Bethesda Game Studios clearly cared a lot about when they made it.
Make throw away 3rd party Hollywood tie in titles and yes, people will treat it just like you do: Play it and sell it back like the trash it is.
This is exactly how it works in all media. People buy the latest trendy pop album, listen to it to death for a couple months, then when they find they just don't listen to it anymore because they are on to the next big thing, they take it and sell it at a used CD store for 10-20% of its cover price. This *increases* the total sales in the system, if you don't get this you need to learn some econ 101.
I'm sorry you guys seem to think you deserve more cash, but your failed understanding of the free market. Your failing business modeling is not my problem. That is your problem to figure out. And if you take a look at the companies who DO get it (lets see... Valve, anyone?) you'll see that they keep their titles alive through a constant flow of new, free updates... why would I sell my copy of the organge box when I know Valve released a new update every few months?
/rant off.
Labels: games
Thursday, June 04, 2009
Saturday, May 30, 2009
Bubb Rubb Rides Again

The whistles go: WOOOOO!
This post on Autoblog about aftermarket clip on tail pipe whistlers brought up all kinds of good memories:
Vitriolix - Whistler (mp3 download)
Which was my remix of:
I hella <3 Oakland.
Thursday, May 21, 2009
I've conclusively determined that Waggy is the faster Josh
This morning Josh Waggy and I rode out to Alameda and wandered aimlessly until we found this tiny little sub-island that forks off the main island. It was really pretty out there, slightly foggy views of SF and Oakland and the Peninsula. It's the little hook on the south-western side there:
That strip of road along the beach on the south side of the main part of Alameda is still my favorite bit of road hands down. It's so smooth and fast, very scenic and there are two not heavily trafficked lanes each direction, so I don't feel bad about taking a whole lane for myself. Though in the evening there are so many people cruising, bbq'ing and walking on the beach and hitting up the awesome Sushi restaurant near there, it's not fun to ride there at all. I always put the hammer down and try to sprint the whole length there to see what my top limit is these days. This time we sustained 27.5 mp/h for a quite a bit.
I've conclusively determined that Waggy is the faster Josh... this will not stand.
I also just realized that I passed 500 miles on my bike sometime this month:
Member Since: 10/12/2008
Total Maps: 42
Total Workouts: 39
Total Distance: 527.23 mi.
Total Burned: 29,065 (kcal)
Hooray for lungs and leg muscles.
Labels: cycling
Monday, May 11, 2009
Two-Stroke Rhythm Section Looks Exhausting*
This reminds me of a wonderful duet for trombone and tractor I once heard at the SF Contemporary Music Players, I wish I could remember who that composer was.
Tractor Used As Drums For Sweet Georgia Brown
(thanks steve)
* apologies for the pun, I couldn't resist.
Labels: weird
Monday, April 27, 2009
Monday, April 20, 2009
Bike Parkour
My jaw dropped and stayed down the whole video. This guy is just so inventive and graceful, and totally insane:
I love the shots where after he jumps over some 20 foot railing, everyone around comes to look over the edge to see if he's ok:
"wtf? did that guy just..."
(thanks steve)
Labels: cycling
Thursday, April 16, 2009
Wednesday, April 15, 2009
Friday, April 10, 2009
Where The Hackers Get Together
PRI's The Takeaway did a nice short video spot on the mixed media hacker collective phenomenon, specifically about NYC Resistor:
"Hacker spaces" are giving geek tinkerers a place to gather, create and collaborate
(My brother is the guy with the bags full of hacked iPods)
Thursday, April 02, 2009
The Buried Lead in Amazon's Elastic MapReduce Announcement

Amazon just announced that you can now run Hadoop based MapReduce operations on massive data collections stored in S3, computed on their EC2 cloud service:
Amazon Elastic MapReduce
This is almost magically beautiful, the possibilities for small science teams to be able to do super-computer level computation (that would traditionally require big teams and big budgets) with a small team and almost no budget... just, wow.
What I also find interesting is the buried lead in this announcement though. That is that this is the first time that Amazon is directly trying to compete against Google's App Engine. The distinction being that App Engine is "platform as service" while AWS is "infrastructure as service". In human words, Google lets you build applications and let worrying about how the infrastructure will scale up your application to meet huge usage patterns up to Google's engineers.
In contrast, Amazon's AWS lets you build your own scalable infrastructure easily with their services, but you need to develop all of your own load balancing and auto-scaling features (or use someone like Scalr's or Rightscale's wrapper around AWS, if you are willing to pay the considerable price)
With this new service launch you just upload your data to their cloud storage (S3), write your data crunching application to their API, then upload it to their service and hit go. This is exactly the workflow of App Engine.
Glad to see the competition is fierce and fast in cloud services right now, this is a great time to be a developer.
Labels: cloud-computing, coding
Monday, March 30, 2009
The Beauty and Natural Splendor of Cycling in Oakland
This is the official "Bike Route" in Oakland. Yep. Broken down fences, stagnant water pools, abandoned buildings, interstate overpasses...
Tuesday, March 24, 2009
Halted / Haltek in NYT

Tina pointed me to this great story on Halted, where I had my gadget-geek transistor lust set affire as a teen:
A Haven for Spare Parts Lives On in Silicon Valley
Don't miss the audio slide show
Also, I just need to throw up some props to Weird Stuff as they are always true to their name.
Labels: electronics, geek
300 Miles Ridden: The Power of Self-Deception
The last two rides I went on I woke up tired and didn't feel like going, but I managed to trick myself into it by telling myself I'd "just go on a quick couple miler." Sunday I went totally bonkers and tricked myself in almost 24 miles of aimless wandering:
Next time I head down that way, I'm going to skip the sewage treatment plant...
Then this mornining Josh Waggy and I talked ourselves out on a "quick ride" to the beach in Alameda, and instead wandered are way up to Alameda Naval Base (about 15 miles):
We ended up messing around out at the Alameda Naval Base skatepark, wishing we were 15 years younger and with bikes more suited to the terrain:


It amazes me that this gorgeous skatepark is totally empty every time I've been there. Though I suppose skating 10 miles out to it over pretty shoddy, gravelly roads is no fun.
Today's deception put my total tracked rides up over 300 miles. Hopefully the one side of my brain that I'm tricking here will stay stupid and I can keep this pace up...
Labels: cycling
Monday, March 23, 2009
Is Salesforce.com 100x as efficient as Amazon?
The Efficient Cloud: All Of Salesforce Runs On Only 1,000 Servers
The raw numbers in this article are pretty interesting:
Salesforce talked about its own back-end infrastructure and revealed that all of Salesforce.com runs on only about 1,000 servers. And that is mirrored, so it is really only 500. Think about that for a minute. Salesforce has more than 55,000 enterprise customers, 1.5 million individual subscribers, 30 million lines of third-party code, and hundreds of terabytes of data all running on 1,000 machines. Amazon's Web Services, in comparison, runs on about 100,000 machines I am told by someone with knowledge of Amazon's server infrastructure.
But I'm a little confused about how he takes those and jumps to the conclusion he leads the story with, that salesforce is 100x as efficient as AWS:
But still, that is roughly a 100 to 1 efficiency advantage that Salesforce has over Amazon's cloud.
In order to make that calculation, it sounds like he's assuming that Salesforce does 1-to-1 the amount of actual work (processing, transfer, etc) as all of amazon's services do. Thats a pretty remarkable proposition to make, and to hinge your entire article on, without providing any numbers to back it up.
Labels: cloud-computing, coding, ec2, scalability
Friday, March 20, 2009
Asus: We Put Computers IN Computers

Meditations on Asus Fanboyism:
josh: i'm stoked on netbooks
tina: Yeah, I am coveting.
josh: it validates something i've been saying for years
josh: that companies need to use the economies of scale and mores law to bring down the entry point instead of just upping the power of the $2000 bracket
tina: My philosophy is that most people buy more computer than they need.
josh: we can have $40 laptops
josh: there no reason why not
josh: i'm a total asus fanboy now
josh: i need an asus shirt
josh: somehting super nerdy
josh: with a picture of a pc in a pc in a keyboard in a pc monitor
tina: "Asus: pushing the limits of logical computer design."
tina: I think there's basically someone who works there that is good with legos.
josh: "Asus: pushing PAST the limits of logical computer design."
tina: Taking all of the components and building strange stuff.
josh: "Asus: yeah, half our shit makes no sense"
josh: but they epidomize the idea of fuction over form
tina: "Asus: who says you can't have two monitors on one keyboard?"
josh: they just do enough to make it look passablely good
josh: but that's it
josh: you arn't going to pickup college girls with this laptop
josh: But it only costs you $200, and you get your shit done.
As quick rundown of some Asus products:
Gigantic wooden lapdesk and laptop in one
A pine scented laptop
A touchscreen computer in your keyboard
A touchscreen computer in your laptop trackpad
A bamboo computer
A touchscreen computer in your computer
Origami laptop concept
I love these guys... its like Willy Wonkas Computer Factory
Thursday, March 19, 2009
Google App Engine Meetup Notes

A couple nights ago I went to the Google App Engine (GAE) Meetup sponsored by the Silicon Valley Cloud Computing group and the SF Bay Area Google App Engine Developers group (Updated: Thanks for catching the omission Bill). I've been watching GAE since it launched almost a year ago because its a very cool idea in cloud computing, but not without a few issues that needed to be addressed. Luckily, the event was really impressive and lets just say I'm seriously into GAE now. It definitely rose to the top of my to-do list.
As the first speaker, Mike Repass put it, other cloud services like EC2 offer "Scalable Infrastructure as a Service", whereas GAE offers a "Scalable Platform as a Service". In other words, if you code your app top GAE, you have to do zero (I mean it, zero) sysadmin work to setup, maintain and scale your site. Further, because it shards out your data automatically across google's BigTable "database" that they use for all their products, and the platform handles spinning up app instances for you behind the scenes, if you get your app working for 1 million users, it will work for 11 million users with little to no changes. Incredible.
Whats also incredibly exciting about GAE is that they are really following a Blogger type model with it. They are giving away the service totally for free up to approximately 5 million page views per month. This is an insanely huge amount of traffic to give away for free. I would seriously suggest anyone who has designs in mind for small one off web app projects, drop everything and at least give GAE a shot.
I'm a really big fan of Amazon's offerings (AWS), in particular S3, EC2 and SQS, and I use them every day for my day job. At first these services seem to overlap, but I think they are pretty orthogonal to each other. GAE's purpose is to target the heart of the bellcurve of the needs of the spectrum of web apps out there, no more, no less. This means that out of the box, you have to considerably change the way you think about developing your application, but its probably something you should be doing anyhow if you plan to be able to scale your app in the future.
One of the big things you lose in GAE is access to a shell on the machine you are running on. This means you can't do traditional sysadmin things like CRON jobs to automate scheduled tasks (send out a newsletter, sync data to an external service, etc). Also, you can't exec outside processes to do some of your work. For instance, at my day job we are building a backend service on EC2, S3 and SQS that autoscales to do massive bulk conversion of video (and soon other) content. What is all boils down to in the end is a very fancy wrapper around FFMPEG which does the actual conversions. This is out of reach for GAE, so our company will be using both AWS and GAE for the foreseeable future.
I went to the meeting with finding the answers to a couple problems I envision with the service, and they have pretty much address all of them to my liking. I'll be taking the plunge and doing a test implementation of a project for work with it now, very exiting.
On a personal note, I had a nice moment of "fanboy dream come true". I've been pretty obsessed with Python for the last few years since I started working with it professionally at Outspark.com. I work with a whole pile of different languages all the time, but still after all these years, every time I wish I was working in Python. At this event I had been hoping that I would get a chance to talk directly to some of the GAE engineers about my problems with the product, and wouldn't you know it, right before the first talk starts Guido Van Rossum (the creator of Python) sits right next to me. He was really friendly and excited to talk to anyone who had questions about Python or GAE, so I had the rare opportunity to pose my concerns with their product directly from the source. Awesome.
My concerns were:
Vendor lockin. if you code to GAE, how can you break your app out of their system and run it on a competitors system if for some reason GAE's terms, price or other features just aren't cutting it for you. The Django wrappers I discuss here pretty much handle that for me. I'm going to go one further and see if I can write a Amazon SimpleDB backend for one of them to really let you port over to a similar service without too much pain. Not sure this is realistic yet, just an idea.
Importing massive amounts of data. Since you pay per transaction, and for data transferred and stored, the thought of trying to import my 10 million record events database was a bit scary. Of course the GAE guys thought of this and have written a bulk importer which will take a giant CSV file and split it into chunks, transfer it to GAE and import it into your datastore, all automated. I'll post back my experiences with it later. Guido also mentioned that there would be a much improved feature "soon".
Refactoring your data. So lets say you've gotten your 15 millions records happily into the Google datastore, but suddenly business requirements change and you need to significantly refactor the way your data is structured. Now, this is a hard situation in any database system, but the thought of only having external API access to do this amount of work is daunting. Looks like GAE will have something called "workflows" in a not to distant release that should allow this sort of bulk work to be done in a sane fashion. Guido suggested a really nice short term solution, which is to version every record in your datastore, then make any objects which deal with that data aware of how to update a record, and have them update each record before making use of them. This way the datastore will magically heal itself up to the latest revision over time.
This is pretty symbolic of how you just have to think a little bit differently about attacking problems in something like GAE. A similar approach was demo'd by Gee from Rotzy in order to get around the lack of any facility to do schedule, batch processing with GAE. In short, Rotzy has a task que, and any requests that are simply serving static content (like the profile pictures on a comment page) first check the task queue to do a little bit of batch work, then serve there content and die. A Pretty damned inventive solution.

(Photo of Mike Repass on rotzy, and yes that my green shoulder in the foreground ;)
A couple questions I still have lingering:
One suggested way to share one data source with 3 frontend user app's was to have 1 backend app that does the data hording, give it a REST api and have the 3 frontend apps fetch their data over that API. This was suggested by someone giving a talk that night... but isn't that a violation of the TOS? Wouldn't that be how you can "shard" your app across several instances to get over their free quota limits?
Currently there are two overlapping projects to let you develop to Django running on GAE (Google App Engine Helper for Django and App Engine Patch). The biggest distinction is that Helper actually wraps up the GAE data store api's in a Django compatible way, whereas Patch claims that that is impossible, and so doesn't even bother. It would be interesting to see some deeper comparisons of the two.
Thursday, March 12, 2009
Wednesday, March 11, 2009
Sunday, February 15, 2009
Laugh Out Loud Offensive
Check out this laugh out loud offensive Goodyear ad from 1970:
Most. Misogynistic. Ad. Ever.
This comment sums it up:
"They're editing this like a confused Golden Retriever is driving the car."
(from autoblog)
Saturday, February 14, 2009
Hill Ride Success!
Today I made the ride up to the Mormon temple up in the Oakland Hills. This is kind of a big landmark for me, one of the first goals I set for myself to take riding seriously. It's about 700ft climb in not very much distance, so the first time I tried to do it, I literally ended up sitting on the side of the road trying not to puke ( Hill Ride Aborted). This time I planned a little more carefully and I'm a much stronger rider. I think

Yeah, that's all the smile I could muster. Let's just say I was a bit tired. The view from up there is amazing:

The ride down was quite fun, I was coasting at 30mph down a 6% grade and there were no cars on my road, so it felt nice and safe... until it started pouring rain all of a sudden. That made the rest of the ride less fun.
Here's the route I found:
Thursday, February 12, 2009
10,000 Calories Burned
When I decided last fall that I would take up cycling in a serious way, I definitely had to decide weather or not I was going to stick to it enough to warrant all the expense of buying all this super-nerdy cycling gear.
This morning I was able to get a decent estimate of how much I've ridden:
Member Since: 10/12/2008
Total Maps: 14
Total Workouts: 14
Total Distance: 192.98 mi.
Total Burned: 9,841 (kcal)
Holy crap, I guess I'm really doing this. My next ride will hit 200 miles and 10,000 calories burned, that's definitely some kind of landmark.
Interestingly, my weight has actually gone up a pound or two this week. I suppose any fat I've been burning is being replaced with leg muscles...
I've been using my GPS in my phone to log all my rides and upload them to mapmyride.com (i have a huge love hate with this site, great idea, great futures, worst user experience/design ever).
Stay tuned, my next blog post is going to be all about pain.
Labels: cycling
Monday, February 09, 2009
Friday, January 30, 2009
Cyclocross: No one's finest moment
steve: cyclocross is so insane
steve: "take a bike race and make it silly as possible"
josh: whats up with that last crash?
josh: "OMG, some guys crashed here 2 minutes ago, but they are all gone, I'll turn left instead of right and smash into this wall"
steve: I think he just lost control
steve: was trying not to bail, but ended up going the wrong way
josh: that was not his finest moment
steve: cyclocross is no one's finest moment, I think that's the point
Labels: cycling
Monday, January 26, 2009
Hill Ride Aborted
My new thing is Road Cycling. I'm trying to avoid the inevitable 30's Programmer Gut (tm) in some sort of semi organized way... so yesterday I set out as soon as the rain stopped and thought I'd let my whims guide me. I started out in lovely (not) Fruitvale, and quickly decided I that I should leave the post-industrial wasteland. Riding in a glorified giant warehouse loading dock/municipal dump clogged with SUV's and work trucks is really not as glamorous as it sounds (oh I hope that crunchy thing i just rode over was broken glass and not a hypodermic needle...) I looked up to the hills and thought, with a stroke of genius, "I'll see if I can find a nice path up to the Mormon Temple. I've always wanted to see the view down from up there". Note to self: next time you venture into those hills, check the graded cycling map before you set out.
There is actually one spot on a stupid steep hill, right here:

...where i sat in a guys driveway trying not to puke, until he pulled up and gave me a knowing glance. Probably not the first chubby guy in total cycling nerd gear huffing and puffing on that hill he's seen. And it won't be the last time he'll see me there either. Stupid hill, I will conquer you! But not today... I turned around and went home.
(You can see my 3 failed hill climbing attempts around "redwood heights" on the map below)
As an added adventure, when I was coming back down on Maple, I encountered a beautiful bit of planning from the City of Oakland. They decided that all they needed to do to cover up the giant (4ft square?) gaping drainage holes that take up the entire median/gutter was to weld a few four-inch wide pipes across it, all parallel to one another, leaving 1 foot gaps between them. My entire bike could have easily fallen right through the grill, and considering that the road was packed tight with the giant SUV's that are so much the landmark of this part of Oakland, this thought was not totally off my mind. I would have taken a photo if I wasn't so preoccupied by not falling in one and being washed out to the bay.
Labels: cycling






