Appcelerator Titanium: From a developer's perspective - <AUTHOR> http://tannerburson.com/2011/04/03/Thoughts-on-Appcelerator-Titanium.html <comment><USER2> Thanks for your feedback. Certainly lots of issues that we can and do plan to address. On the tools side, as several people have mentioned below, we are releasing a new IDE this week called Titanium Studio. This release will address two critical areas that you identified in your post: debugging and overall tooling stability. The IDE itself is based on Aptana Studio, which has several years of solid development behind it. Sample projects, code completion, and other frequently-asked features will be included. Titanium Studio ships this week.

Certainly there are other areas in your post where we can improve. Know that we are making investments in all of the areas you describe and we certainly appreciate everyone's support as we grow the platform, the community, and the supporting infrastructure behind it.

Thanks again for your feedback

Best Regards,

Scott Schwarzhoff VP, Developer Relations

<comment><AUTHOR> I appreciate your comment, and it's great that you're reaching out to the developers using your platform. I'm excited to try out the debugging features of Titanium Studio, and hopefully it's more transparent in the steps it's taking to build an application as well.

Your second paragraph rings a bit hollow though. I'm sure you all are committed to growing the platform, I'm sure you're making investments. What software company isn't trying to move things forward? But as a user, I frankly don't care about how much better things will be. I just want to get things done, and the current state of your product makes that difficult. Worse than that, the current track-record of development (as witnessed by may comments here!) doesn't show a lot of progress.

I earnestly look forward to seeing improvements in the near future, as I have an application to deploy and support!

<comment><USER2> Well, we just released Titanium Studio... with debugging. How's that for moving things forward? And sample projects and code are included, with a ton of new features coming in the full release later this quarter.

We have about 2,500 apps being built per month now. This number is increasing by about 50% month over month. In total, we have over 15,000 apps in the various app stores. That puts us as #1 go-to mobile development platform behind Apple and Google. Seriously.

Obviously, we'd love it if everyone was successful, but we're 50 people and running flat out. And that last round of $9M in funding? It's gone to QA, to acquiring Aptana, to adding 5 engineers in the past 6 weeks on Android, to quadrupling the amount of content out there (have you checked out our latest guides? They're awesome! <http://wiki.appcelerator.org/display/guides/Home>). There's a ton in there... and most have been written by the community!

Look, I'm not saying that we're perfect. We have LOTS to do. But we're a platform company that's listening intensely to developer needs on a very frequent basis and making big investments in the areas that need the most help.

So, yeah, Q&A needs a forum. Our API needs more parity, we certainly need to be more responsive to the 100 or so questions coming at us every day. But c'mon, if you're going to build a _real_ native app in no time, a platform that has 3,600 methods and processes in use by 130,000 active app developers must have something going for it don't you think? Try Wunderlist. Try GetGlue. Try ScoutMob. These are all top apps written on Titanium with small dev teams. None of these apps were built with a support subscription, btw. Stick with it and you'll see just how much can be done with the platform.

Give us another shot with Titanium Studio and the other cool stuff that comes out this quarter. We'd love to see you back as a Titanium fan...

<comment><USER3> Thanks for letting us know some of the backstory there.

It may be just me, but reading your comment makes me more worried about lack of focus there than less... It just seems very frenetic.

I've been developing on Titanium for several months now (as a paid subscriber) and more and more the decisions and priorities of the company really puzzle me. It seems like Appcelerator mostly ignores a shaky foundation while excitedly piling more 'features' on top of it and using tons of duct tape to try and keep it from collapsing before the money runs out.

The most compelling evidence for this is the pull requests being ignored for long periods of time. How can we be excited about a platform that is so slow to even accept help from the open source community to improve it? Meanwhile, I frequently get calls from Appcelerator trying to get me to buy in-person training and even a new 'certification' program. Really?! That's where your putting your resources rather than the actual platform supporting your 'platform'?

I really really want to like Titanium and be a fan, but right now it seems like asking me to please be a Microsoft fan. At this point I'd probably recommend MS over Ti. That's not a compliment :(

Please please please focus on your core experience. Ignoring it will drastically damage your reputation among hackers (as you can already see happening) - and hackers are the ones who decide which platforms to use (and which to abandon).

I would gladly pay several times more than I am now for an 'A' quality platform. Money is not an issue for many of us developers, but quality will be the deal killer here. I've many times wished that I could even pay a bounty to fix certain platform bugs.

Please please focus on your core.

Sincerely,

Someone who'd really really like to be a fan

</comment></comment></comment></comment><comment><USER4> I had a similar experience with the platform. I was very excited, browsed through the APIs to check the required features were there and jumped in. It then took ages to get the right versions of SDKs/XCode and Titanium installed, which also involved searching though forum posts and patching files. Finally I got the "Kitchen Sink" app working. All was good.

I started implementing my app and quickly became flummoxed by the difference between seemingly identical windows (it's all down to "execution contexts" explained here [http://iamwil.posterous.com/when-it-comes-to- titaniuminclude...](http://iamwil.posterous.com/when-it-comes-to- titaniuminclude-its-a-trick) not in the Titanium Docs).

And now Apple have made their subscription functionality the only game in town and that module (StoreKit) will cost a hefty Appcelerator subscription ($2500/yr, IIRC)

Bah... I've abandoned my Appelerator prototype and I'm going to try out PhoneGap which looks like it's really improved in the past ~6 months

Edit: typo

<comment><USER5> Titanium is much, much more tolerable and sane if you ditch Ti.include and use its CommonJS Ti.require() instead.

<comment><USER6> Is that what screws up global events (at least on Android)?

</comment></comment></comment><comment><USER7> I created a iOS app in Titanium Mobile as well, and agree on your points. In addition:

\- Multi platform support is very bad. A lot of functionality is working in a different way or not at all in Android and you'll have to find out most of this by trying.

\- Stuff breaks with new versions of Appcelerator

\- Due to the lack of feedback in the compilation process debugging some problems will take hours

\- Creating a complex state-based navigation other then just a basic navigation controller is quite hard and bug-prone, a lot of it has to do with the sometimes very eager garbage collection (completely overlay a item with another, remove the overlay and the underlying element is gone, because it has been collected).

On the other side though:

\- Development is a lot quicker (allthough you will lose time fixing stupid bugs).

\- App works just like a native app and is quite fast

\- A lot is possible, including custom fonts (using them in 3.1 causes a crash, so iOS 4 only, not documented though and caused crashes in the app on iOS3, so be careful, took me a while before I found this), the kitchen sink is a better resource as the docs.

For my next mobile app I think i'll use PhoneGap, since HTML is more portable. While I developed this app I had the constant fear that I would come across a bug that would stop me from finishing the product. It's a risky thing to work with, but you can get some great stuff out of it in no-time if you're lucky.

</comment><comment><USER8> I don't disagree with him but I still think Appcelerator is worth it. Because as annoying as Appcelerator can be it's still quicker than writing your app twice and Apple's devotion to objective-C makes it very hard to carry over code from other platforms.

I would give two warnings though (which are supported by the author's piece)...

1\. You need to make sure your use case is covered in the Kitchen Sink example. If you can't take those pieces and put together what you want to build than you shouldn't bother with Appcelerator (the documentation is pretty useless)

2\. You need to buy support. The community is non-existent but the staff support is pretty good. A lot of times their advice boils down to "just ignore that error" but that's helpful with a lot of the errors generated.

Also note Appcelerator just bought Aptana, a company that makes development software. So clearly they realize there's a problem are are taking steps to fix it.

Edit: One last thing in their defense. Though they've been slower than I'm happy with in making their platform easier they have added a lot of new features. Things like Bump, bar code reading, credit card reader support and in-app purchases aren't available elsewhere (though these were just announced so I don't know how well they work yet)

<comment><AUTHOR> I haven't bought support, so I can only speculate based on their community forum, and public bug tracker. With that out of the way, unless paid support gets custom code deployed to them fixing core platform problems, I don't see it as being a solution.

In it's current state I couldn't recommend Titanium to anyone. I hope it continues to improve, and get better, as both the idea and implementation have a ton of positives, it's just almost unusable right now for anything big enough to really see the benefits in the multi-platform support.

<comment><USER8> I'd be interested to know what you consider the core platform problems because I've never run into anything that couldn't be worked around.

Don't get me wrong. I sympathize. I lost several nights of sleep because I was so angry after a day of using Appcelerator that I literally couldn't calm myself down enough. There were days when I'd decided to not only stop using Appcelerator but to make it my life mission to tell other people to stay away from it.

But those days passed and eventually support (and a lot of manual error checking) got me through.

<comment><USER9> Here's two "show stoppers" that made me stop experimenting with Titanium.

1) If you have a custom UI, dragging the window around is painfully slow and erratic. Resizing the window is actually so slow it's unusable.

2) The built-in zip function doesn't seem to work with files over ~200 MB on Mac OS X.

I tried reaching Titanium, failed, and moved on.

<comment><USER5> I think most of us here mean Titanium Mobile when we say just "Titanium." Their desktop platform seems to have received much less attention from them, and is of much more questionable benefit than the mobile one, which doesn't have many alternatives whereas on the desktop there's Qt and all sorts of other things available.

</comment></comment></comment></comment></comment><comment><USER10> I'm current knee-deep in building a Titanium app for iPhone, and my experience has roughly matched tannerburson's, however, I have had far less difficulty with some aspects. For instance, I am using one line JavaScript IFs with no warnings.

The API docs are incredibly sparse, however, helpful enough for the nuts and bolts of dealing with our JSON API, storing to plist files and using the built-in HTTP client. I am currently wrestling with structuring our app such that it fits to one of the paradigms given in the Kitchen Sink; this has been incredible tough. As noted by others, sliding and scrolling behavior is erratic.

Our current iPhone interface is a fully manifested jQtouch web app, and I have pushed the performance of the app as far as possible. It isn't terribly slow, however, it one of the main bottlenecks users have in interacting with our service.

I originally set out wrapping our jQtouch app in PhoneGap - a simple task. However, given the way that PhoneGap works, the performance was no better than the current web app. I then completely rebuilt the app in jQuery Mobile (Alpha 3 at the time), loaded it into Phone Gap and discovered that the interactions and load time were slower than my original jQTouch app. This isn't to knock jQuery Mobile or PhoneGap; rather it is a reminder that for a full jQuery Mobile or jQTouch app you are looking at loading 140-200Kb of JavaScript every time you open the app. If Nitro ever comes to homescreen apps, this will be less of an issue.

The long and short of it is that while PhoneGap certainly gives you infinite flexibility in what the UI of your app can do, you have to be vigilant about keeping your load times down by minimizing frameworks. If you already have built an iPhone web app that meets your performance requirements, load it into PhoneGap.

Alternatively, if you want a fast, lightweight app with a UI that mirrors one of Titanium's demos given in their Kitchen Sink, then I believe that the struggle is worth it. All of my commentary is working under the assumption that you have no Objective-C experience.

I recommend downloading the app Wunderlist to get an idea of the extent to which one can customize a Titanium app.

</comment><comment><USER11> This was about 5 months ago, so it's possible they drastically improved it in that time (although it doesn't sound like it). But I ran into the exact same issues.

Debugging was a pain because of you were writing JavaScript rather than Obj-C and the line or file on some errors were on were entirely unhelpful.

Performance (which you don't notice in the simulator) is poor. I was working with tables on iOS, even after cutting the app down to using 10 rows, people noticed a lot of lag on iPhone 4s (and it was unusable on a 3G or 3). This was with the only scroll events being a scroll position check suggested by the KitchenSink demo they provide.

Entirely possible this was something I missed, but while it says cross- platform, you don't really get cross-platform. The difference in UIs between Android and iOS means you're going to be writing quite a lot more code to actually get an app that works on both Android and iOS.

[edit] syntax

<comment><AUTHOR> I haven't found on device performance to be too terrible for latest gen iPod Touch and iPhone 4. It's definitely inconsistent in places though.

You're dead right on debugging, it's pretty much guess and check, all the way through. Painful puts it mildly.

</comment></comment><comment><USER12> Colleagues of mine are paid users of Appcelerator's small business offering and have said the exact same thing: no community on the other side of the pay wall either, and little to no developer interaction.

</comment><comment><USER13> Yeah, it's too bad. I know a guy on the development team, and I think they're doing a great job given the complexity of the task they've taken on, but I can't recommend it for anything other than prototypes or very simple applications.

<comment><USER14> Based on what little I've seen, this sounds accurate. Both Android and iOS have a large amount of features and controls that developers are used to having access to - distilling that down into a simple codebase can't be easy.

It will be interesting to see if any early adopters continue to support Appcelerator; I'd love to see what their product looks like in a year or two. At the moment, my work is a little too complicated and urgent to want to rewrite anything for an immature codebase.

</comment></comment><comment><USER15> I had a similar experience. I built a iPhone app using the Titanium platform, and decided against releasing it in favor of rebuilding it in Objective-C. I was able to work around the lack of correct documentation, platform inconsistencies, and software bugs for the most part, and was able to get the software to run consistently and reliably on my iPhone 4, but it would randomly crash on iPhone 3's, and iPod touches. The issues seemed to be related to memory management and/or threading. Ultimately, I felt that I would be spending just as much time fighting with the middleware as I would spend writing Objective-C library code, and I would actually be able to debug the library code.

I still value the work I did on the Titanium platform from a prototyping perspective. It did allow me to quickly try a number of things that didn't work, and come upon a workable design. If I could do it over again, I would still prototype with Titanium until I had a design, then port to Objective-C before I actually made things work in Titanium. You can get acceptable performance out of Titanium, if you have a knowledge of the way the underlying SDK works. For example, because I had implemented iPhone and iPad app's before with Objective-C I was able to write the code so that it conformed to the underlying sdk assumptions, in particular tableview code performance wasn't as much of a problem for me as it was for many others because I was aware of how the middleware was likely transforming the code, and was able to construct it to maximize cacheability. I suppose with some platform familiarity and a very simple app, Titanium could be workable.

The decision to port had a couple of other advantages, chiefly that it allowed access to some of the open source mobile plugins that are quite useful, like ShareKit and some of the Augmented Reality code, along with deeper integration and better performance. Switching to Core Data seemed to be reason enough to port.

In the long run, I hope that Apple sees that there is a demand to develop iOS apps in languages other than Objective-C. I would estimate 95% of the iOS code I have written has not been performance sensitive, but has been glue code tying chunks of Apple's SDK together or IO bound background networking code. Being able to use a less verbose language with an extensive standard library and strong C bridging like ruby would speed development without seriously harming performance since sensitive code could still be written in Objective-C.

<comment><USER16> This was my experience as well actually. I looked at phonegap appcelarator and rhomobile for a while but it seemed that there was such a steep learning curve that you could just build things in the native platforms and have full access to the everything rather then having quasi access via webkit.

All three really were a letdown frankly. Right now im learning Jquery Mobile which oddly enough is kind of cool. Its got a decent community behind it. ANd its jquery so its somewhat more generic.

</comment></comment><comment><USER17> The current mobile dev scene is this:

\- Android is Java, iOS is Objc + (cocoa nightmare), Windows Mobile is silverlight (If i'm not wrong)

\- iOS (cocoa) is a pain to learn and develop something useful out of it, plus you have to pay dev licenses to apple anually,etc..

\- Android store doesn't have the projection Apple store has.

\- Native wrappers (titanium, phonegap,etc..) are buggy, lack user support, poor documentation, limited.

So, choose your poison.

What's the solution ? It's freaking insane if you want to have an app for every mobile OS out there at the moment, you need to have at least 2 different teams maintaing code. It's just stupid.

Wrappers are not the way to go fore sure, I think vendors should start considering using standard tools like Javascript, or more easy languages like ruby,python, at least for creating more simple tools, that don't require heavy graphic engine and stuff.

At least this would help companies reduce their efforts on having teams different for each OS.

<comment><USER18> You have to pay Microsoft too. What exactly do you find that makes cocoa a "pain to learn"?

<comment><USER17> The concept of Outlet was very strange to understand at first, I never knew what should I connect to what (iboutlet, ibactions), then, the cocoa classes methods are big and enigmatic sometimes. I also found that creating a simple tableview with simple content is frustrating, because you have to link so many different steps, you have to create an object for table view, create delegated functions for counting and adding items, create a mutablearray, link it to the tableview, reload it everytime you need to display...and I'm not talking about adding images and stuff.

I'm pretty noob at cocoa, but it's a very hard learning curve because Objc and cocoa have so many specific standards that are strange if you came from other languages.

</comment></comment></comment><comment><USER19> Interesting, I experienced similar frustrations starting out with rhomobile and was hoping the grass was greener on the other side.

My ultimate complaint with rhomobile is that the "native" apps are running in the web browser. I plan go into further detail in an upcoming blog post / presentation.

</comment><comment><USER20> We used it to make a simple android app in the last month. It worked and I sure liked writing the app in JavaScript vs Java but we ran into huge issues with Titanium caching resources during the build process that were supposed have be removed or updated and leaving things behind that we then had to track down and manually remove. It basically just takes whatever is in the build directory and tries to package it with little validation for correctness. My suggestion to people using it is to sanity check the code it generates in eclipse or xcode as part of your dev process.

<comment><USER21> You need to clean your build directory whenever you change resources (i.e. add new images, delete old images). It makes the build take a bit longer but you'll have no issues. So i.e. just delete the contents of the Resources/build/iphone directory and then rebuild the app from Titanium.

<comment><USER20> Oh, I know how to solve the problem. I just think the tool could use work.

</comment></comment></comment><comment><USER22> I've used the android API 2x. I think it's quite rough to get Titanium installed, it's easy to misconfigure, and it's not a huge pile of time saved over just writing the logic twice. Just give up if you think you have to instruct a 3rd party on how to configure android + titanium on mac. It's a beast.

It feels like there isn't anyone there on the forums. I'm sure as hell not going to pay 2k+ a year to experiment further when the documentation is shoddy (it rarely explains what things do, I had to read source to get doc on the video player).

And the dashboard project doohicky is stupid as hell. Just make some command line tools already, or really really commit to a GUI that works well and supports things like rename. I shouldn't have 4 projects named the same thing because I didn't open an XML file myself and edit it.

If I really need crossplatform whatsits, I'm thinking flashbuilder or that ilk at this point. Titanium did not impress.

</comment><comment><USER23> Wow, thanks for this write up, I had been considering trying titanium after an unpleasant experience with phonegap.

I went with phonegap for a project and hammered out my application quickly but then spent hours trying to optimize enough that it would run at a reasonable speed. I ended up re-writing as a native app but at least now I know.

</comment><comment><USER24> So glad to see more people pointing this out. Titanium sounds like a great idea and they market it well, but when you look closer you quickly discover that it just fails to deliver. Sadly they seem too focused on spending VC cash on adding bells in whistles when their core functionality still doesn't work. Here are a few examples.

Running their sample app. This is the first thing every developer does, so you'd think they'd have nailed this much, right? Sadly, no. Check out all the forums posts about people struggling to get KitchenSink running:

[http://developer.appcelerator.com/questions/search/kitchensi...](http://developer.appcelerator.com/questions/search/kitchensink)

Some of that is the complexity of getting the right 3rd party developer tools installed. But often projects will randomly stop compiling. Instead of fixing the underlying problem, this is their workaround (it's not just KitchenSink, it happens to your projects too):

[http://developer.appcelerator.com/question/53821/kitchen- sin...](http://developer.appcelerator.com/question/53821/kitchen-sink-wont- run-what-do-i-do)

They don't seem to have anyone who monitors their forums. When core functionality breaks and people report it, nothing gets done about it for months, even when the fix is as simple as whitespace. This was reported in Oct, and a pull request was submitted in Jan.

[http://developer.appcelerator.com/question/82691/run-on- devi...](http://developer.appcelerator.com/question/82691/run-on-device-not- working-at-least-for-ios-42-and-sdk-142)

It was finally fixed last month:

[https://github.com/appcelerator/titanium_mobile/commit/510fc...](https://github.com/appcelerator/titanium_mobile/commit/510fc60f7e3521244bd856c60ad17019876adb77)

Open source means the community should be able to pitch in, but there are 16 open pull requests from the last 2 months, none closed or even commented on:

<https://github.com/appcelerator/titanium_mobile/pulls>

New features are rolled out with sparse documentation and then abandoned. Need to style a bunch of views, try JSS - except it's not documented in detail anywhere. But maybe they dropped JSS and are working on Helium?

[http://developer.appcelerator.com/question/91331/jss--- class...](http://developer.appcelerator.com/question/91331/jss---class-based- formatting)

Or not. Helium hasn't been updated in months and still isn't documented anywhere on the Appcelerator site. So who knows.

There are many other issues, of course. Ultimately you end up having 3 options: (1) pay them a bunch of money for support, (2) spend more time fixing their software then working on your own code, or (3) just writing native apps for the various platforms (or native web wrappers with HTML core).

I wouldn't mind paying for support if the product worked great, but paying to get support for something that's broken to begin with is frustrating. It's ultimately easier to just find alternative technologies.

<comment><USER24> Forgot one other _big_ issue that no one seems aware of: Appcelerator tracks your development with their tools. Titanium Developer transmits analytics data every time you create/import/edit/delete/compile/test/install/distribute a Titanium project on your system.

To see the specific calls, just download titanium_developer and grep for Titanium.Analytics.featureEvent. If you do use Titanium and want to disable this, you should build a new version of Developer after adding the following line to tiapp.xml:

      <analytics>false</analytics>

One last note: I don't make these points just to be mean-spirited. Appcelerator clearly has some talented programmers and great technology. But silent tracking isn't okay, and clearly someone at top needs to help them focus the talent they have.

</comment></comment><comment><USER25> I have been using <a href="[http://the-m-project.net/>The](http://the-m- project.net/>The) M Project</a> for several months while building a web-only mobile app, currently in private beta and so domain-specific as to be useless to the general population. The framework builds on best-of-breed frameworks node.js and jquery mobile. Javascript ftw! The core developers hang out in IRC, or at least jump on when someone pops up with a question.

Turns out, they also have phonegap support, so I <em>could</em> deliver an app, but that sounds like more of a headache than its worth.

</comment><comment><USER26> Lots of projects want to simplify the app development process, and there are even more startups working on automating the process. Ultimately it's fine for prototyping, but not much else. Performance becomes an issue and you rapidly hit it wall with anything but native apps.

It's good to get your feet wet and get excited about the platform, regardless of it being Android or iOS, but at some point you need to just bite the bullet and pick up a good book and start working.

</comment><comment><USER27> I'm looking forward to the inevitable follow up post on the author's experience with Phone Gap... Has anyone used Phone Gap before and wants to share their thoughts?

<comment><USER21> We moved to Titanium from PhoneGap around 5 months ago - PhoneGap was just too slow for many options and did not support the low level audio functionality we needed. It may be better now though, but we haven't looked. Titanium has actually worked really well for us so I'm a bit surprised by so many developers having issues on here. Our app is coming out in about a month and is fairly large, with a custom UI:

<http://www.groovydisk.com/>

</comment></comment><comment><USER28> We have paid for premium support. Still our experience is similar to this guy, there is lots of bugs and undocumented behavior keep you frustrated

</comment><comment><USER29> I've been using Titanium for 2 months now while developing a prototype version of our iPhone application (Android later), and while I share the author's sentiments on a number of issues, I'm fairly pleased with the results so far. I'm not an Objective-C guy in the least, but am reasonably good with JS, so it's a great way to go native.

That said, some comments: \- JS Warnings. It's true that one-line ifs, property existence checks, function closure suggestions, etc. can get a little annoying. My solution is to write JS which is 100% JSLint compatible, which is fair IMO.

\- Titanium Warnings. These get annoying. I get dozens of "[object TiUIView] has an auto height value of 0, meaning this view may not be visible" warnings which are completely useless and don't identify the offending View for me to fix. Also, I get about a dozen errors like "<Error>: CGContextDrawImage: invalid context 0x0" which give me no indication which is the offending image. Etc.

\- Performance. While native, our application runs a little sluggish and certain views are choppy when scrolling, and some style properties have bizarre rendering behaviour (layout: 'horizontal', width / height: 'auto', etc)

\- Minor Revisions. The author is right, some minor revisions introduce pretty bad issues. 1.6.0 introduced some very noticeable performance degradations in TableViews, so we're still on 1.5.1 for now.

\- Documentation needs work. The API reference is lacking any mention of certain parameters, which is frustrating. The wiki has more detailed information and has essential reads to understand things like TableViews, but I didn't find this resource for several weeks into my project. Many undocumented side-effects exist, like quirky behaviour on horizontal layouts, etc. Here's an example of the kind of confusion which results: [https://appcelerator.lighthouseapp.com/projects/32238/ticket...](https://appcelerator.lighthouseapp.com/projects/32238/tickets/1437-horizontal- layout-broken-on-ipad) The "headerPullView" feature for pull-to-refresh is currently undocumented magic.

\- Barcode support is disappointing. Titanium+ introduced Barcode support, but does not support the usual 1D barcode. The additional libraries that exist (TiBar, zbar, etc.) are very difficult to compile in without XCode hackery, and sometimes don't work on the devices themselves, making debugging very difficult.

\- Bugs in XHR with Content-Type and passing Arrays, requiring workarounds when integrating with Rails. Arrays get sent as "( key1: value1\n key2: value2\n)\n" .. seriously :)

\- Titanium Developer required me to click "Launch" to start the application until I read Gene Tsai's comment on the original article which gives you command-line aliases to start your application. Awesome tip :)

At the end of the day, Titanium Mobile is a great solution, but be prepared to be patient while the platform matures, and to get creative in architecting alternate solutions when your initial approach doesn't work. I'm confident the wrinkles I point out above will be ironed out in time.

<comment><USER5> > Bugs in XHR with Content-Type and passing Arrays, requiring workarounds when > integrating with Rails. Arrays get sent as "( key1: value1\n key2: > value2\n)\n"

Can you elaborate on this? What is the Content-Type bug? What do you mean by "passing Arrays" -- how are you serializing?

</comment></comment><comment><USER30> PhoneGap and MoSync are the ones to try out for cross platform development, but honestly, it's probably better to design the app in such a way that porting it becomes as easy as possible.

</comment><comment><USER31> "It's only syntax/static checking is done via JSLint with a pretty arcane set of rules. Want to write one line if statements? That's a warning. A for loop without checking for property existence? That's a warning."

Someone hasn't read Javascript: The Good Parts.

<comment><USER5> The JSLint step is optional. I build my Titanium projects via the commandline (I don't use the IDE thing at all) which bypasses JSLint. I use the more reasonable JSHint as integrated into vim, not as part of the build.

This is the line that builds and runs my project:

      /Library/Application\ Support/Titanium/mobilesdk/osx/1.6.0/iphone/builder.py "simulator" "4.2" /Users/jehlke/workspace/titanium/Manabi "org.manabi.mobile" "Manabi"

You just need to setup the project inside the Titanium Developer app, and then you can invoke it with this command from then on.</comment></comment>


Forrester Calls Google's Chromebook 'Corporate Idiocy' - <AUTHOR> http://www.pcworld.com/article/228849/Forrester_calls_Google_s_Chromebook_corporate_idiocy.html

<comment><USER2> Any product which tends to disrupt your behavioral patterns is written off by experts. If we had believed the experts, the iPod should have been a big failure, right?</comment>


In Support of Free Speech - <AUTHOR> https://medium.com/@tobi/in-support-of-free-speech-275d62670203#.r99cen3m4 <comment><USER2> Kudos to him and Shopify for this. Too many companies seem to put their reputation above doing what's right, leading to a situation where pressure from politicial opponents leads to controversial sites being booted off popular platforms.

So congrats to Shopify for this. Congrats for telling people that no, you're not going to boot out customers because their work offends people. You may actually be the one 'software as a service' provider I could actually trust.

<comment><USER3> They still have a clause in their terms of service that says they can remove anything that is "offensive", "defamatory", "obscene or otherwise objectionable", so you can't really trust that they'll continue this behavior.

</comment></comment><comment> norea-armozel Okay I think it needs to be stressed yet again. The freedom to speak isn't the same as the privilege to be heard. You can speak to the air but no one owes you the time to listen. Equally, everyone is free to conduct business but no one is owed customers to make that business profitable. This is something so many faux-centrists miss because in their mind the right to not associate is seen as a moral ill rather than a moral good. They think that all social actions must operate like that of an economy when in practice it's an economy that's shaped by the social actions. To allow groups like Breitbart who knowingly peddle in lies (ex. claims that global warming isn't real and/or significant or that transgender people are disordered/dangerous) is to endorse those lies whether or not you agree with them. There's no gray area when one gives an audience to blatant lies which are being used to shape laws (see FADA). Either you take a stand and oppose the lies and ostracize those who peddle in them or endorse those lies and all their implications. A or not A as Ayn Rand put it.

<comment><USER4> But here's the fundamental flaw. No one, and I mean no one on the left seems to have shit to say when it's their websites peddling the lies (and boy oh boy are they everywhere). If the shoe was on the other foot, I suspect your opinion would change dramatically.

<comment> norea-armozel >But here's the fundamental flaw. No one, and I mean no one on the left seems to have shit to say when it's their websites peddling the lies (and boy oh boy are they everywhere).

You make a bad assumption that because I'm pointing out the lies that Breitbart and others peddle in that some how I have no words for the likes of Mother Nature News or other left crank sites. Trust me, I have more than I would want to list on here but the biggest one is the anti-vaccine quackery that I see floated around by a certain brand of liberal in the US.

>If the shoe was on the other foot, I suspect your opinion would change dramatically.

Your suspicion is baseless considering I filter out DailyKos, Salon, and other left wing sites from my news feed along with Breitbart and company on the right. I suggest you actually respond to my points or admit you have no argument.</comment></comment></comment>


Amazon beats Netflix to new car show from Top Gear presenters - <AUTHOR> http://thenextweb.com/insider/2015/07/30/amazon-beats-netflix-to-top-gear-presenters-new-car-show/

<comment><USER2> Is prime streaming even available outside the U.S.? I always thought top gear was one of those international successes that were big everywhere but the U.S.</comment>


Discussion 2.0: Personalization - <AUTHOR> http://metaoptimize.com/blog/2011/05/22/discussion-2-0-personalization/

<comment><USER2> Personalization seems like an attractive solution, but it is not clear if personalization in this level is even achievable. Even assuming it is, there is an inherent bias problem: if you never get to see what the computer things you are not going to like, as soon as its model of you becomes slightly wrong, you will never have the chance of correcting it and getting to see the good stuff.

Regardless, I think it is undeniable that some clever filtering is necessary to keep like people together in an environment they can both agree to enjoy and respect, however that is. Personalization can do that without a priori fixating on things like highbrow-versus-lowbrow, etc, which can easily kill a community.

<comment><AUTHOR> _If you never get to see what the computer thinks you are not going to like, as soon as its model of you becomes slightly wrong, you will never have the chance of correcting it and getting to see the good stuff._

This is an interesting technical objection. I am not sure that it is necessarily true, though. If I properly weigh exploration (vs. exploitation), and I present related users with stochastic feeds, then the system can explore things it didn't realize that I might like.

Not that I think genetic algorithms are useful in general, but a genetic algorithm would be useful in this specific circumstance. If I engage in K discussions when the feed is driven by exploitation, but I engage in 2K discussions when the feed is driven by more exploration, then I will prefer explorative feeds. So I believe it would be possible to escape local minima.

<comment><USER3> Quick aside, if you haven't seen this TED talk, definitely check it out: [http://www.ted.com/talks/eli_pariser_beware_online_filter_bu...](http://www.ted.com/talks/eli_pariser_beware_online_filter_bubbles.html)

<comment><USER4> That's exactly what this article reminded me of. While I would love to only see an internet filled with stimulating intellectual conversations, I don't want an algorithm deciding what I see and don't see.

While a personalization approach could work, I believe that a better solution is changing the way the discussion forum works, not hiding and censoring certain content from certain people.</comment></comment></comment></comment>


Dark Matter Is in Our DNA - <AUTHOR> http://nautil.us/blog/dark-matter-is-in-our-dna <comment><USER2> The article blames scientist for using catching names, but the title use "is in our DNA" that is clearly some kind of catchy metaphor [1] that doesn't have a catchy name at all. The main problem is that many areas reuse scientific terms to try to sound reliable.

[1] because there is no dark matter in our DNA, or to be more precise there is (probably) the same proportion in our DNA than in a glass of water, a rock, a fingernail, a nail, a banana, ...</comment>


Flaw in Google's PDF-HTML Translator - <AUTHOR> https://tex.stackexchange.com/questions/559540/is-there-a-fix-for-this-latex-rendering-artefact <comment><USER2> PDF format is a nightmare and if you delve deep enough my experience is even the latest Adobe Acrobat can become confronted by repeated or large volumes of imports and changes around named destinations, bookmark, tags etc.

Other PDF packages like Foxit etc are still only available as 32 bit version, and there seems nothing available for Linux that comes close to being fully featured and creating identical format outcomes as Acrobat, something is fishy here.

At the moment I regularly have DC just close for no good reason after importing a few thousand named dests and convert to bookmarks etc, and it's not just my PC or install.

Things that look/seem like they should be simple can be incredibly obfuscated, to the point there seems to be a whole industry selling plug-ins over and above standard Adobe Acrobat features. And a lot of it is basic stuff you would take for granted in any other text creation/management tool/format.

And this is for something with an ISO standard, wtf?.

It's hard to know what to use otherwise if you need a widely (note I say widely) accepted format with security/digital signing etc and (perceived) immutability and DRM, but it is a pity that something better did not take the crown.

</comment><comment><AUTHOR> I thought I'd submit this here in hopes of catching the eye of someone on the appropriate Google team or perhaps the eye of someone who knows someone on the appropriate Google team.</comment>


GitLab 8.15.7 and 8.14.10 Released - <AUTHOR> https://about.gitlab.com/2017/02/16/gitlab-8-dot-15-dot-7-security-release/ <comment><USER2> I'm getting really tired of seeing articles and blog posts about GitLab here on HN. Is this really interesting to a significant fraction of the HN audience? Nothing against GitLab, just asking.

<comment><USER3> I agree that a patch release is not intellectually interesting and it would be better not to submit it. Nobody working at GitLab is submitting any articles to HN.</comment></comment>


Heavy water tastes the same as ordinary water (1935) - <AUTHOR> https://science.sciencemag.org/content/81/2098/273.2 <comment><USER2> Reminds me of one of my favourite stories:

> A US nuclear laboratory is said to maintain a "heavy dog"\--fed with heavy > water and "heavy" food, and with the heavy isotope deuterium replacing > normal hydrogen throughout the whole body.

\-- New Scientist, 1976 [1]

And:

> [it] would be invisible to a MRI scanner. The dog would still be clearly > visible to the naked eye so apart from confusing the staff operating the > scanner I can see no advantage to this.

\-- source [2]

[1] [https://books.google.co.uk/books?id=AhC9t3Q3YMcC&lpg=PA480&o...](https://books.google.co.uk/books?id=AhC9t3Q3YMcC&lpg=PA480&ots=vIjfN55PE-&dq=%22heavy%20dog%22%20deuterium&pg=PA480#v=onepage&q=%22heavy%20dog%22%20deuterium&f=false)

[2] [https://scicommstudios.wordpress.com/2012/01/08/hydrogen/](https://scicommstudios.wordpress.com/2012/01/08/hydrogen/)

<comment><USER3> Unlikely to be true.

Deuterium is toxic in high concentrations. It slows down metabolism and inhibits cell division. Mammals die within week if half of the water in the body is replaced with deuterium oxide.

<comment><USER4> From the story: _" This is obviously bollocks, and not even the dog's bollocks."_

</comment></comment></comment><comment><USER5> Heavy water is also clear, where normal water has a very slight blue colour. You'd notice it in a swimming pool of it, but not a glass.

[https://i.stack.imgur.com/J4gay.gif](https://i.stack.imgur.com/J4gay.gif)

<comment><USER6> Interesting; it's as if the band was stretched out. Would the same presumably happen for Tritium?

<comment><USER5> Apparently colourless too: [https://chemistry.stackexchange.com/questions/31587/are- ther...](https://chemistry.stackexchange.com/questions/31587/are-there-any- known-chemical-properties-of-tritium-water-that-make-it-unusually)

Some other neat things I found along the way, mostly on Wikipedia: heavy waters freeze at 4-5 degrees Celsius, the heavier the higher. Frozen heavy water will sink in liquid normal water, and pure "tritiated water" ("super- heavy" water, with tritium hydrogen isotopes) is radioactive and will boil itself if pure enough.

</comment></comment></comment><comment><USER7> Cody says heavy water is sweet.

[https://www.youtube.com/watch?v=MXHVqId0MQc](https://www.youtube.com/watch?v=MXHVqId0MQc)

<comment><USER8> Apparently it's a subtle taste, though; you can only taste the sweetness if you haven't tasted anything else recently.

<comment><USER9> That's peculiar, given that I didn't think tastebuds could perform nuclear fission or fusion.

And chemistry pertains to modification of electrons and bonding energies.

I'm seeing placebo or contamination.

<comment><USER10> As is with all things, once you start getting down to the details most our mental models are just that - mental models.

I am guessing other people have downvoted you for adopting an ignorantly confident tone on something you are not a specialist for - this is probably a bit harsh but perhaps this can be a friendly reminder to keep an open mind about these things.

Yes, Chemistry is effectively the study of electrons, but nature has been shown to be isotopically sensitive. Moreover, I have heard of chemistry on radioactive chemicals being a nightmare to reproduce because there are certain reactions where there are competing reaction pathways which are kinetically controlled and so isotopic interactions can wreak havoc on your products.

</comment></comment></comment></comment><comment><USER11> Did anybody else immediately think of the episode in Hogan's Heroes where Hogan convinces Col. Klink to drink heavy water? [https://www.imdb.com/title/tt0602322/](https://www.imdb.com/title/tt0602322/)

<comment><USER12> I thought of the scene in the old Adam West Batman movie where Batman reconstitutes dehydrated bad guys with heavy water and they are unable to take their feet off the floor (because they're so heavy).

Batman's scientific content wasn't all that high.

<comment><USER13> Sadly, you're remembering wrong. The dehydrated pirates vanish as soon as they're punched! Two of them even pop like bubbles when they accidentally run into each other! Clearly much more scientifically valid.

<comment><USER12> Thanks!

</comment></comment></comment></comment><comment><AUTHOR> H.C. Urey — one of the authors of the above-cited publication — (April 29, 1893 – January 5, 1981) was an American physical chemist whose pioneering work on isotopes earned him the Nobel Prize in Chemistry in 1934 for the discovery of deuterium. Heavy water is a form of water that contains a larger than normal amount of the hydrogen isotope deuterium rather than the common hydrogen-1 isotope.

<comment><USER14> Lived to 87, well above life expectancy for 1893'ers so a loose correlation suggests it extends the average lifespan.

I expect to find this on the shelf right next to Dirty Lemon Charcoal water shortly.

<comment><USER15> > a loose correlation

That's generous.

</comment></comment></comment><comment><USER16> So how will i know if I'm drinking heavy or ordinary water from my tap??

<comment><USER17> Keep a very accurate scale handy, or a mass spectrometer.

</comment></comment><comment><USER18> N=2, but if you tried to replicate you'd never get approval today ;)

<comment><USER19> This just underscores the lack of understanding between "we need to measure this value" and "we need to understand how this value is calculated" these days. :(

<comment><USER20> > understanding between "we need to measure this value" and "we need to > understand how this value is calculated"

We also need to re-enforce that "how this value is calculated" is just another level of correlation with reality, it is not an absolute, i.e is not how reality "calculates" it for anything except for things that exist purely in the realm of the abstract - where our abstraction is also the definition.

I believe it's this lack of understanding that results in the distorted view of science being the practice of recording absolute truths.

</comment></comment></comment><comment><USER21> Next test: Does urine taste the same as water? Can we get somebody to try that experiment?</comment>


A Google Computer Can Teach Itself Games - <AUTHOR> http://bits.blogs.nytimes.com/2015/02/25/a-google-computer-can-teach-itself-games/?module=BlogPost-Title&version=Blog%20Main&contentCollection=Computer%20science&action=Click&pgtype=Blogs&region=Body

<comment><USER2> [https://news.ycombinator.com/item?id=9109010](https://news.ycombinator.com/item?id=9109010)</comment>


Show HN: Poll maker that can handle open-ended questions and filter results - <AUTHOR> https://www.youmatchup.com/ <comment><AUTHOR> This site is similar to other polling sites such as Straw Poll. However, in addition to making simple polls it also gives you the ability to do the following:

• Filter results by time (see which options are "hot" now)

• Let users enter their own options

• Let users cast a new vote after a certain period of time

• Create an account to keep track of your polls (optional)

These features allow you to create polls for open-ended questions. It also gives you the ability to create a poll that never ends. For example, say you have a YouTube gaming channel and want to get feedback from your audience every day on what game they want to see you play. You can ask the following open ended question:

[https://www.youmatchup.com/matchup/1848/](https://www.youmatchup.com/matchup/1848/)

To create this poll you only have to type in the question, allow users to vote once every day and enable user options. This gives your audience the ability to enter in their own options or vote on the options others have added. It also lets them come back every day to cast a new vote. Then, you can filter results by past day to see what game is currently trending.

With this setup you would never need to create another poll for this question. The new votes would flow in to the options that are popular now, old votes would be filtered out and old options can be deleted.

Please let me know if you have any questions or comments. I would be happy to answer them!</comment>


A 4 year old boy trapped in a teenager's body - <AUTHOR> https://www.thecut.com/2019/01/precocious-puberty-patrick-burleigh.html <comment><USER2> I commend the author for coming to terms with the disease and deciding to face it again if his child were to inherit it.

Having said that, it is not the decision I would make. I would, with 100% certainty, biopsy the embryo and eliminate those with the disease, whether I had experienced it myself or not. And I wouldn't think twice.

<comment><USER3> Why? If it's ok for you to discuss, of course.

<comment><USER2> I would not choose to have a child knowing that his life would be full of suffering. Hardship is not necessary for individuals to be "good". As well, from a practical standpoint, if you're going to subject a woman to the pain of IVF, far better to have that pain result in a healthy child.

<comment><USER3> How do you define "suffering"? From the story I don't see anything for what I would use such a strong word. Psychologically, some sort of "specialness" (and author tells us it's both bad, and good for a kid) is typical for many conditions which nobody would even call a disease, such as congenital poor eyesight. Physically, diabetes, or just a cosmetic defect which requires a series of operations could be way more challenging. Don't you think your reaction is just because this particular case is super rare, and scary for its unusualness?

<comment><USER2> The medical tests, the social isolation, the uncontrollable sexual and rage impulses, some of which lead to criminal behavior. Those rise to the level of suffering, all of which could easily be avoided at conception through biopsy and elimination.

It isn't "just" because this particular case is super rare and scary that I would choose to eliminate those embroyos, it's that I would have the option to prevent it.

Would I do the same for embryos with diabetes, poor eyesight or cosmetic defects? Probably not, those are pretty manageable.

<comment><USER3> I'm not sure I you've read my comment in full. This condition is (according to what story tells) more easily manageable, both medically, and socially, then many cosmetic defects, and some cases of diabetes.

<comment><USER2> I'm not sure how to best quantify "easily manageable" but if that's the case, I would opt for eliminating those embryos too. Depending on the severity of the defect, the viability of other embryos, and the cost to start over if it went that far.

I have no interest in having a child that requires extensive medical care and would prevent that if I had the option.

</comment></comment></comment></comment></comment></comment></comment><comment><USER4> The story is well written.

I like the take on the disease beeing some kind of family legacy even with all it encompass.

I couldn't imagine what the author went through, puberty at 4 years old.

</comment><comment><USER5> Hum, so this mean that instead to have to wait 18 years to have adult male born in mars, we could decide if we want to accelerate the process and save 10 years (and maybe a few malformations), because is biologically possible to do so. Wow!

A small step for testosterone (god bless it), a big step for mars colonization.

(On the other hand, astronauts fighting all the time inside a complex life supporting system would be not probably the best idea)

<comment> loa-in-backup And so, the martian race would be born. Different genes, upbringing, environment and even gravity strength.

</comment></comment><comment><USER6> "This was impossible because I inevitably..." almost spit out my coffee. Interesting and funny read!

</comment><comment><USER7> I find it intriguing that some comments classify it as a disease. I would classify it as abnormal caused by a genetic mutation, but I fail to see it as a disease. Other than changing the timeline he encounters puberty, everything else about him is completely normal.</comment>


Ladybugs Pack Wings and Engineering Secrets in Tidy Origami Packages - <AUTHOR> https://www.nytimes.com/2017/05/18/science/ladybugs-wings-folding.html <comment><USER2> How they do it: [https://i.imgur.com/9TUUzFA.gifv](https://i.imgur.com/9TUUzFA.gifv)

And [https://i.imgur.com/zHNl6Dw.gifv](https://i.imgur.com/zHNl6Dw.gifv)

Credit to /u/aloofloofah from [https://www.reddit.com/r/interestingasfuck/comments/6cdp4i/h...](https://www.reddit.com/r/interestingasfuck/comments/6cdp4i/how_ladybugs_unfold_their_wings/)

<comment><USER3> As someone who does origami, that zigzag fold is absolutely fantastic:

[http://media.npr.org/assets/img/2017/05/19/origami- pic_custo...](http://media.npr.org/assets/img/2017/05/19/origami- pic_custom-943b029a0e6206a333ae3b3f0f7c21947b63fc53-s900-c85.jpg)

I'm really curious how evolution figured that one.

<comment><USER4> Randomness and chance</comment></comment></comment>


10^6 Giraffes - <AUTHOR> http://www.onemilliongiraffes.com/

<comment><USER2> ...and I discover this just as I was about to launch my new startup: fivehundredthousandgiraffes.com

Oh well, back to the drawing board.

<comment><USER3> like the 7 minute abs got usurped by the 6 minute abs?

<comment><USER2> My business model consists of convincing users that their giraffes are private and then, once I've got half a million, shamelessly changing my privacy policy to help advertisers.

</comment></comment></comment><comment><USER4> I'm reminded of this: <http://en.wikipedia.org/wiki/Terracotta_Army>

"My friend, Zhang, doesn't believe I can collect one million soldiers by 209 BC. I'm gonna prove him wrong, but I need your help. (Or you'll be beheaded.) Thanks, Qin."

Our time is gentler -- the Age of the Giraffes.

<comment><USER5> Exercise for the interested reader - why could he not have said:

      > ... I can collect one million soldiers by 209 BC.

??

<comment><USER6> What, you mean a Chinese emperor did not know the exact future date of the birth of Christ?

</comment></comment></comment><comment><USER7> Wikipedia puts the total African giraffe population at 110,000-150,000: <http://en.wikipedia.org/wiki/Giraffe>. So there are more pictures of giraffes than actual giraffes.

<comment><USER8> same applies on counting human photos on social site altogether (flickr, facebook, tweetpic, etc.) would be far more than 6,819,100,000 (population of the world - <http://en.wikipedia.org/wiki/World_population>)

<comment><USER9> <http://en.wikipedia.org/wiki/World_population> <\- Anyone know the reason for the UN's low and medium estimates having serious downturns in population in the next century? Is it because of lowering child-birth rates, or because of expectations of resources/diseases, etc...?

<comment><USER10> According to the PDF: [http://www.un.org/esa/population/publications/longrange2/Wor...](http://www.un.org/esa/population/publications/longrange2/WorldPop2300final.pdf) it's virtually all due to changes in fertility.

As countries grow in wealth and life expectancy, the number of children per woman tends to drop off drastically.

</comment></comment></comment></comment><comment><USER11> There are times when I realize what all of humanity has been building towards.

Having built machines that could compute billions of cycles per second and then having connected them with networks signaling each other across the planet at fearsome rates, I have wondered what the next step for our people would be.

Now I know. Now we might all gaze upon representations of giraffes and if we are worthy, we might contribute our own representation in a symbolic joining with the whole of the great human project.

</comment><comment><USER12> <http://www.onemilliongiraffes.com/stats>

I was somewhat amazed by those stats: I thought Americans would have contributed the most. Is there something I should know about Germans and Giraffes that I do not know?

<comment><USER13> There is this one submitter of Giraffes[1], responsible for two percent of all German giraffes, or this one[2], responsible for nearly five percent. I didn't even have to look all that hard to find them.

[1] <http://www.onemilliongiraffes.com/search?name=Sanne>

[2] <http://www.onemilliongiraffes.com/search?name=Ediktonia>

<comment><USER14> [1] "I found 4 085 giraffes created by people named Sanne!"

[2] "I found 9 988 giraffes created by people named Ediktonia!"

The actual statistic is that 2% of all Germans who submitted giraffes were named Sanne and 5% were named Ediktonia. It doesn't say they were all the same person.

<comment><USER15> Sanne has actually only submitted 15 pictures. This is one of them, <http://www.onemilliongiraffes.com/?id=54374> There are ~2000 giraffes on one page. Ediktonia has similar images.

Personally, I think these works are kind of taking the piss.

</comment></comment></comment></comment><comment><USER16> Since The Sheep Market <http://www.thesheepmarket.com/> paid people on Mechanical Turk 2c each for their sheep drawings I guess this means he's got nearly $16,000 of free labour so far.

</comment><comment><USER17> I can't wait for RiderOfGiraffes to get wind of this project ... <http://news.ycombinator.com/user?id=RiderOfGiraffes>

<comment><USER5> <grin>

Nothing to do with me, but I watch with interest. Sadly I can't send a photo of my giraffes because she's store-bought.

<comment><USER5> Sorry - typo and it's too late to correct it.

s/giraffes/giraffe/

Singular. I only own one, although I have ridden several.

<comment><USER18> I didn't even know giraffe riding existed. I always figured your username was some inside joke.

<comment><USER5> It's not an inside joke, and it is "real" for some definition of "real". I leave you to ponder the question. Email me if desperate.

I should have a photo somewhere ...

</comment></comment></comment></comment></comment><comment><USER19> I love it!

And I love the guessing game with the age of the submitter, I only wish the server wasn't getting slammed 'cause it takes too long to get the response.

So far I'm 6 votes in with 3.7 years avg difference so far, it's a pretty great idea, though I wonder if it selects based on users so you don't get shown consecutive (or even in the vicinity in the case of the mass posters another comment mentioned) giraffes from the same artist.

</comment><comment><USER20> I remember sending a giraffe a long time ago, I had forgotten about it :)

</comment><comment><USER21> I found one more!

      I=
      H
      H
      H

/==\ T T

<comment><USER22>
        I=
        H
        H
        H
      /==\
      T  T

You intended this? Sadly, it doesn't qualify, since it's made with a computer.</comment></comment>


Giant Patent Troll Awakened: Intellectual Ventures Files Its First Lawsuits - <AUTHOR> http://www.techdirt.com/articles/20101208/11073712190/intellectual-ventures-files-its-first-lawsuits-giant-patent-troll-awakened.shtml

<comment><USER2> IV is reviewed with some reverence in SuperFreakonomics. If I remember correctly Bill Gates is an investor. They're portrayed as a fabulously noble corporation, populated with the bright and best selflessly attempting to solve some of the world's most pressing issues - climate change, hurricanes and so on. Whether true or not I don't know, but it's disheartening to hear they're actually just a huge patent troll. Leaves a sour taste in my mouth re superfreakomics too.

<comment><USER3> I was reading superfreakonomics in the store, really enjoying it, until I got to the chapter about IV, and walked out in disgust. I'm sure the massive bribes they got form Myhrvold will overcome their lost sales, though.

<comment><USER4> Why would IV bribe them? In fact, why would a patent troll care about PR _at all_? Does a good reputation help in court?

I'm also going to invoke Hanlon's razor, in "defense" of the freakonomics guys.

<comment><USER3> IV cares a great deal about its reputation, and have gone to great lengths to avoid the label of "patent troll". This story is remarkable because it's the first time that IV has actually directly filed a lawsuit rather than going through intermediaries to avoid sullying their own name.

They've also spent a large amount of money on lobbyists. Compared to that expense, bribing the superfreakonomics would be cheap and effective. I doubt it was a direct bribe, rather an indirect bribe (wining & dining & all expenses paid vacation to "visit" them).

</comment></comment></comment></comment><comment><USER5> Here is a list of patents and industry vendors sued: [http://intellectualventures.com/Libraries/Article_Reprints/F...](http://intellectualventures.com/Libraries/Article_Reprints/Fact_Sheet.sflb.ashx)

<comment><USER6> I looked at a couple of the security patents, where they're suing Symantec, Trend Micro, McAfee, and Checkpoint. These certainly seem to be acquisition rather than IV-developed ideas. So the methodology here (buy up undervalued patents and sue big companies) looks trollish to me.

</comment></comment><comment><USER7> That was kind of a dumb article. There are many business reasons a company with a patent might transfer the patent into a subsidiary company other than trying to keep people from knowing it is yours. For instance if you are generating revenue from a patent by licensing, having the patent in the hands of a subsidiary would make it easier if you someday wanted to sell the patent. You could instead of directly selling the patent just sell the subsidiary. Your licensees then keep sending their royalty checks to the same company, and the contracts don't have to be updated to specify a new name, and so on.

If you transfer a patent to a subsidiary just to hide your involvement in a lawsuit, that is unlikely to even work. When people see that FooCorp is suing over patent #NNNNNNN, and FooCorp is a new corporation and the patent was assigned to IV up until shortly before FooCorp acquired it, it does not take a genius to figure out that FooCorp is almost certainly an IV subsidiary.

So, an accurate story would be something like: "IV has sued several companies over patents before. They are now suing some more companies. Probably meaningless trivia--this time they didn't make a subsidiary to deal with the suit".

I remain unimpressed with Techdirt.

</comment><comment><USER8> I followed the links down to the putative patent they are attacking the security companies with. It's 5987610: [http://patft.uspto.gov/netacgi/nph- Parser?Sect1=PTO1&Sec...](http://patft.uspto.gov/netacgi/nph- Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=5987610.PN.&OS=PN/5987610&RS=PN/5987610)

From what I can see, the patent is adequately summarized as "Virus scanning, only with a phone line involved".

</comment><comment><USER9> I doubt they were ever asleep. Just executing a ling-term strategy.</comment>


6 tips to make the best iPhone app icons. 70% of users hate the new iOS icons  - <AUTHOR> http://heycrowd.com/blogs/11-6-tips-to-make-the-best-iphone-app-icon

<comment><USER2> 1\. Users notoriously have no idea what they want. Surveys may not be the best method to determine the effectiveness of an icon because youre asking the user to predict their future behavior (which most are happy to do, confidently). The only way to test an icons effectiveness, is to test icons in a real world environment.

2\. We hear this story every time Apple releases a product, when Google updates Gmail, when Facebook gave us Newsfeed. An instant gut reaction to change is not indicative of long term success or failure. People "hating" the icons is meaningless - they havent even been released yet. Change is good, its what drives our ambitions forward. Don't survey people and let the results scare you into stagnating.

3\. [http://observatory.designobserver.com/feature/graphic- design...](http://observatory.designobserver.com/feature/graphic-design- criticism-as-a-spectator-sport/37607/)

<comment><USER3> > Users notoriously have no idea what they want

This quote is used out of context all the time. Please, I know what I want and so do most people around me. Say that people cannot predict their future and that's fine by me. But don't generalize that to your first line.

</comment></comment><comment><USER4> Its interesting the title says people hate the new icons, when they only preferred the old icons. Theres a comic to explain this situation quite well. [http://theoatmeal.com/pl/state_web_winter/facebook_layout](http://theoatmeal.com/pl/state_web_winter/facebook_layout)

<comment><USER5> But they're talking about a layout change, which can drastically alter the way someone goes about using a website. Icon changes don't really do that.

</comment></comment><comment><USER6> Where does the "70%..." figure come from? It's not mentioned anywhere in the article. For that matter, the article itself throws around a lot of phrases like "clearly performing better", "proof", and "worst way", but the only evidence seems to be self-selected, explicit choice online polls?

<comment><AUTHOR> There is a link in the post to the statistics. It's here heycrowd.com/surveys/admin?id=2129 if you didn't see it</comment></comment>


What Are Your Favorite Interview Tests? - <AUTHOR>

I have a number of candidates I have to interview over the next two weeks and it's been a while since I've interviewed anybody. In the past one of my favorite tests for candidates is to build a basic programming language with the candidate. It's a lot of fun and really demonstrates core knowledge.<p>I was wondering what other people like to do and have found successful.<p>[EDIT] Sorry, should have said this is for a Ruby on Rails engineer. <comment><USER2> Can I come? I have developed languages and compiler in past iterations and language design sounds like a lot more fun than "reverse the words in a sentence" or "What is the difference between an abstract class and an interface?"</comment>


Top 10 TEDTalks of all time - <AUTHOR> http://www.ted.com/talks/top10 <comment><USER2> To any brain surgeons out there: The "Stroke of insight" experience can be accurately reproduced, with similar feelings of enlightenment but no brain damage, via the ingestion of psychedelic drugs.

<comment><AUTHOR> Which ones?

<comment><USER2> Magic Mushrooms will do the job nicely and are generally easily available. Make sure to read up on whatever you put in your mouth though.

</comment></comment></comment><comment><USER3> IMHO The selection is rather poor. 4 of the 10 speeches are regarding a simple technical product. While they might be cool, touchscreens and Wii remote hacks are not going to change the world, while many other talks do just that. Only 3 or 4 of the talks are actually thought-provoking, and having seen almost all talks I can think of at least 10 that were more inspiring.

<comment><USER4> Several of those (3,8,9) are among the first videos released. People (like me) that have stumbled onto TED recently and start from the beginning will view those first. Also, the iPhone, Photosynth, and WiiMote probably come up in searches because they have Google juice.

<comment><USER5> I discovered TED talks on the day of the iPhone keynote, searching for more info about multi-touch. So I would guess that video got a lot of its hits from other people doing that.

</comment></comment></comment><comment><USER6> [http://www.ted.com/index.php/talks/clifford_stoll_on_everyth...](http://www.ted.com/index.php/talks/clifford_stoll_on_everything.html) \- Certainly one of the most enthusiastic and entertaining talks I've seen on TED

</comment><comment><AUTHOR> <http://www.ted.com/index.php/talks/list> has some additional sorting options

</comment><comment><USER7> My personal favorite comes from designer Philippe Starck:

<http://www.ted.com/index.php/talks/view/id/197>

Very inspiration for designers and engineers alike.

<comment><USER8> We often like to think we are morally superior and smarter than our ancestors, yet the success of Philippe Stark (The Caliban, as nicknamed in 2100's History books) is a clear sign of our own moronity - the moronity of our times as we should call it - and will be the subject of mockery from our grand children.

The damage these people did (Starck and the architects in the same school, wich are currently overwhelming) to our cities and landscape would have been more than enough for a guillotine ride two centuries ago.

If you want to figure out what we have escaped from these people, look at this nightmare :

"Until recently, European architects have either connived at the evisceration of our cities or actively promoted it. Relying on the spurious rhetoric of Le Corbusier and Walter Gropius, they endorsed the totalitarian projects of the political elite, whose goal after the war was not to restore the cities but to clear away the "slums." By "slums," they meant the harmonious classical streets of affordable houses, seeded with local industries, corner shops, schools, and places of worship, that had made it possible for real communities to flourish in the center of our towns. High-rise blocks in open parkland, of the kind that Le Corbusier proposed in his plan for the demolition of Paris north of the Seine, would replace them. Meanwhile, all forms of employment and enjoyment would move elsewhere. Public buildings would be expressly modernist, with steel and concrete frames and curtain walls, but with no facades or intelligible apertures, and no perceivable relation to their neighbors. Important monuments from the past would remain, but often set in new and aesthetically annihilating contexts, such as that provided for Saint Paul's in London."

If you want to learn about a real architect, you should start by Léon Krier : <http://en.wikipedia.org/wiki/Léon_Krier>

He says :

""Humanity lives by trial and error, sometimes committing errors of a monumental scale. Architectural and urbanist modernism belong—like communism—to a class of errors from which there is little or nothing to learn or gain. . . . Modernism's fundamental error, however, is to propose itself as a universal (i.e., unavoidable and necessary) phenomenon, legitimately replacing and excluding traditional solutions.""

The ugliness of US cities all has to do with the "modernist" rational approach to architecture. Unlike the europeans brains, cities were not importable.

What is the point of living, sleeping and working in ugly places ? The damage done in Europe was attenuated because of our patrimoine, aka the things that our ancestors gave us, but we still have to fight against crooks like Starck. They have success, they have recognition, they have money, and they are the prominent icons of what we lack in our days of cultural relativism : taste.

Full article about Krier (a must read) : <http://www.city- journal.org/2008/18_2_urb-leon_krier.html>

<comment><USER9> Philipe Starck is not a modernist. He's not even an architect! He's an interior designer. His work has nothing to do with the likes of Le Corbusier or Van der Rohe. Your timelines aren't even right. The modernists all died in the late 1960s. Starck didn't become popular until the late 1980s. Calling him a crook because he's associated with the modernist school of architecture (which he isn't) is utterly beyond incorrect... it doesn't even make sense. In fact, it so doesn't make sense, I feel like I'm the victim of a clever troll. If that's the case - touche.

<comment><USER10> He's not just an interior designer. He does design physical objects.

But you're right. Starck is about as far as you could get from totalitarian city planning. Which incidentally would have been just as bad with or without modernism. Speer's Berlin would have been at least as nasty as Le Corbusier's Paris.

<comment><USER8> Starck designed several buildings wich are famous in France because of the complaints of the people who have to work inside (one has a facade with no windows at all, for "design" purpose). He designed many properties and led a project wich theme was "One house for everybody" where he designed the cheapest house possible so that "everyone could have one", packed in some residences, and sponsored by the governement. You couldn't actually get more totalitarian than this.

You don't hear a lot about this side of his work because most of them were fiascos, a french TV (Canal +) even dedicated an investigation to the building he designed, because of all the people complaining. I tought it was obvious that Starck wasn't an architect stricto sensu, but "Architect", "Designer", "Urbanist" and even "Modernist" are just labels, the only thing that matters is what people actually do.

Ask the people who have to deal with his creations on a daily basis, or read about these fiascos. This will be more interesting than playing with labels.

</comment></comment></comment></comment></comment><comment><USER11> My favorite is [http://www.ted.com/index.php/talks/blaise_aguera_y_arcas_dem...](http://www.ted.com/index.php/talks/blaise_aguera_y_arcas_demos_photosynth.html)

Photosynth is pretty amazing

</comment><comment><USER12> i think my favorite is theo jansen's beach creatures (and a pretty relevant one to hackers, imo).

[http://www.ted.com/index.php/talks/theo_jansen_creates_new_c...](http://www.ted.com/index.php/talks/theo_jansen_creates_new_creatures.html)

</comment><comment><USER13> Picking a list is like favoring a child.</comment>


GetJar raises another $25M for its mobile app store - <AUTHOR> http://venturebeat.com/2011/02/14/getjar-funding/

<comment><USER2> GetJar scraped my email off of the official Android market and spams me relentlessly with it. They can go get bent.</comment>


The FreeDOS Project turns 25 - <AUTHOR> https://www.freedos.org/ <comment><USER2> The great thing about DOS is that it is basically not an OS, at least in the modern sense. It is little more than a bunch of 16bit routines that allow you to do useful things with hardware, like having a file system and handle some basic I/O.

If you have a toy OS project, check it out. Like so many people, I have one, and even though it is a protected mode multiple address space microkernel blahblah one, I not only start it from DOS, I actually still keep DOS running by hosting it inside a vm86 task in the OS. This means I can delegate all the stuff I haven't bothered implementing, like file system I/O, basic video output and even a whole command shell, to the DOS instance (which is allowed access to the necessary hardware), and I can then focus on writing the parts of the OS that interest me.

It transformed an insurmountable project into a small and fun side project.

<comment><USER3> On what kind of hardware do you have these kind of projects? Any links?

<comment><USER2> Mostly just in VirtualBox, which makes for much more convenient development, and also provides a debugger. When I need to run on real hardware, then just some regular PC (or Mac, with Bootcamp) will do.

Unfortunately I don't have anything out publicly right now. It's really a toy side project, and as such it's currently neither presentable nor in any stable shape. If it ever gets somewhere where I'm comfortable showing it, I'd love to put it up, though.

<comment><USER4> Could you explain how you switch from DOS and then keep it active? I too have a toy OS and you've got me curious :)

<comment><USER2> Sure! The sequence is roughly like this (note that DOS extenders are doing quite similar things):

1\. From DOS, load your operating system kernel into memory. How you do this is up to you, I simply use DOS routines to allocate memory and load the kernel from disk into that memory.

2\. Before transitioning into protected mode, save away both the real mode stack and the CS:IP where your DOS task should later continue when your OS is sufficiently booted up, and pass that in to your kernel. I call this the "rendezvous" point. This could be any function in your loader program. What I actually did was to let it rendezvous into a routine that performs a "Terminate and Stay Resident" (TSR) DOS call, which returns to the DOS shell (e.g. COMMAND.COM), but keeps parts of the memory that the loader program allocated in memory.

3\. Boot up your OS to the point where protected mode, page tables, interrupt and exception handling, etc., are sufficiently set up so that you can start creating and switching to tasks.

4\. The most crucial step: Create your DOS task. That task needs to be a vm86 task (v86 in older 386 documentation), indicated by a bit in the EFLAGS register, and set up so that DOS exactly sees what it was seeing before (with exception of any stuff you want to virtualize away), e.g. the first MB of memory should be mapped to it (if you use paging), the stack is what you saved away, and set CS:IP to your rendezvous point.

5\. Whenever desirable or necessary, switch to the DOS task, where DOS will just continue running, first starting at your rendezvous point, oblivious to the fact that it's now just a task. You can then reflect interrupts back into the task if you want DOS to handle them (so that you e.g. don't need to write any keyboard or hard disk I/O routines yet); you can invoke and communicate with little 16bit handlers to perform some jobs on behalf of your OS (so that you can e.g. use DOS's file system, or even its memory allocator); or the other way around: You can make your DOS programs perform "system calls" that trap into your OS to perform actions there, implemented e.g. through software interrupts.

One hint that is easily missed: DOS has a "busy" flag that helps you figure out when it is safe to call DOS functions (through INT 21h). Because DOS is not reentrant, you have to finish your INT 21h calls before you can make new ones.

It's sometimes a bit fiddly since you not only manipulate your DOS task's registers for it to do your bidding, but also have to emulate interrupts and even quite a few assembly instructions in your general protection fault handler (in a part of it known as the "monitor") due to the way vm86 works, but it's not too bad and it was fun for me. Intel's documentation about their x86 CPUs, even the original 80386 one, does a reasonably good job at explaining it, some of it in quite some detail, e.g. interrupt handling.

There are also many possibilities on which way to handle things from there. For example, your DOS task can be given direct access to the IRQ controller registers and let DOS handle that, or you can write a virtual IRQ controller for DOS in your OS and handle the real one yourself. The same goes for many other aspects, like video memory for example. Essentially you can move stuff into your OS at your own pace, and give DOS a virtual device if it still expects access.

If you want to learn more, assuming you already have a firm understanding of task switching on x86, I suggest reading the v86/vm86 chapter in Intel's reference.

<comment><USER2> A few additions, in case someone goes back to this post for reference, and because I cannot edit it anymore:

* As far as I know, you are unfortunately limited to 32bit OSs, as x86_64 got rid of the vm86 mode necessary for hosting DOS. In 64bit long mode, you would probably need to run a full x86 emulator to achieve the same (of which there are plenty), although I haven't looked into that aspect of x86_64 yet. That being said, for a toy OS 32bit is plenty, and I haven't run into anything yet where I wish it was 64bit.

* The DOS busy flag's use is actually more to know whether DOS is still busy with a DOS function invocation by something _other_ than your OS. Your OS code can trivially know by itself that it performed a call which did not complete yet (DOS is not reentrant, so you can only perform one call at a time). However, the DOS task is actually everything within DOS, including TSRs (which are essentially programs running in DOS's background, including many device drivers), or, depending on how you structure it, maybe even a plain old foreground DOS application that has nothing to do with your OS. Both will make DOS calls as well. The busy flag was actually introduced to support TSRs, which also need to prevent stepping on DOS calls performed by other TSRs or the foreground running app.

* Besides the busy flag, there is actually a second flag, the "critical error" flag, which you should just treat as another busy flag.

* A useful technique at the beginning is to have DOS programs that perform system calls (e.g. through an INTn instruction) into your OS, which then may call back into DOS in various ways to perform functions. That way you already have the ability to launch programs from DOS's shell which can do something related to your OS. But they will overall still be 16bit programs.

* To run "native" programs in your OS, have some kind of loader that just loads your program into memory, and then just calls into your OS to start executing it as its own task. You can either let your loader return to DOS immediately, going back to the shell independently of your new OS task, or have your loader stay running until the task is finished, which is useful if you want to do console input/output through DOS's console.

* Again, this has a lot of overlap with what DOS extenders (like DOS4/GW) do. The main difference is that DOS extenders more or less only provide everything necessary to build "32bit DOS apps" (and are likely mostly single-tasked, with the exception of the additional vm86 task), while your own OS can be pretty much anything.

</comment></comment></comment></comment></comment></comment><comment><USER5> Intel plans to kill BIOS once and for all starting in 2020. This will make FreeDOS impossible to run on new hardware. Bummer.

I often find myself wishing for an OS that takes you right down to the metal like DOS did, but reluctantly, I admit those days are gone as complexity and the need for security increases.

<comment><USER6> Is there somewhere a DOS equivalent for ARM? It seems like the Raspberry Pi and similar devices would be great for a DOS-like OS with quick response and low-level access.

<comment><USER7> The UEFI shell itself is a lot like DOS. It relies on a FAT filesystem, and commands run under UEFI have full hardware access.

</comment></comment></comment><comment><USER8> To celebrate, he's answering questions from fans today in various forums...

[https://news.slashdot.org/story/19/06/28/1933239/the- slashdo...](https://news.slashdot.org/story/19/06/28/1933239/the-slashdot- interview-with-freedos-founder-jim-hall)

</comment><comment><USER9> Out of curiosity, how does running something like FreeDOS in a VM compare to running something like DOSBox? Does FreeDOS have better compatibility and/or performance?

<comment><USER10> For DOS, DOSBox has special support for sound and video that you don't get in a VM (e.g. VirtualBox), unless you have some sort of plugin of course to emulate a SoundBlaster, Gravis UltraSound or other peripheral (the world of DOS is mostly ISA).

On the other hand, if you have e.g. Windows 98 running in a VirtualBox VM (which is actually surprisingly difficult), then you have a driver layer for VirtualBox's virtual hardware and Windows 98 would use it as it would use any other hardware (the early Windows world is mostly PCI).

</comment></comment><comment><USER11> That takes me back. I wonder if I can find the old One Must Fall game?

<comment><USER12> Here you go:

[https://archive.org/details/msdos_One_Must_Fall_2097_1994](https://archive.org/details/msdos_One_Must_Fall_2097_1994)</comment></comment>


Tools for analyzing Node.js programs with SystemTap - <AUTHOR> https://github.com/uber/node-stap

<comment><USER2> It's been a few years since I used it, but V8's own built-in profiler is perfectly capable of emitting a stack trace every 10 ms or so (747 samples in 10 seconds in the example). That's what Chrome uses when you profile code in the browser, and it works on all platforms. I wonder what the advantage of this approach is?

<comment><USER3> It looks like profile_node.stp is just probing timer.profile, but in theory this could be any event that systemtap is capable of. A function in glibc, a syscall, a kernel function, a perf event on say branch misses, ... there are many many possibilities. (Might need to tweak other parts of their analysis that assume a time-based event though.)

</comment></comment><comment><USER4> Realtime production profiling: Hello :)!

AWESOME!

</comment><comment><USER5> Who uses Node.js?

<comment><USER6> A company valued at $41 billion, apparently.</comment></comment>


Hearing from Yahoo employees - what should Marissa Mayer do next?  - <AUTHOR> http://sriramk.com/yahoofollowup.html

<comment><USER2> Really interesting - particularly how much of a theme there is around getting more product/technical knowledge throughout the company.

<comment><USER3> Over time, Yahoo seems to have hired more and more people doing 'meta-work' than actual work. Which leads to month long strategy sessions but very little products coming out and very little product building rhythm.

<comment><USER4> That doesn't sound _anything_ like other companies you and I have worked at :P</comment></comment></comment>


Don't forget about RubyForge - <AUTHOR> http://judofyr.net/posts/dont-forget-about-rubyforge.html <comment><USER3> Disclaimer: I'm a GitHub guy but also a big Rubyforge user (3 years and a handful of gems there).

That said, the technical issues raised in this article could be addressed in other ways: RubyGems could be patched to search for dependencies in all of the gem sources and Rubyforge could add a way to remove gems from the index (no more outdated 'mash').

But why? Why not just keep Rubyforge central? It's worked well so far.

A few reasons.

Foremost is this idea of an "official" RubyGem. What does that word mean? It means that if I disappear, so does my project. If I lose interest, my project dies. With larger projects this doesn't happen so often. It would be hard for Rails or MooTools to just vanish. But for smaller projects, which are legion, this is a constant. People lose interest - often right when you become interested. Let's call it Defunkt's Law.

Defeating Defunkt's Law is one of the primary motivations behind GitHub. Let the Internet decide the 'official' version of smaller projects. If you Google 'mash' and my version comes up before mbleigh's, guess what? Mine is the official version. We have all these tools for deciding what's good content on the web, why not apply them to code?

sr's git-wiki is a great example of this. Google "git-wiki" and al3x's version comes up - a fork with distinct features. The market has spoken.

It's true that within GitHub, finding the "blessed" or "official" or valuable fork is not the easiest thing in the world. But we're working towards this goal - which project in this tree is the most interesting? Which is clearly a feature fork? Which are just impulse forks?

While entropy can seem scary, we believe the future of development is distributed.

<comment><USER4> "If you Google 'mash' and my version comes up before mbleigh's, guess what? Mine is the official version."

Cool. If I can Google-bomb a project name I can seize authority,

"We have all these tools for deciding what's good content on the web, why not apply them to code?"

Because page rank is a shitty way to determine good content?

BTW, you don't need to patch gems to search additional locations for gems.

</comment></comment><comment><USER5> Note: There are currently 21 comments - and rather a bit of discussion - <USER2> this over on RubyFlow - <http://www.rubyflow.com/items/666>

</comment><comment><USER6> RubyForge was one of the reasons I got really interested in ruby/rails development. A central location is a must for new ideas to be easily moved around.

</comment><comment><USER7> What about a means of pulling updates from the GitHub gem server over to RubyForge? Or a hook in GitHub that ties gem publishing into RubyForge? Seems there are a number of ways to solve this problem with just a little collaboration between RubyForge and GitHub, without sacrificing any of the centralization of RubyForge or the distributed coding goodness of GitHub :)</comment>