RWilson
His final sentences might be relevant to this topic:
On high CPU load we might actually cut [the max framerate] into half, e.g. 30 frames/sec. OS X already does this in certain conditions.
Wish he had expanded on that a little more. Any idea what conditions cause OS X to halve the framerate?
It's hard to describe my surprise that my 5-year-old PC, with a low power 1.6Ghz CPU, can easily breach 100fps while playing JamLegend, and my 9-month old, dual-core 2.66Ghz MacBook Pro can barely squeak out 40fps.
Speaking of framerate in Flash, setting the framerate on a particular SWF does not actually make the SWF run at that framerate, even if the client machine can run at that framerate. Rather, the framerate seems to be more a measure of CPU resources dedicated to running the SWF.
For example, back to JamLegend: My MBP can run JamLegend at 40fps, but not if the framerate is set to 40fps. If it's set to 40fps, I'll get 20. It it's set to 60fps, I'll get 30. In order to get 40fps, the framerate has to be set to 100. Meanwhile, on my old XP machine, setting it to 40 gets 40, 60->60, and 100->100.
So, very good question, why is it that Flash performance is so different on OS X than Windows?
To quote John Stewart Mill here, "He who knows only his own side of the case, knows little of that. His reasons may be good, and no one may have been able to refute them. But if he is equally unable to refute the reasons on the opposite side; if he does not so much as know what they are, he has no ground for preferring either opinion."
AS3 Bitwise gems - fast integer math
But yes, Flash player has an unpredictably crappy internal clock and performance varies significantly based on the browser and OS, so synchronizing the notes with the music has been a challenge. For the most part, I think we've done a fairly good job compared to the existing players. We scale intense tasks dynamically in game but there is definitely room to improve (custom a/v delay, controller delay, really-crappy-performance mode, etc).
It's an awesome book about the history of computing, human-computer interaction, and all sorts of things you're familiar with but may never have known where they came from or how they evolved.
http://www.amazon.com/Dream-Machine-Licklider-Revolution-Com...
As for in-interview questions, Joel also had some good advice (http://www.joelonsoftware.com/articles/GuerrillaInterviewing...), use two types of questions: (1) softballs, and (2) complex questions requiring a grasp of multiple layers of abstraction, like C pointers or recursion. With type 1, he recommends caring more about how quickly they do it than if they eventually get it right. For type 2, the goal is more to see how they think, and you're free to help them along with the trivia that is easy to forget but easy to find on Google in 15 seconds.
The JamLegend Fragment Cache
"To recover for trade dress infringement ... a plaintiff must prove by a preponderance of the evidence: (1) that its trade dress has obtained “secondary meaning” in the marketplace; (2) that the trade dress of the two competing products is confusingly similar; and (3) that the appropriated features of the trade dress are primarily nonfunctional."
Continuing ...
"Strength of ... trade dress depends upon the interplay of two elements, the uniqueness of the trade dress and the investment in imbuing a trade dress with secondary meaning."
... which makes trade dress difficult to prove, even to only a preponderance of the evidence.
Were we to switch to MessagePub just for the e-mails we send from JamLegend for friend requests, challenges, referrals, new songs, etc, our communication costs would increase by 600%. For reference, we use sent.com at a price of $25 for 6 months, which lets us send up to 2K messages/hour. Paying $2500/month would be a vertical hike from $4.16/month. I know your pricing page lists that custom solutions are available for high volume, but I can't imagine that the price would come down enough to be reasonable.
So, I think the idea of one service to hit your users on whatever communication medium they like is cool, but the pricing isn't affordable at scale. Think about it like this: if somebody else had built MessagePub, could you afford to have ShareMeme use it?
It makes more sense for products that don't send a lot of messages, and need to be able to send to all sorts of devices. One example that comes to mind is for server monitoring: if a server is misbehaving, you want to be notified, and if you don't see the first message, the message needs to escalate quickly on multiple mediums, perhaps to other people.
Combining Agile Development with Customer Development
Releasing often is about gauging user feedback to evolve features, seeing how user's really use things and discovering what nobody foresaw. That, however, does not mean that you're supposed to give in to each and every feedback request from users. Most of all, releasing early does not absolve you of the responsibility to consider the effect the feature will have, in either its requested form or your translation thereof, on the direction of your product.
To expand on that, your users will have ideas for features that would take your product in a direction that you do not want to go. Releasing often does not mean that you have to go that way. It's perfectly fine to say, "You know what, we're not going to build that," and still keep releasing changes every couple days. Users provide feedback, but ultimately, you control the direction of the product.
So the question becomes: (1) Do you embark on this journey as a ship, taken by the winds and currents of user feedback wherever they may roam? Or, (2) Do you get out some oars and influence your path.
Remember, it was your vision that caused you to start this. You shouldn't discount that just because users want things you're not providing. That's not to say that you shouldn't listen to user feedback, just that you have to decide upon your philosophy and either stand firm with your product direction, be comfortable with having the direction swept out from under you when the site begins to grow, or drift somewhere in between.
So, rather than another "Lisp rocks, Java sucks" post, we get to read a intellectually sound argument. Refreshing.
To be fair, one equally shouldn't try to program in Java with python on the brain, it's going to turn out just as hideous and slow, and the developer will probably be more furious at the number of recompilations caused because approach the problem with the right mindset.
Secondly, there is a business/blog play that you overlooked. There is a reason TechCrunch didn't build Elevator pitches as a Facebook Group, or on flickr, and it's the same reason we (I'm one of the founders of JamLegend) didn't waste our time using a social network as a video site. The point of the mockup video sites (for Techcrunch Elevator Pitches, VentureBeat, and Mashable), is to show that the video services of all of those businesses could have been built on Fliggo, quickly and easily, and at what I presume to be a reduced cost. The hack solution is wordpress + YouTube, but that's not very elegant, lacks a certain amount of professionalism, and can be difficult to monetize effectively. So, to have a more professional solution before Fliggo, you had to develop your video site in-house, outsource/contract/etc, or use something like Brightcove. Now that there is Fliggo, the process became as easy as point-and-click, while still allowing a full array of customization (as we took full advantage of).
Fliggo Lets You Build Your Own YouTube [YC S08]
So, fully recognizing that there is more to HN than earning karma, I'm still intrigued by what these graphs might look like.
Ask HN: How much are you paying for your karma?
To dismiss any ideas that karma could be purchased or that anybody does: that's not what I meant, read on.I got thinking about this after reading a comment on another post about time = money, and wondered how much time karma leaders have spent on news.yc. Effectually, how much have they paid for their karma.And, no, this is not high-karma bashing.Consuming news.yc can be a quick way to find...
if (a) { return true; } is just as redundant as an if (a == true) statement.