Twitter launches own shortener t.co - <AUTHOR> http://blog.twitter.com/2010/06/links-and-twitter-length-shouldnt.html <comment><USER2> From users' perspective, the big thing here is that clients can now show where links in tweets actually lead. For brevity, the link text should probably just be the domain it leads to, but it should make things a whole lot more readable.

Before - This is a great news site: _<http://bit.ly/2Mp91y> _

After - This is a great news site: _news.ycombinator.com_

A loss for URL shortener services, but a win for users.

<comment><USER3> Clients could have easily done this before.

      HEAD /2Mp91y HTTP/1.1
      Host: bit.ly

      ...

      Status: HTTP/1.1 301 Moved
      Location: http://news.ycombinator.com/

If the goal was minimizing requests, Twitter could've saved the endpoint on its end and passed the data through the API. A new shortener was unnecessary, though it's easy to see why it is desirable for them.

<comment><USER2> Querying each URL would be impractical to do on the Twitter client side, especially on a mobile device, even simply from the latency before you can render perspective. You could render the tweets with the shortened links and then reflow the text if/when each HEAD request returns, but that would probably result in a crummy, slow experience for the reader as they scroll through tweets.

Twitter could indeed have done it on their side, but just doing it themselves is more efficient for them and provides a bit of extra user benefit - the fact it's automatic so you get more room for text in your tweets, their malicious link protection, and reliability if you assume Twitter is more reliable than J Random URL Shortener.

<comment><USER3> > _Still, skipping the middle man is both more efficient_

The middle man will not be skipped. It will be wrapped. Two redirects instead of one.

<http://twitter.com/twitterapi/status/15741693182>

<comment><USER2> I've updated my post to be clear that I meant more efficient for Twitter, not the end user in that case. Also, my assumption is that people use this instead of normal URL shorteners in most cases.

<comment><USER3> Ah, I misunderstood.

Regardless, URL shorteners cannot be described as beneficial for users (except those who want to track clicks on their links). They make it take longer to get to the page. They are an extra point of failure. They are bad for users. That doesn't mean it shouldn't be done, but it isn't altruistic by any measure.

</comment></comment></comment></comment></comment></comment><comment><USER4> What is wrong with these people, just fix twitter so url's don't count to the count.

Morons.

There's no better user experience to a shortened url, it's like having unprotected sex with a random in a nightclub, you've no idea what you could end up with.

Repeat after me, shortened urls break the web and are inherently evil.

<comment><USER5> [http://That.will.probably.lead.to.abuse.as.I.can.send.a.long...](http://That.will.probably.lead.to.abuse.as.I.can.send.a.long.message.by.using.the.url.format.and.bypassing.the.message.limit)

<comment><USER6> Yes, it would be horrible if people could send messages longer than 140 characters via Twitter. The Internet as we know it would collapse.

<comment><USER7> There was a comment on Reddit a while back about what the 140 character limit means in different places:

      In English, you get a comment.
      In Japanese, you get a poem or a brief news article.
      In Chinese, you get a short story... it might as well be a novel.

And someone gave an example Chinese tweet that translated to:

 _"You guys are the Sina fans other there? 'Keep on Perseverance' (some literate group) is publishing some online literature collection, referencing to the sissy poet character in the 'Cellphone' TV series. I know the people in 'Sina Literature Collection" (another group) well since junior high school; often went to their chat room to chit-chat bull. His (Keep on Perservance) main page's arrangement is overwhelming; I can't digest them. My preference is simple, slim, light-breeze style of literature. Hey, today is the clan chief's birthday, too. Don't know how he/she enjoying his/her day in Swissland. May be eating chocolate fondue? I can't do winter hibernation anymore. Have to come out. And have been messing around with you all day long."_

<comment><USER8> There's a tradeoff between larger character set and easier input method. It's not trivial to input Chinese characters with keyboard. It compensates by allowing richer expressions with fewer characters.

<comment><USER9> The APL of human languages.

</comment></comment></comment></comment></comment></comment><comment><USER10> Besides URL shorteners being totally unnecessary, this just slows down users' browsing and diminishes their privacy. Basically, every Twitter app will have to become Spyware in order to comply with Twitter's new ToS.

FWIW, Here are my messages to the Twitter developer list about it:

[http://groups.google.com/group/twitter-development- talk/msg/...](http://groups.google.com/group/twitter-development- talk/msg/103fa01c26ecbd55)

[http://groups.google.com/group/twitter-development- talk/msg/...](http://groups.google.com/group/twitter-development- talk/msg/c230ab4054b6536a)

I think it is disgusting how Twitter has appropriated the old post-9/11 "we're spying on you for for own safety" stance that governments have been terrorizing citizens with. Basically, their spyware is protecting you from...other spyware. All for a fraction of a fraction of a penny per click.

Also note that their t.co shortener will create links that are 19 characters long. But, j.mp links are only 18 characters long, which means t.co links won't even be as short as possible. So, it's worse all around.

</comment><comment><USER11> > If you are already partial to a particular shortener when you tweet, you can > continue to use it for link shortening and analytics as you normally would, > and we'll wrap the shortened links you submit.

I really hope this habit doesn't catch on. If it does each link will have three points of failure instead of one (as it should) or two (as it will with t.co).

<comment><USER12> Twitter will likely crawl the final targets of the urls, so that when bit.ly goes out of business, the t.co urls pointing to bit.ly can get redirected to the canonical link. So I don't think it's quite as bad as you're thinking.

<comment><USER13> Apparently if you have a unique word in the expanded version of your url, then search for your tweet containing only the shortened url using the unique word, you will still find the tweet. I've not tested it myself, but I took it as evidence that they are indeed caching fully resolved urls.

<comment><USER11> This is true. For example, few of these tweets contain the search term: <http://search.twitter.com/search?q=news.ycombinator>

Hopefully they'll be resolving all the way down the redirect chain.

</comment></comment></comment></comment><comment><USER14> "routing links through this service will eventually contribute to the metrics behind our Promoted Tweets platform and provide an important quality signal for our Resonance algorithm"

So this is Twitter's Digg bar: they want to wrap and trace _every_ link that goes in a Tweet? So much for all those custom bit.ly domains. So much for bit.ly.

These guys are going crass quick. @alex's decision to quit is less and less surprising.

<comment><USER15> _So much for bit.ly._

And this is great news, as far as I'm concerned. Generic shortened URLs are becoming a plague upon the web and are marginally useful at best outside of Twitter. Even more props to Twitter for demystifying links where applicable instead of taking the easier route of pure obscurity. The sooner third-party shorteners disappear from Twitter the sooner they can disappear from the rest of the web and we can have link transparency back again.

On a related note, I'm actually quite happy that Twitter is starting to close up their platform. People can stop pretending it's some open platform for global communication and finally realize it's a novel service thanks to its popularity, but little more.

<comment><USER16> _Generic shortened URLs are becoming a plague upon the web and are marginally useful at best outside of Twitter_

Marginally useful at best outside of Twitter? Care to explain? Less than 1% of bitly's traffic is coming from twtitter, so obviously there are other people that find value in trackable URLs... I'm curious why you think it isn't useful?

<comment><USER17> URL shortners break the web in many ways.

Link rot, link hijack, it takes longer to reach the page, additional point of failure and domain based algorithms break. In other words, plague.

<comment><USER18> Well, OK.

But being able to pop in a nice terse URL where a long one would break in some E-mail client is handy.

<comment><USER19> Join us in the 21st century and use HTML emails. You can use any text on a link, amazing huh?

<comment><USER18> When you send HTML email, it guarantees that all recipients are rendering it as HTML too?

<comment><USER19> For those that also live in the 21st century, yes. Which mail clients don't render HTML? Perhaps the users who still use ancient mail clients should consider switching, or endure reading HTML. I'm not going optimize for the minority by making web sites in plain text either for the few users who refuse to use a web browser.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> Note: As Raffi clarified, this isn't a "shortener" but a "wrapper"

<http://twitter.com/twitterapi/status/15739646901> and <http://twitter.com/twitterapi/status/15739827266>

<comment><USER20> Bla Blubb. Of course it is an URL shortener.

<comment><USER21> _Bla Blubb. Of course it is an URL shortener._

I would vote this up were it not for "Bla Blubb". I have no idea what that is supposed to say.

<comment><USER20> It's supposed to say that Twitter is just babbling to hide the fact that it is simply a URL shortener.

</comment></comment></comment></comment><comment><USER22> "We will be updating the TOS to require you to check t.co and register the click."

Damn. Looks like URL shorteners are here to stay, permanently, and twitter is crowding out all existing link shorteners.

<comment><USER23> They already know what everyones clicking on.

Except maybe in the twitter clients.

<comment><USER24> "Twitter clients" is a larger term than you realize. I've done banner campaigns, widgets and promotional websites that all display tweets in ways Twitter would be unable to track without this.

</comment></comment></comment><comment><USER25> Interesting shoutout at the end to COInternet and the now-global .co TLD. I wasn't even aware of that.

They're running quite a marketing campaign for the launch, anyone think it will rival .com's popularity?

<comment><USER26> .co is a huge opportunity for squatters. I can't tell you how many times I've typed "site.co" instead of "site.com" because I hit enter too quickly.

For legitimate uses, it's terrible. Imagine having to say "that's co NOT com... see-oh. no M!" every time you give out your domain.

<comment><USER27> This is ridiculous... why is this TLD being allowed? Its main use is going to be abuse, ranging from squatting to phishing (chase.co, paypal.co, anyone?).

<comment><USER25> It looks like they're giving trademarks registered before 2008 first dibs, so as long as those big companies' IT departments are on the ball, they can pre- empt the squatters.

<comment><USER27> Yeah, but for a tax of $300. The big companies will doubtless all register theirs, but there are countless other sites that won't have the time/resources to do this.

</comment></comment></comment></comment></comment><comment><USER28> From their help page: <http://help.twitter.com/entries/109623>

> "All links included in Direct Message notification emails currently pass > through our link service and are converted to a <http://t.co> link. We've > also begun testing this service for links in Tweets"

I'm curious whether they're going to outright put a blanket ban on "alternative" URL shorteners like they did with Twitter-based Ad services.

<comment><USER29> Looks like they're going to wrap existing shortened URLs with t.co:

 _If you are already partial to a particular shortener when you tweet, you can continue to use it for link shortening and analytics as you normally would, and we'll wrap the shortened links you submit._

[http://blog.twitter.com/2010/06/links-and-twitter-length- sho...](http://blog.twitter.com/2010/06/links-and-twitter-length- shouldnt.html)

<comment><USER30> It is not a shortener. It is a small condom. That's what the .co stands for.

</comment></comment></comment><comment><USER31> I think URL shorteners are cool, and all the rage, but: \- I remember when del.icio.us/ came out. Not that it's a shortener, but they all have this clever naming crap. When you're not able to click the link, it's awfully hard to remember-- okay, did the first period come after the first three letters? What's the bottom domain, again? How do you even spell delicious? Did they spell it right?

\- There's an implicit trust that must be made before expecting a user to click on any shortened URL. Since you can't follow it through to the content without actually clicking on it, there's no way of knowing whether you're headed to a clever browser hijack (or worse)!

\- Which brings us to the work-safe barrier that most everyone who works a real job has. Websense, in most cases, blocks anything that's streaming media, TV, porn, advertisements, gambling, etc. etc. etc. And then it logs it, and it logs which user accesses it. When I'm at work, I'm pretty judicious-- I don't want to be recorded as clicking on YouTube links, or listening to Kanye West's latest gaffe, let alone going to Facebook or Myspace. URL shortners completely obfuscate where the link is taking you-- so the damage is done without you even knowing what choice you make. Therefore, unless I'm absolutely certain it came from someone I know, and it's specified what it is, I'm not clicking that shit. Which brings us back to implicit trust.

Most people don't check the links first, or even do this 'trust check' before they click on links. How long until we see, "Woman fired for watching Jack Johnson video on company time?" (accidentally, of course). It shouldn't be that way, but it will be before too long.

</comment><comment><AUTHOR> It will also be expanding the size of the tweet to 140 not including the URI and providing expanded URIs in addition to the shortened link. More information at [http://groups.google.com/group/twitter-development- talk/brow...](http://groups.google.com/group/twitter-development- talk/browse_thread/thread/14d5474c13ed84aa)

<comment><USER32> Incorrect. The 140 characters includes the length of the t.co link (19 characters), not whatever the original link was.

</comment></comment><comment><USER33> I wonder when some tiny country will decide to just turn their entire top- level national TLD into a url shortener.

<comment><USER34> This has been done: <http://to./>

HN: <http://to./4dw2>

Note that the 'dot' (in to.) is necessary to make the hostname absolute, so it doesn't fail in pretty much every browser. Otherwise, the URL should just be: <http://to/>

<comment><USER35> <http://to./> urls are not recognized by twitter.

</comment></comment></comment><comment><USER36> Any reason Twitter just doesn't let you use HTML anchors, and skip this whole mess?

<comment><USER37> That would be incredibly unhelpful. It's much more to type, it's yet another thing to sanitize, and most users don't know HTML.

<comment><USER38> You just do: visible_text|url , or maybe that whole thing in brackets. It turns it into an anchor. There, was that so hard?

<comment><USER37> Or you could just type in the URL. Oh wait, that's exactly what Twitter is doing.

</comment></comment></comment></comment><comment><USER39> Why not just do a direct link and just shorten the anchor text? Bypass all this t.co crap.

</comment><comment><USER40> Instead of all this complexity, why not simply NOT COUNT the characters of any URL? There is no reason anymore for 140 characters.

</comment><comment><USER41> Question is, will they start redirecting shortened links via affiliates to generate additional revenue?

</comment><comment><USER42> It lists another company in the WHOIS for the t.co domain. This begs the question: are they leasing it?

<comment><USER43> Nope. It was registered April 26 2010 by ".CO Founders program".

.CO founders are hand-picked to ensure the domain will "contribute to the .CO community in a meaningful way." In return, they get get first dibs on a .CO domain name, which will be publicly launched in July 2010. (<http://www.cointernet.co/domain/become-co-founder>)

Maybe it is registered under the program's name instead of the actual registrant to ensure registrants under the program stick with their originally-submitted plan. Or at least they can't turn around and change it to a domain parked ad page.

Or perhaps the whois registrant name will be changed after the public launch.

</comment></comment><comment><USER44> What a way to kill bit.ly and others....</comment>


HolyJit: A New Hope - <AUTHOR> https://blog.mozilla.org/javascript/2017/10/20/holyjit-a-new-hope/ <comment><USER2> For those wondering, it's a specializer, applied to an interpreter, to specialize the interpreter into a jit.

This is a pretty well explored technique, it's rarely done these days because historically, people could not get good enough performance.

(I am not trying to knock them, just put it in context)

For more context on how you'd do something like this, read this:

[https://en.wikipedia.org/wiki/Partial_evaluation#Futamura_pr...](https://en.wikipedia.org/wiki/Partial_evaluation#Futamura_projections) and [http://blog.sigfpe.com/2009/05/three-projections-of- doctor-f...](http://blog.sigfpe.com/2009/05/three-projections-of-doctor- futamura.html)

<comment><USER3> Isn't this what pypy does? pypy does the specialization at runtime, maybe this does it at (interpreter) compile time?

<comment><USER4> Given how HolyJIT is implemented (with compiler plugins etc), I believe that it does this work at compile time, yes. I haven't actually confirmed this though.

<comment><USER5> The goal is to optimize the code both at compile-time and at run-time. We need to optimize it at compile time to prevent slow start-up, and we need to optimize it at run-time to benefit from profile guided optimizations.

</comment></comment></comment></comment><comment><USER6> No offense, but the blog post is seriously missing a better (or any?) explanation of what's the new JIT all about. At first I even thought my browser loaded only half the page...

<comment><USER7> It does link to [https://github.com/nbp/holyjit](https://github.com/nbp/holyjit) which explains pretty much everything there is to explain so far...

<comment><USER8> That's all well and good, but github is blocked where I work.

<comment><USER9> If you don't mind me asking, why is github blocked?

<comment><USER8> Government site. There doesn't have to be a reason.

<comment><USER10> I hope they are paying you very well.

<comment><USER11> Government site. They aren't paying James well.

Added: if you think I'm joking or being unfair, just look at the compensation tables for just about any government outfit. They top out around a salary that is considered _average_ for software folks in some places.

<comment><USER10> I know that that is typical, but there are exceptions, and if you work for the right agency you _can_ be paid well, so I don't want to make any assumptions.

If he's _not_ paid well then I hope he realizes that by merely being aware of HN and GitHub puts him in the top 10% of developers and he can do a lot better than working at a place that restricts his ability to educate himself.

<comment><USER8> Oh, I'm a contractor and I'm paid decently, but the working conditions are terrible. I've been trying to find a job outside of defense/govt work for a long time, but either the pay isn't as good (the one or two times I managed to land an offer) or I'm not a "cultural fit." Not having a network outside of the govt bubble makes it hard.

<comment><USER12> Hi there, James. I'm a software engineer at Google. I've worked with many former government and defense contractors here whom I would consider some of the best engineers. Please send me your resume (or anyone else with a similar situation!); my email is in my profile. We have offices all over the US (but not Florida) so the bay area wouldn't be a requirement.

<comment><USER8> Well, I finally got tired of this place and went and got an offer from a local aerospace company, I suppose I ought to see how that goes :)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> For what it's worth, the name is obviously a pun and a small wink to the Graal VM [1]. Not sure there's any intention to reference TempleOS's HolyC.

[1] [https://github.com/graalvm/](https://github.com/graalvm/)

<comment><USER14> It could also be a play on the phrase "Holy shit!"

<comment><USER5> Both the reference to the GraalVM and a pun are intentional.

<comment><USER15> Maybe make its slogan: _" HolyJit, it's fast!"_ \-- with the double meaning and all.

</comment></comment></comment></comment><comment><USER16> On a similar note, I have been watching this[0] project which provides an IR to target and optional optimizations. But I like the idea that the only difference between a JIT and an AOT compiler is optimization choice (assuming we don't include tracing as part of the JIT features).

Also, this[1] blog series is a must-read for interested beginners.

0 - [https://github.com/stoklund/cretonne/](https://github.com/stoklund/cretonne/) 1 - [https://eli.thegreenplace.net/2017/adventures-in-jit- compila...](https://eli.thegreenplace.net/2017/adventures-in-jit-compilation- part-1-an-interpreter/)

<comment><USER5> It sounds more than likely that HolyJit will use Cretonne as a backend.

For the moment it uses dynasm, just to get the prototype working, but I expect to change that in the upcoming months.

(I am the author of HolyJit)

</comment></comment><comment><USER17> "This means more time to implement JavaScript features" \- yes, because JavaScript isn't getting enough features fast enough :-p

Jokes aside, I love this kind of work from the Mozilla team. This and the bits going into Quantum are really amazing pieces of software engineering in my opinion.

<comment><USER18> I'm often overwhelmed by the size of the JavaScript language; it's a _big_ language (and I'm coming from mostly working in Perl which is also a very big language...but it is dwarfed by modern JS in terms of TIMTOWTDI and in terms of core language features). But, every time I learn about a new feature, I can't fault them for adding it. It's usually a clear improvement in terms of readability and capability. And, because it's such a widely used language there tends to be a lot of input before new features are added. They are rarely half-baked once they reach the standard.

So, I agree it's overwhelming; books about JavaScript from two years ago are already out of date on a lot of fronts. But, it's also resulted in a really powerful and concise language.

<comment><USER19> Well, except WebAudio. That standard omits some essential low level audio primitives while featuring an incomplete scatter of high level APIs.

<comment><USER18> Agreed. I've only given it a cursory glance, but I've read several people bemoaning how awful it is. And, I think it's an example of what happens when APIs are built by folks who aren't actually building things with them. Audio always seems to get screwed up by engineers, sometimes for years. Linux had absolutely shitty audio up until...like yesterday.

It's a feedback loop, I think. Almost nobody uses the web for serious audio because the web sucks for serious audio, and thus almost nobody who uses the web for serious audio is working on the standards for web audio. I admire anyone who can make the web platform work at all for anything audio related.

<comment><USER20> > Linux had absolutely shitty audio up until...like yesterday.

Is that just hyperbole, or has there been a recent (within the past 6 months) development that has made Linux audio better?

<comment><USER18> Hyperbole. It really was fixed a couple years ago, maybe as much as three or four, if you were running a cutting-edge distribution like Fedora. But, it was entirely fair to say Linux absolutely sucked at audio for decades.

</comment></comment></comment></comment></comment></comment><comment><USER21> I'm not sure as to what is fundamentally different about this JIT-compiler (except for the awesome name of course)

Is it basically just a Rust rewrite which also tries to reduce the complexity of their current just-in-time compiler?

Edit: By calling it "just" a Rust rewrite, I'm not implying that's a simple undertaking, even moreso considering the complexity of modern JS engines.

<comment><USER22> Basically, instead of manually writing assembly fragments, they want to reuse annotated interpreter code, thus ensuring both correctness and safety for JIT- generated code, while reducing the redundancy. The rustc compiler is used to generate assembly fragments for the JIT, directly out of the interpreter code. It seems like a worthwhile endeavor.

<comment><USER23> doesnt rustc rely on LLVM to generate its assembly. i watch the webrender repo and there have been several issues about poor codegen that LLVM could not properly handle. some were also related to absent optimizations at the MIR level.

also would that mean that the asm snippets could change as llvm changes and possibly cause security bugs if not carefully hand-audited/tweaked anyhow?

<comment><USER4> Rustc does, but it doesn't appear to me that holyjit does, that is [https://github.com/nbp/holyjit/blob/master/lib/src/compile.r...](https://github.com/nbp/holyjit/blob/master/lib/src/compile.rs) and [https://github.com/nbp/holyjit/blob/master/lib/src/lib.rs#L1...](https://github.com/nbp/holyjit/blob/master/lib/src/lib.rs#L16-L19)

Basically, it seems (and I haven't fully digested the code yet) that it uses [https://crates.io/crates/dynasmrt](https://crates.io/crates/dynasmrt) for codegen.

<comment><USER24> Looks like dynasmrt was written for use in holyjit.

<comment><USER4> Quite possibly! It's the first I'm hearing of it. It's _very_ interesting...

</comment></comment></comment></comment></comment></comment><comment><USER25> This is amazing! Write a regular old interpreter in a fully featured language, then just wrap it in a macro and _poof_ you magically have a jit that will compile and execute your interpreted code on the fly.

Seriously. Look at the example for brainfuck [0], it's less than 70 lines of completely normal interpreter loop, including a one-line macro on the top. What the heck.

[0]: [https://github.com/nbp/holyjit/blob/master/examples/brainfuc...](https://github.com/nbp/holyjit/blob/master/examples/brainfuck.rs)

<comment><USER26> The BF example was pretty cool and was sweet to see in action. That said, the language is extremely simple, and the real meat of the problem with most dynamic languages is not in the compilation per se, but the runtime type model and specializing code on the basis of type-input fed from that model.

I think a simple next step is to take a small toy language (there's a small rust scheme implementation written by another team member that might serve as a good candidate, if extended with js-style prototype-based objects), and prove this out for an actual type-driven specialization.

But yeah, the possibilities are certainly exciting.

</comment></comment><comment><USER27> 36000 lines of handwritten assembler in v8? Not since the transition to ignition and turbofan...

$ git clone [https://github.com/v8/v8.git](https://github.com/v8/v8.git) $ cd v8 $ find . -name '*.S'

There's still some macro assembler in the built-in's but it's emitted rather than being assembler.

<comment><USER5> For both SpiderMonkey and v8, this is counting the number of calls to the MacroAssembler. SpiderMonkey commonly use the prefix "masm", while v8 uses the macro "__ " to alias the MacroAssembler.

The MacroAssembler, is basically what is used to produce assembly code in both JavaScript engines.

</comment></comment><comment><USER28> This seems really cool! I know it's been mentioned before that there are no plans to rewrite SpiderMonkey in Rust, but this sort of feels like a tiny first step in that direction?

Almost reminds me of early on in Servo's history: [https://news.ycombinator.com/item?id=6268521](https://news.ycombinator.com/item?id=6268521)

(Although I may just be projecting what I want to hear :) it's exciting hearing about new Rust projects, especially new stuff going into Firefox.)

<comment><USER29> Yes, I think it's safe to compare this to the early days of Servo for now, in that one should not necessarily expect to see this in Firefox for the next decade, though the research and expertise gained from creating it might work its way in before then. Still exciting nonetheless!

</comment></comment><comment><USER30> How is this different from Pypy, other than the fact that ones uses RPython and the other uses Rust?

<comment><USER31> HolyJIT seems to be similar to RPython rather than Pypy: RPython is both the restricted language and the tooling around it, Pypy is a Python interpreter implemented using RPython.

</comment></comment><comment><USER32> Is this basically the same transition as V8 did with crankshaft to ignition+turbofan?

<comment><USER33> I think that was the exact opposite - they generated an interpreter from their JIT. This generates a JIT from their interpreter, like PyPy and Truffle do.

<comment><USER34> It seems to be to generate JIT snippets from the Rust compiler, not an interpreter.

<comment><USER35> As I understand it you write an interpreter in Rust then you generate a JIT compiler from that interpreter.

</comment></comment></comment></comment><comment><USER36> Smells like Graal/Truffle

</comment><comment> unkown-unknowns When I first saw the name "HolyJit" On Reddit I thought it was going to be something new from the TempleOS guy.

</comment><comment><USER37> By my understanding

HolyJit:Rust::Rpython (toolkit):Rpython (language)

Rpython being the language and toolkit that is used to create pypy.

</comment><comment><USER38> Gotta say... this is pretty badass.

</comment><comment><USER39> What is a jit?

Why would you want one?

Can it help you write in a jot?

Can it help you write in a dot?

Why do I feel like I'm trapped in The Land of Doctor Seuss?

</comment><comment><USER40> I was expecting TempleOS getting a new jit

<comment><USER41> I confess, I actually chuckled out loud.

I haven't seen any of their posts for a while. I hope they are okay.

<comment><USER40> I find it amazing what he has done. I did say new jit as HolyC is compiled on the fly and has some amazing features that no other system has(embedded images). Yeah there are some esoteric features, but that is the benefit of DIY.

<comment><USER41> You have inspired me. I'll torrent his most recent ISO and spin it up in a VM over the weekend. I will give it an honest look and be objective.

I should set a blog up before that.

<comment><USER40> You will need to ignore anything non-technical. He suffers from mental illness and says offensive things.

<comment><USER41> I was online in the 80s. I have an account on voat. I visit Slashdot. I should be ok. ;-)

<comment><USER40> Ah Slashdot. I was there when it was cool :) I do have a 5 digit id, so there is that.

How is voat, like is the programming/tech comments worthy?

</comment></comment></comment></comment></comment></comment></comment><comment><USER42> Kinda reminds me of holyC ;)

</comment><comment><USER43> First thought was: "Is this another Terry Davis language/framework?"[1]

No, no it is not.

I would suggest changing the name from HolyJit to anything else.

[1] [https://en.m.wikipedia.org/wiki/TempleOS](https://en.m.wikipedia.org/wiki/TempleOS)

<comment><USER44> But it sounds like "holy shit" LOL. You know what else is funny? Farts!

<comment><USER22> Well you know, as Louis C.K. once said, you don't have to be smart to laugh at farts, but you have to be stupid not to.

</comment></comment></comment><comment><USER45> I admire how mozilla is so passionate about what they develop but still, in 2017, firefox needs restart every couple of hours for performance reasons. I kinda of feel like they have the proof of concept working but its never good enough for the wider audience.

<comment><USER46> In class there are at least 30 out of 40 people using Firefox on Ubuntu with no such issues. On my laptop I use Firefox on Debian with no such issues. Also previously on Windows XP, 7 or 8, both in virtual machines and on hardware, I never had such issues, but that's a while ago so not really applicable anymore.

You might want to submit a bug with your specific hardware to see if anyone can identify the cause, because that's not normal.

<comment><USER47> Do they use tree style tabs though?

<comment><USER48> I do. Works fine.

</comment></comment></comment></comment><comment><USER47> In the mean time, the performance for Firefox' Tree Style Tabs plugin have gone downhill. I'd be interested to know more about new browsers that put tabs on the side by default.

</comment><comment><USER49> For a moment I hoped this had something to do with HolyC

</comment><comment><USER50> Can we just drop the JS VM and embed some nicer VM (JVM, DartVM) instead?

<comment><USER51> Yes, once you convince everyone to drop the thing we have that works and implement the thing we don't have that doesn't work. In short: you complain as though it were an easy change to make.

<comment><USER52> He/she is right though, just wait when WebAssembly gets more mature.

I bet all those plugins will be back.

<comment><USER53> WebAssembly has no good story for the DOM.

<comment><USER54> i feel like that's on purpose...we can engineer all these crazy things, but getting good DOM access? naw not possible

<comment><USER55> wasm is an MVP, they fully intend to add DOM support: [http://webassembly.org/docs/future- features](http://webassembly.org/docs/future-features)

Its just that implementing the DOM requires a lot of other (complex) things 1\. Stable JS object ABI 2\. Integration with the GC garbage collector 3\. Better integration with modules

Personally, I'm hoping that we actually get a lower-level subset of the DOM apis that doesn't rely on as many OO features so we can bind to it easier, and avoid more DOM manipulation overhead (though I have no idea what this would look like).

<comment><USER56> Personally I'd like to see an experimental mode in Quantum/Servo with an RPC interface to render directly to the display list, possibly with an intermediary like a vector of VDOM operations.

</comment></comment></comment></comment></comment></comment></comment><comment><USER57> It's fun to mock God ... until he judges you for it.

Daniel 5

</comment><comment><USER58> Why does the Cargo.toml[1] file in the source repo for HolyJit have the word "brainfuck"[2] in it?

Does that have some significance to Rust or Mozilla? Or is this a case of copy pasta?

[1]: [https://github.com/nbp/holyjit/blob/master/Cargo.toml](https://github.com/nbp/holyjit/blob/master/Cargo.toml)

[2]: Permanent link to line: [https://github.com/nbp/holyjit/blob/1f20eb41de2dae14179815c7...](https://github.com/nbp/holyjit/blob/1f20eb41de2dae14179815c7d5ebb8780051e13c/Cargo.toml#L17)

<comment><USER59> [https://en.wikipedia.org/wiki/Brainfuck](https://en.wikipedia.org/wiki/Brainfuck)

The HolyJit repo has a brainfuck jit example in the repository: [https://github.com/nbp/holyjit/blob/master/examples/brainfuc...](https://github.com/nbp/holyjit/blob/master/examples/brainfuck.rs)</comment></comment>


UVB-76 (The Buzzer) transmitted a new voice message - <AUTHOR> http://uvb-76.blogspot.com/2010/08/august-23-2010-935am-pst-voice.html Wikipedia article on The Buzzer: http://en.wikipedia.org/wiki/UVB-76 <comment><USER2> Whilst the meaning/intention of the voice messages may be "mysterious", the general purpose of the signal is not - it's for ionosphere research:

<http://elpub.wdcb.ru/journals/rjes/v10/2007ES000227/2.shtml>

Scroll down to "Doppler Radio Sounding of the Ionosphere", note the broadcast frequency.

My guess is that the occasional voices are either a) someone else randomly broadcasting on the same frequency, b) some technical hitch at the broadcast station. Whatever the reason, 99.9999% it's going to be totally mundane.

</comment><comment><USER3> I guess it's fun to try to crack codes, but it seems pretty pretty likely that it would be some sort of uncrackable one-time pad.

</comment><comment><USER4> The idea that the numbers are simple lat/lon coordinates (referring to a point in the Barents Sea) seems plausible ... although why the Russians would be transmitting something that openly and obviously is a little weird. Doubtless they have more secure communication channels for their Navy.

It's a bit surprising to me that nobody has been recording and archiving the station's transmissions until recently (besides, presumably, other nations' intelligence services); it's relatively simple compared to a lot of other projects, and obviously 'numbers stations' are something that fascinate a lot of geeks and radio enthusiasts.

<comment><USER5> People have recorded numbers stations in the past: <http://www.archive.org/details/ird059>. These CDs, a collection of number station recordings, were released in 1997. Not sure if anyone has been recording since then. Listening to some of the samples is fascinating.

<comment><USER6> I was exposed to these before the Wilco album "Yankee Hotel Foxtrot" (which uses number station samples). It was fun to have my mind blown by the album and then explain to my friend (who introduced me to the album) about number stations.

</comment></comment></comment><comment><USER7> Wonder if it's related to this: <http://i.imgur.com/bktYf.png>

<comment><USER8> Yeah, when I think "conspiracy", I rush over to 4chan to see what the internet's finest minds have come up with.

</comment></comment><comment><USER9> On an entirely unrelated note, a suspected british spy was killed this week.

[http://english.aljazeera.net/news/europe/2010/08/20108258200...](http://english.aljazeera.net/news/europe/2010/08/20108258200315313.html)

</comment><comment><USER10> Probably unrelated, but on Tuesday: Two CF-18s shadowed a pair of Russian military aircraft Tuesday as they flew within 56 kilometres of Canadian soil

From: [http://www.cbc.ca/politics/story/2010/08/25/cf-18s-russians-...](http://www.cbc.ca/politics/story/2010/08/25/cf-18s-russians- airspace.html)

<comment><USER11> probably unrelated, but on Tuesday I saw a music video on TV. What do the two have in common? Well, they're both fairly regular occurrances that are usually not note-worthy.

Unless of course, you are an ardent devotee of Dimitri Soudas' propaganda.</comment></comment>


An audience with Brian Eno - <AUTHOR> http://www.guardian.co.uk/music/2010/jan/17/brian-eno-interview-paul-morley <comment><USER2> "As an intellectually mobile loner, scene-setter, systems lover, obstinate rebel, techno-prophet, sensual philosopher, courteous progressive, close listener, gentle heretic, sound planner, adviser explorer, pedant and slick conceptual salesman..."

I stopped reading after this.

<comment><USER3> I skipped the intro and read the guy's words directly, and enjoyed the article very much.

I think the insights he has about his world also have relevance to the typical HNer's world, e.g. the importance of getting rapid feedback from the audience and adjusting accordingly, the importance of a good name, the transience of a market. It was interesting to see these themes in a different context.

<comment><USER4> I groaned when I read the Guardian's pretentious introduction too, but since I'm a massive Eno fan I read on. He's actually very down to earth, confessing his love for Abba, and coming up with a great metaphor for the music industry:

"The record age was just a blip. It was a bit like if you had a source of whale blubber in the 1840s and it could be used as fuel. Before gas came along, if you traded in whale blubber, you were the richest man on Earth. Then gas came along and you'd be stuck with your whale blubber. Sorry mate – history's moving along. Recorded music equals whale blubber. Eventually, something else will replace it"

If you're interested in his music, here's a good taster:

<http://www.youtube.com/watch?v=lOgQyIMX_XU>

<comment><USER5> Great comment. As another big fan I'll see your ambience and raise you some pioneering noise pop:

<http://www.youtube.com/watch?v=kZWP5pmsRDE>

<comment><USER6> During the summer 2 friends of mine and I put together a Brian Eno cover band, just for fun. We learned our favorite songs from his rock era and played a couple of shows. It was really amazing to strip down his songs to a point where a trio of musicians couple play it live.

We played a show with a ZZ Top cover band - I assume this is a world first (Brian Eno + ZZ Top on the same night).

</comment></comment></comment></comment></comment><comment><USER7> I'm a huge fan of Eno's work. This article, however, is 90% adjectives. Did the author just find a thesaurus for the first time, or what?

</comment><comment><USER8> Met him at a local music festival in 2001. I gave him a CD of my music and he apologetically said "I might not be able to do anything with it". Nice guy!

[Edit] I didn't hear back from him but that's what he said might happen.</comment>


How the iPad Gets the Web Completely Wrong - <AUTHOR> http://thefastertimes.com/designandtech/2010/03/11/how-the-ipad-gets-the-web-wrong/

<comment><USER2> I think it's a stretch to say that the iPad gets the web completely wrong. The author complains about the lack of draggable windows on the iPad, but what is one of the best advancements in browsers in recent years? _Tabbed browsing_ , specifically so you don't have so many windows floating around.

Also, she seems set on imposing her idea of the interrupt-driven experience of a traditional computer(instant messaging, etc.) in dismissing the iPad without considering that Apple may include background tasks in a future version of the iPhone OS — or that maybe an interface that promotes _focusing_ on a single task at one time could be beneficial to the user.

She complains she hasn't done much web browsing on her iPhone, only when she specifically needs information. What exactly is wrong with that?</comment>


How a burnout changed my life - <AUTHOR> http://chriseidhof.tumblr.com/post/9828677336/how-a-burnout-changed-my-life

<comment><USER2> Burnout murdered my life. Working 90 hours a week with no reprieve (I had 12 other mid-managers depending on my mentorship, ergo, I couldn't "quit" or "stop" being motivational). Its dangerous. Monitor it carefully.

Most of mine stemmed from managing my schedule every 15 minutes (literally, 7am - 9pm), with near-zero socialization. It was great the year before (building a small painting business franchise). The upper (district) management was too much.

Be well.

</comment><comment> g-garron If that is the way the burnout changed your life. You can thank the burnout for making you a more mature man.</comment>


Ask HN: Learning to write good JavaScript - <AUTHOR> The majority of my programming since university has been in the .net space... but am being increasingly required to deal with JavaScript day-to-day and would like to learn more. Initially this will mostly be for web development, but I've been meaning to play with node for a long time as well.
I am comfortable enough with the basic syntax etc, so not looking for absolute beginners stuff, but I would love some recommendations of resources that teach about real world use of the language ... common patterns & anti-patterns, typical coding style etc. A nice book or two would be ideal, but online resources are fine too!
Basically I don't just want to write JavaScript, I want to write good JavaScript. <comment><USER2> You can learn a ton about the language itself by reading. A good place to start is this collection of free online resources.

<http://jsbooks.revolunet.com/>

My favorites from this site are as follows: <http://eloquentjavascript.net/contents.html> <http://bonsaiden.github.com/JavaScript-Garden/> [http://www.addyosmani.com/resources/essentialjsdesignpattern...](http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/) <http://jstherightway.com/>

Mozilla has excellent JavaScript material: <https://developer.mozilla.org/en- US/docs/JavaScript/Guide> [https://developer.mozilla.org/en- US/docs/JavaScript/Referenc...](https://developer.mozilla.org/en- US/docs/JavaScript/Reference)

As far as print goes, you'll want these books in your reading list:

JavaScript: The Good Parts by Douglas Crockford Secrets of the JavaScript Ninga by John Resig

<comment><USER3> Every good resource that I can think of has already been listed by @dutchrapley, with the exception of 1 (so he gets my vote :D) - Once you finish reading 'The Good Parts' and 'JavaScript Ninja' take a look at 'JavaScript Patterns' by Stoyan Stefanov [www.amazon.com/JavaScript-Patterns- Stoyan-Stefanov/dp/0596806752/]

On a related note, there was some interesting discussion right here on HN with regards to Addy Osmani's JS Patterns eBook - <http://news.ycombinator.com/item?id=2762888>

<comment><USER4> I'll second 'Javascript Patterns', and add 'Maintainable Javascript' by Nicholas Zachas [[http://www.amazon.com/Maintainable-JavaScript-Nicholas-C- Zak...](http://www.amazon.com/Maintainable-JavaScript-Nicholas-C- Zakas/dp/1449327680)]

</comment></comment></comment><comment><USER5> These are some good resources that will teach you how to write good javascript. Having an understanding of the core language rather than using frameworks is a great start:

Eloquent JavaScript: <http://eloquentjavascript.net/contents.html>

Learning JavaScript Design Patterns: [http://www.addyosmani.com/resources/essentialjsdesignpattern...](http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/)

JS The Right Way: <http://jstherightway.com/>

Learning Advanced JavaScript: <http://ejohn.org/apps/learn/>

Ask HN: JavaScript Dev Tools: <http://news.ycombinator.com/item?id=3550998>

MVC Architecture for JS: [http://michaux.ca/articles/mvc-architecture-for- javascript-a...](http://michaux.ca/articles/mvc-architecture-for-javascript- applications)

Large-Scale JS Application Architecture: <http://addyosmani.com/largescalejavascript/>

Mozilla Developer Network - Intro to OO JS: [https://developer.mozilla.org/en- US/docs/JavaScript/Introduc...](https://developer.mozilla.org/en- US/docs/JavaScript/Introduction_to_Object-Oriented_JavaScript)

<comment><USER6> Eloquent Javascript is just awesome... learned a lot from it.

</comment></comment><comment><USER7> Check out the code in the open source project fabric.js <http://fabricjs.com/> . It's written by Juriy Zaytsev who was a maintainer for prototype.js. I find the code useful for learning advanced object oriented JavaScript because:

1) It's self contained. No dependencies on third party OO libraries or frameworks.

2) The code is very readable.

3) It's a canvas library, so it's fun to work with if you're into graphics and visualizations.

4) You'll learn a lot about how many JS projects are built, documented, and tested, if you get it to build and the tests running on node.js.

Here is what I would do:

1) Check out the project and get it building.

2) Read all the files in the util folder. You'll see a lot of methods added to Object and Array.

3) Take a look at lang_class.js: [https://github.com/kangax/fabric.js/blob/master/src/util/lan...](https://github.com/kangax/fabric.js/blob/master/src/util/lang_class.js) This is how he does OO JS. It's very similar to John Resig's OO classes: <http://ejohn.org/blog/simple-javascript-inheritance/> and somewhat different to prototype's classes: [https://github.com/sstephenson/prototype/blob/master/src/pro...](https://github.com/sstephenson/prototype/blob/master/src/prototype/lang/class.js)

4) Then take a look at the base class: [https://github.com/kangax/fabric.js/blob/master/src/object.c...](https://github.com/kangax/fabric.js/blob/master/src/object.class.js) and an inherited class: [https://github.com/kangax/fabric.js/blob/master/src/line.cla...](https://github.com/kangax/fabric.js/blob/master/src/line.class.js)

5) Search for instances of the "bind" method, and see how they're used.

Of course, as you're doing all this, you'll need to experiment with simple language constructs in your browser's console to test what you think you know, and you'll want to read some chapters from a thorough JS book like, JavaScript the Definitive Guide <http://shop.oreilly.com/product/9780596805531.do>

Finally, this is just a personal opinion, but I don't like Crokford's chapter on OO JS. I just don't think it presents your options well. If you decide to write a large project in JS using OO techniques, I think you'd be better off utilizing an OO library, compiler, or framework like TypeScript, Google Closure, Prototype or CoffeeScript, than you would charging forward armed with Crokford's chapter on OO.

<comment><USER8> I second the recommendation for fabric js. It's the first JS library I ever used, since I was playing with canvas to begin with. The code is definitely very readable and the author is super responsive on stackoverflow and Google+. His documentation and examples are excellent.

</comment></comment><comment><USER9> Read everything that Crockford has said about Javascript: <http://javascript.crockford.com/> and especially don't miss his videos.

<comment><USER10> I'm going to second this. Crockford's book Javascript the good parts helped me a ton when getting up to speed in javascript. Ended up building a timecard javascript application for mobile.

I'll also recommend spending a little time with javascript before jumping into jQuery. learning how things are scoped is important.

</comment></comment><comment><USER11> JavasScript is an API language that allows you to write embedded programs to interact with the environment. The environment can be low level APIs such as browser DOM, WebKit library or Node.js process, or high level abstractions such as jQuery, Backbone, d3.js, etc.

GOOD JavaScript is the code that plays nicely with its environment. There is no strict best practice for every situation. You have to learn the language of your neighborhood.

</comment><comment><USER12> Since you are familiar with .net, I recommend studying typescript <http://www.typescriptlang.org/>

You'll learn a lot from watching their tutorials and how the code is converted to javascript.

<comment><AUTHOR> I have had a brief look at typescript, it does look interesting!

However I think I would rather get a strong handle on vanilla JavaScript before I start looking at things like Coffeescript/Typescript.

</comment></comment><comment><USER13> 1\. Always use jslint.

2\. Read good JavaScript (as others have said). The jquery source is a good place to start. Underscore.js is good, too. Unfortunately there isn't consensus about what is and what isn't good JavaScript. Some people seem to be suggesting Prototype as an example of good js, which I would disagree with.

<comment><USER14> > 1\. Always use jslint.

Or jshint!

</comment></comment><comment><USER15> Learn Lisp. Realize that JavaScript is a lot like Lisp, but with better libraries and C-like syntax. Then write really good JavaScript.

<comment><USER16> Sexps aside, no continuations, no TCO, and no macros mean that JS is actually pretty far from Lisp.

<comment><USER17> It's Scheme that has continuations and TCO (guaranteed by the spec) -- Common Lisp has neither, I believe.

<comment><USER16> I think you're right. What I was trying to point out is that learning "Lisp" (which one?) is not a good way to get better at Javascript. Lua or Io - maybe, but even then the suggestions of other people in the thread for actual JS resources are so much better.

</comment></comment></comment></comment><comment><USER18> A lot of people have listed a lot of different things. If I were in your shoes, I'd be pretty overwhelmed.

There is only 1 book you should start with, "Javascript, the Good Parts". It only talks about the language, not DOM apis. If I were teaching any student javascript, I would always start with that book.

As for the rest of it, learn _the_ language. Avoid Coffeescript, Typescript, or any other DSL that purports to "compile" to javascript. You'll only be doing yourself a disservice. Just worry about learning the language first. This is vital to understand what's going on.

</comment><comment><USER19> Do a side project that will require you to write a lot of javascript. Try not to use libraries like bootstrap that do a lot for you.

If you write a lot of js, you'll probably write messy js, but you'll understand how it can so easily get out of hand.

Then read a lot of code and the other resources people have linked to here. Having done a lot from scratch will motivate the solution a lot more.

You will have actually run into the problems they are telling you to solve and understand _why_ it's good js rather than just taking their word for it.

</comment><comment><USER20> Shameless plug I wrote an article called "OO JS in 15 minutes Or Less" that did really well hacker news in addition to others. Feel free to check it out :)

[http://beardedocto.tumblr.com/post/21920818233/oo-js- in-15mi...](http://beardedocto.tumblr.com/post/21920818233/oo-js-in-15mins-or- less)

</comment><comment><USER21> This book by Mikito Takada (mixu) has been the single most important read in my JavaScript development: <http://singlepageappbook.com/>

Very well written, well explained, and it points to many more best practices.

</comment><comment><USER22> I didn't grok Javascript until I started using node.js. I soon realized jQuery is not Javascript, which is what many people think Javascript is just like many think Rails is Ruby.

Just do it! Google things as you learn. Try writing a RESTful todo app with Backbone on the client and node on the backend. You'll soon learn async patterns, closures, constructor functions and most importantly understand how `this` works. Those along with `apply` I think are the essentials to being an effective Javascript programmer.

</comment><comment><USER23> Three simple steps.

1\. Read Douglas Crockford's Javascript: The Good Parts (Alternatively you can watch his lectures on Yahoo Theater)

2\. Read Nicholas Zakas' Maintainable Javascript and Scalable Javascript.

Trust be both these books will make a great difference to the way you write your javascript code.

The next step should be to contribute to some open source JS frameworks. I will suggest jQuery or YUI. You need not always write code, you can begin with improvements to the documentation and later move on to submitting actual code.

</comment><comment><USER24> If you're okay with paying, John Resig (creator of jQuery) is in the process of writing a great book - "Secrets of the JavaScript Ninja" - which is available as an early access edition here : <http://www.manning.com/resig/>

I assure you, its worth the money.

Note: I am in no way associated with the publishers or author apart from being a beneficiary of this awesome repository of knowledge. This is not even an affiliate link.

<comment><AUTHOR> My employer will be paying, so I am OK with that ;)

</comment></comment><comment><USER25> Id say just like with any language, you need to ensure that your objects do one(or a few) thing(s) well. Read this article about dependency injection with JS [http://merrickchristensen.com/articles/javascript- dependency...](http://merrickchristensen.com/articles/javascript-dependency- injection.html) if you're able to model your code in a manor that fits that pattern, you'll be off to a great start

</comment><comment><USER26> You may also want to take a look at SlickGrid <https://github.com/mleibman/SlickGrid>

It is a datagrid developed using pure javascript and jquery. The codebase is one of the best that I have seen in my life so far. Proper use of separation of concerns, responsibilities. Very neat use of oops, methods.

There are lot of examples which will teach you great stuff.

</comment><comment><USER27> Apart from all the wonderful resources listed here, one thing that really thought me a lot was writing stuff without using a library like jQuery. Try writing browser-compatible event handlers (you'll find quirksmode.org an immensely helpful resource), an AJAX request, a simple pubsub/observer pattern, etcetera. This will learn you a lot about the language, and it'll be a lot of fun too!

</comment><comment><USER28> Keep an eye on the up and coming <http://effectivejs.com/>

</comment><comment><USER29> This is one of the best resources I've found that highlights all the silly things about javascript. It doesn't treat you like a beginner, it's just information about gotchas

<http://bonsaiden.github.com/JavaScript-Garden/>

</comment><comment><USER30> I'm currently going through Javascript Enlightenment by Cody Lindley. I think in the end you have to re-read lots of the same topics cause one author's way of phrasing certain things will 'click', and then another author's will add on to the 'click'.

</comment><comment><USER31> For OOP JavaScript, I suggest you check out this link: [http://killdream.github.com/blog/2011/10/understanding- javas...](http://killdream.github.com/blog/2011/10/understanding-javascript- oop/)

</comment><comment><USER32> <http://dmitrysoshnikov.com/> top right hoover over "Menu"

</comment><comment><USER33> I can also recommend Javascript Patterns and Javascript Web Applications by O'Reilly. They're both solid books.

</comment><comment><USER34> The Definitive Guide to Javascript by David Flanagan is incredibly comprehensive (and only $5 on Android)

</comment><comment><USER35> Consider using a framework that forces you to write orthogonal code...backbone, ember, spine, etc

</comment><comment><USER36> Well, first things first, you must be aware that JavaScript is a _bad_ language, broken in many ways and mostly executed in a random fashion (i.e. almost no platform follows 100% ECMA, and even some ECMA directives are retarded, like ECMA4 didn't force chrome to return object properties in creation order by default, whereas ECMA5 fixes that to the default behavior we've always seen and expected).

In that sense, writing _good_ JavaScript is like writing _good_ PHP or _good_ C++, it's a lot about avoiding the broken features (for both those languages, there are a lot of features one shouldn't use, it's even more true with js).

That means you should only learn from people who recognize how broken js is, and thus of course js: the good parts sounds like the right direction, whereas I think Resig is a religious zealot and shouldn't be listened to (the guy actually thinks broken js as a first language is a _good_ idea).

Lastly, js is broken in many ways, don't use it when you don't have to, that means avoid node.js and use a good server side language instead.

tl;dr js sucks, don't listen to people who don't ack that, learn to avoid the sucky parts instead.

And more downvotes from the zealots... HN is so predictable these days.

<comment><USER37> Dear Troll, I find you use of the word "zealot" to be amusing, ironic and predictable. In addition, during that entire rant you never once mentioned what you thought was a good language.

Now, to add to the real discussion. Aside from all the wonderful suggestions you received so for: once you have read all that you can and broken/learned first hand all you can, and if you are of the pattern persuasion I would look in to the functional language patterns. The Classical patterns, as found in most examples and resources these days, map poorly to JS. At least that is my opinion.

<comment><USER36> good for you.

I haven't seen a perfect programming language yet, but the compromises offered by FORTRAN, C, Ada and lisp are really hard to beat, as the first three offer very competitive speed whereas the last one trades off about 50% speed for a lot of built-in metaprogramming.

It's really all about compromises, and JS fits no bill except "easy to learn for noobs", which imho is a non-issue for anyone considering long-term use.

(in case you didn't know, fortran has awesome arrays and awesome compilers, C has inline ASM and awesome compilers, Ada has increased execution security and lisp is lisp)

<comment><USER38> JavaScript is harder to learn for noobs, it's just easier to get "hello world" working than other languages. I don't think anyone with a good grasp of JS would ever recommend it to someone as a first language.

</comment></comment></comment></comment><comment><USER39> Javascript is simple , but it comes with 0 battery included. The most difficult thing is not javascript itself but it is to work with the DOM which is a strongly typed and inconsistant API written in C++ most of the time ( yes it is , you cant say it is not and still get those Node errors ...) The only book you need to read about javascript is "The Good Parts" by Douglas Crockford and read the available ECMASCRIPT specs, which is mandatory if you are serious about Javascript. The rest is mostly garbage.</comment>


Mosebro: mobile semantic browser for Android - <AUTHOR> http://lexandera.com/mosembro/

<comment><AUTHOR> You're right, those files would be useful.

But the point of the examples is that all sorts of actions can be attached to semantically marked up data. Those actions could just as easily export data to a vcal file, or do something less obvious, like list people you know who live near that location, or list people who are also planning to attend an event, etc.

I guess the demo does need quite a bit of work. Things should be more clear when multiple (as well as user-installable) smartlinks/actions will be supported on each semantically marked up item.

</comment><comment><USER2> Hey, I've got a crazy idea. Instead of a completely unsupported, fantasy standard "smart link" you could instead offer a link to a vcal file, or vcard file, or a location XML file. Then every damn computer and mobile device in the world would be able to do something useful with the data, right now not in some magical fantasy future.</comment>


Rich Kids Stay Rich, Poor Kids Stay Poor - <AUTHOR> http://fivethirtyeight.com/features/rich-kids-stay-rich-poor-kids-stay-poor/ <comment> amar-singh In my point of view this statement is totally wrong...I can give you lots of examples like A.P.J Abdul Kalam , his arents were poor but he became president of Indian. All you need to be rich is your mindset , aim, creativity....Your destiny is in your hand....

<comment><AUTHOR> This is based on observing a huge number of people. There are certainly exceptions, but the overall effect looks pretty clear.</comment></comment>


We shouldn't blame ourselves for the Linux desktop's microscopic market share - <AUTHOR> https://valdyas.org/fading/hardware/why-we-shouldnt-blame-ourselves-for-the-linux-desktops-microscopic-marketshare/ <comment><USER2> Right conclusion but wrong timeline and wrong OS! The big loser here was not Linux, it was Be, makers of BeOS.

BeOS was ahead of its time. It had a modern GUI, where each window had a dedicated thread. It had a fantastic filesystem, with journaling and database- like searching. Very advanced.

Be tried very hard to get OEMs to ship BeOS. But Microsoft's "per-processor" licensing meant that OEMs were charged for Windows on every computer they sold, even those without Windows.

At the end, Be was offering to license BeOS _for free_ to any OEM that would ship it as the default OS (even allowing dual boot), and still had no takers. Then they tried to license BeOS to Apple, but they misplayed their hand and Apple went with NeXT. That was that.

By the time Linux became plausible on the desktop, the per-processor licenses were gone.

<comment><USER3> For those interested in continuation of Be spirit, check out Haiku OS [https://www.haiku-os.org/](https://www.haiku-os.org/)

<comment><USER4> The philosophy of Haiku sounds like a goal that what Linux should have been for the desktop. Unfortunately the distro ecosystem has riddled it with endless pitstops of issues, competition of similar technologies like KDE, GNOME, X11 and Wayland fighting each other, whereas OSes like macOS, Windows and Haiku have an integrated system and a consistent experience of their OS.

</comment></comment></comment><comment><USER5> From my own selfish point of view, I'm actually happy that Linux has a small consumer marketshare, as long as it's large enough to support serious development (which it is).

I've been noticing that as various applications, operating systems, and platforms have worked to become more focused on the common person, they've been increasingly becoming less useful (and more of a pain to use) to me. I fear that if Linux actually broke into the mainstream, the same fate would befall it.

<comment><USER6> I feel the same way about my favorite programming languages. I'm glad there aren't giant Haskell conferences that are more concerned with making the language "friendly" and "accessible" than making it useful. This is what happened to Python, etc, and I don't think it's a good thing.

<comment><USER7> What's wrong with trying to bring people in? Why be elitist with tooling?

<comment><USER8> It guarantees the userbase is elite.

<comment><USER7> And tiny. Why is this a good thing?

<comment><USER8> A tiny userbase working on tony codebases that implement just enough feautures that the program's worth it for elite users can be worth it to elite users.

</comment></comment></comment></comment></comment></comment><comment><USER9> Absolute drivel not worth reading. All politics and pontificating. Linux desktop lost because the market did not want it. That is the system we live in. Rants about Bill Gates needs to be in jail are nonsense (and I used OS/2 until 99!). I had a BeOS desktop also. They lost. Gates for whatever issue you have with his hard nose legal business practices is doing a ton of good work via his foundation. Linux desktop lost the battle, get over it. Be happy it won the war as it is in most embedded systems and almost all the servers in the world. By this logic I should be mad about that because Solaris was so much better as a server.

<comment><USER10> One can do bad things and also donate a lot of money later. See also Family, Sackler

</comment></comment><comment><USER11> I'm not hugely disappointed with Linux's marketshare per se, because that doesn't affect a Linux user's life as much as you might think. It does what I need it to, stably, and I rarely run into old annoyances like hardware compatibility or incompatibility with specific tools I need for work. It's encouraging that Mac OS and now Windows (with WSL) have made some effort to become more reasonable Unix dev environments too. The dollar cost of the OS on new machines doesn't seem intolerable; you can do a lot with a cheap Chrome OS or Windows device.

There _are_ problems today that might not exist in a more Linux-y world, especially the remarkable power of a few huge companies to shape users' computing experiences. On the other hand, if Linux had had some huge commercial backer, whatever popular distribution won could have ended up with similar issues. In any case, my preferred desktop "winning" is not the only or best solution to those problems; users get some support from market forces (which I think we can partly credit for useful cheap devices and Microsoft's transformation) and where they don't help, well, regulation, including antitrust regulation, is always out there.

</comment><comment><USER12> The Microsoft antitrust case was a long time ago and AFAIK they stopped the licensing shenanigans. Since then macOS has increased share significantly and Linux has gained almost nothing.

<comment><USER13> You sure about that? Chromebooks are everywhere.

<comment><USER12> ChromeOS also has lower market share than macOS (despite running on far cheaper hardware) and I don't consider ChromeOS to be desktop Linux.

<comment><USER14> More and more I think you should. I would have totally agreed a year ago, but it's now very easy for the average user to install any Linux app they want from distro repos. Chrome OS is totally Linux now.

</comment></comment></comment></comment><comment><USER15> I believe this is tautological.

Mass market products compromise. They simplify. They market, advertise, etcetera.

A truly mass market GNU/Linux distro with the clout of a Microsoft or an Apple would inevitably, I believe, end up forking off into its' own barely compatible universe.

If we're lucky, the 'old' universe sticks around. If we're unlucky, it fragments the ecosystem too much and the proper power user OS falls apart.

Android is an example of precisely that.

I've been using Linux for my entire adult life. All of the reasons that people give for not using it are reasons I use it. "It's too much tinkering", "I had to look at a config file", "I wanted to compile something to change it", etc.

<comment><USER16> To be fair, those reasons aren't as pertinent as they once were. I have a linux-only household and rarely tinker (besides my server, but that's a different category of system). Sure the occasional config file and maybe a compilation if I need the very latest of something, but otherwise, linux is pretty damned solid without digging in too deep these days - which includes a triple-monitor custom desktop.

<comment><USER17> > maybe a compilation if I need the very latest of something

It boggles my mind that it is 2019 and some people find it acceptable that you have to compile from source to install up to date software. Or to install software to a different location. Or to have two versions of the same software installed.

This is a ludicrous regression from the state of personal computing in 1985.

<comment><USER15> What's the big deal with compiling?

Rust's package manager for example compiles everything. 'cargo install bat'. There, you compiled it.

Python programs, JS are essentially being compiled on the fly.

The Arch AUR is a oneshot 'makepkg' command even without a helper.

It's only this big scary thing if the build tools are crap and you need a bunch of manual interventions.

Again, I find it strange that developers shy away from this. I can see that the man on the clapham omnibus may not be impressed.

<comment><USER17> Yep, compiling is so seamless that nobody ever uses something docker to fully contain their build environment to avoid conflicts and missing dependencies.

Not to mention little things like not all software being open source, having to have compile dependencies installed that are not runtime dependencies, compilation being slow for a lot of languages, etc.

Here's how installing up to date software goes in a sane world: Download latest software direct from developer (or copy from some other media). Done. That's how AppImage works, it's how RiscOS worked, it's how classic MacOS worked, it's how DOS worked, it's how NeXT worked, and it's how a lot of Windows software works (though sadly not all of it).

<comment><USER15> I've never encountered this (compiling) as being a problem - my distro provides build scripts anyway. We're moving towards reproducible builds now, which have a hard requirement of a 'one command' build process to reproduce byte for byte output.

I think within a few years we'll see distributions that have the option to build from source in the package manager as a first class citizen.

To me, that's the sane way to distribute software. Provided unverifiable binaries are sketchy. Closed source software is something other people use.

Almost no software provides binary releases at the commit level. Sometimes you can have nightlies.

Again, I think this is something that seperates userbases. You don't want this, you see it as effort or something. I see it as being absolutely necessary.

So, YMMV I guess. /shrug

<comment><USER17> > I've never encountered this (compiling) as being a problem - my distro > provides build scripts anyway.

Consider the common case that the software you want to install is not in the repo.

> Closed source software is something other people use.

Great for you, but what's this thread about again? Oh yeah, Linux Desktop being useful for people who aren't currently using it. As in, basically everybody who uses a personal computer.

Why do they use proprietary software? Because they have shit to do and they need tools. They can't always write the tools themselves so they pay someone else who has written the tool they need.

This isn't rocket science, yet Linux Desktop evangelists still don't get it even after 20 years.

<comment><USER15> You're replying to my original comment that states that this is tautological.

I don't think that the Linux Desktop will be successful, and I think if it ever is, that would be because it's moved away from the principles that make it interesting to people like me to begin with.

I'm not talking about the man on the clapham omnibus, so responding to me along those lines is kind of silly. I don't expect the general public to spanner.

I do have disdain for developers that moan about it though.

<comment><USER17> Alright, let's forget about the general public.

I, as a tinkerer, developer, and general personal computing enthusiast think it is absolute unmitigated bullshit that my only options for installing software are to restrict myself to what is in some repo maintained by volunteers, or try my best to match the build environment of the developer and compile from source.

I don't like useless busywork, and I don't fetishize complexity. I do like the idea of an open and free operating system, so it bothers me a lot that the only one even coming close to being useful to me is still so far off.

<comment><USER15> I just feel like we're in different worlds.

> try my best to match the build environment of the developer and compile from > source

This is analogous to someone releasing a Windows executable without the correct DLLs or whatever. The developer hasn't given you what you need to install it.

Your problem is with the developer of that software.

Again, YMMV, I reckon we just use different things. I've literally never had this problem for over ten years now.

<comment><USER17> That makes you an outlier, considering how many developers now ship their build environment in a docker container to avoid these problems.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER18> I think a big part of the lack of Linux (desktop) adoption is the DIY/ hobbyist vibe that it continues to put off. The consensus among the Linux community is that for the regular non-techie consumer, all they need is a web browser and an office suite. That's missing a key part of the equation: Linux desktops simply aren't available in regular stores for people to see.

Sony has a similar issue with their smartphone division. For whatever reason, they are no longer displaying their products in cell phone carrier stores in the US. The consumer doesn't even have the chance to think about a Sony product before making the commitment to a competitor, forming a good relationship with that manufacturer, and repeating the cycle to avoid change.

Why aren't Linux laptops in best buy or the military department stores?

<comment><USER19> Every now and then a system with Ubuntu installed makes it to retail shelves. I dubt they sell well since you need something really special (like the very nice build quality on the old aluminium MacBook, with most consumers knowing or seeing someine able to use them) to consider the jump.

<comment><USER3> Yeah, and if they do sell any amount, someone inevitably complains

[https://www.youtube.com/watch?v=5Qj8p-PEwbI](https://www.youtube.com/watch?v=5Qj8p-PEwbI)

</comment></comment></comment><comment><USER20> How did he do this?

" So, to make things painfully clear: Bill Gates made it so that his company would tax every computer sold no matter whether it ran Windows or not. If a manufacturer wanted to sell computers running Windows, all the computers it sold were taxed by Microsoft. He would get paid for the work a Linux distribution was doing, and the Linux distribution would not get that money."

<comment><USER21> Contracts. You, as Microsoft, tell Dell and HP they can either pay for a license for Windows for every computer they sell regardless of whether or not they install Windows, or they cannot have a single license for Windows. Dell and HP then choose: Hope people accept linux/BSD/Other and stop selling windows, or sell windows and pay some extra.

Nothing illegal about it unless you are exploiting a monopoly (which Microsoft did according to the author of the post).

<comment><USER22> It would have been very interesting if things could have worked out where OEMs refused to pay that MS tax and instead provided instructions on how to purchase and install your own operating system separately.

<comment><USER5> I remember that some OEMs (including one or two major ones) had started to go this direction, offering "naked" PCs without an OS at all.

Microsoft's response was to demonize the practice as encouraging piracy. Their argument was that obviously nobody wants a computer without Windows, so people buying them that way were clearly intending to install a pirated copy.

</comment></comment></comment></comment><comment><USER23> Why should I care? The community (both drive-by and commercial members) is extremely productive, and together we make it useful at work and at home, and that's good enough.

</comment><comment><USER24> Linux is not a desktop operating system as it lacks the integration that made both MacOS and Windows excellent desktop OSes. The LUG guys think whatever they want, but for a p50 user Linux is not even an option.

</comment><comment><USER17> This is a comforting lie Linux Desktop evangelists tell themselves because they can't accept that they've failed to build a good product for over 20 years now.

Here's just one example: to this day, it is still difficult to install software that wasn't specifically compiled and carefully packaged for your distro. Software compiled just 2 years ago often won't work _on the same distro_ today. It's insane. And the OS is full of things like that.

<comment><USER3> > Software compiled just 2 years ago often won't work on the same distro > today. It's insane. And the OS is full of things like that.

That's equally true for Windows, and there is no OS called Linux, you don't have to be an evangelist to know that

<comment><USER17> > That's equally true for Windows

No it isn't. People routinely run software that was compiled decades ago on Windows.

> and there is no OS called Linux

Maybe that's part of why it's so shit? You have a problem with it, and someone pops up and says to use a different distro (with it's own set of different problems) or condescendingly explains how "Linux is just a kernel" like anyone gives a fuck.

</comment></comment></comment><comment><USER25> I am not necessarily sure that only monopoly powers got Microsoft to where they are today.

Microsoft did a lot to cultivate their platform. They invested heavily in developer tools and APIs. Why do games use DirectX and not OpenGL? Better tools and better hardware support. Why do games only run on Windows? Because they use DirectX. Therefore, people buy Windows computers so that they can play games. Microsoft's investment in tooling paid for itself in sales right there. I imagine people also enjoyed Visual Studio (probably more in the past than now), good optimizing C/C++ compilers, and tools like that, as well. They had a platform, and they made it easy for you to use their platform. All that was engineering investment, not evil business practices. Though I'm sure that taking over the world was on their minds. What mattered was getting other people to help them, and that is something they succeeded at.

The other crucial thing that Windows did was allowing drivers to be shitty binary blobs. That is the best you can get out of most hardware companies. They make a million different products a year, and they don't have time to update their drivers when some kernel API changes. And, they stole a lot of IP from their competitors, so they can't release the source code and let the community do it for them. And, their customers probably never update to the latest version, so they'd have to maintain 100 different forks. But with Windows, you just make binary blob and it works for decades. Microsoft gives you an API, you program to that API, and Microsoft does the dirty work of keeping it working as they change Windows. (Linux doesn't have this, and that's why your Android phone only gets updates for like a month after it comes out.)

The Linux community says "drivers must be free", "only the highest quality is allowed", "software freedom is more important than having the latest features", and "we're sorry that you can't use patented algorithms without getting caught, join our fight against software patents!" The hardware manufacturers said NOPE to that. They don't make software, they don't invest in software engineering, and they'll do the bare minimum to sell their chips. Microsoft recognized this and made something that would work for them. The result is where we are today.

None of this is to discount Microsoft's questionable business practices. They certainly engaged in them. But I don't think they were as crucial to the success of Windows as the engineering investments they made. They had a stranglehold on the browser market for years and were even investigated by the government for it. Then someone came along and wrote a better web browser, and now nobody even knows what Internet Explorer is. Bundling it with Windows didn't matter; people use the built-in browser to download Chrome the instant the Windows installer exits.

</comment><comment><USER26> You can blame yourselves; the Mac was similarly disadvantaged, and yet clawed its way back and is 10x more popular than desktop Linux.

</comment><comment><USER27> It would be very easy for Linux to increase its market share: make it easy to run Android apps.

<comment><USER17> Make it easy to run applications period. Adopt something like AppImage, standardize on a base set of libraries that all applications can depend on. It isn't rocket science... which is exactly why the Linux Desktop complexity fetishists hate it. Come on y'all, let's invent a new package manager, maybe using ML and a blockchain!

</comment></comment><comment><USER28> The Linux desktop is still a clusterfuck today. Bill Gates doing bad stuff 20 years ago has nothing to do with it.

<comment><USER29> I recently had to set up Ubuntu 19.10 on a friend's laptop with a dead keyboard so had to use the on-screen keyboard. For some reason the keyboard wouldn't show up in the installer's text fields so no way to enter username, password, etc. It works everywhere else, but not in the installer, presumably because it's using the wrong toolkit out of the dozens of GUI toolkits available and the rest of the desktop doesn't recognise its text fields properly.

So unfortunately I still have to agree - how come the _built-in_ installer program not play ball with the _built-in_ accessibility features, and why wasn't this tested?

Logging in with the OSK also had a quirk - if you request the OSK on the login screen, common sense would suggest that you also want the OSK to persist once you're logged in... but no - once logged in you have to manually go in settings and enable it again. This is not a big deal, but just having someone think about the UX would've taken care of this.

Finally getting Netflix to work was annoying; Firefox is actually nice enough to let me know that the page requires DRM content and offered to enable it in one click without arguing about licenses or non-free software, but it still didn't work... after searching around it seems like I had to enable the non- free repo and install an extra "libavcodec" package. I figured it out, but I wouldn't blame a casual user if they gave up and said "Linux sucks".

<comment><USER23> > _after searching around it seems like I had to enable the non-free repo and > install an extra "libavcodec" package._

Isn't ffmpeg a basic dependency of Firefox? Can an Ubuntu user explain how it's possible to install Firefox without its dependencies?

<comment><USER29> It was _libavcodec-extra_ which I presume isn't a dependency, or otherwise the stock Ubuntu ships with broken dependencies out of the box but I'd find this extremely unlikely.

<comment><USER23> It's just so strange. H.264 decoders are free now, because Cisco buys a huge unlimited license for their good software decoder every year, maybe Firefox doesn't have the ability to link against that?

Shipping a web browser package without a functioning H.264 decoder, for most people, is like shipping a kernel without mouse drivers.

<comment><USER30> The terms of Cisco's patent license are tricky. Basically, you must use binaries built by Cisco. Even though the source is available, Cisco's license only extends to binaries they build. If you build the code, you are not covered by Cisco's MPEG/H.264 patent license.

Cisco also only builds a limited number of architectures and platforms.

All of these things make it difficult to depend on for open source projects like Firefox.</comment></comment></comment></comment></comment></comment>


Android app with a Ruby on Rails backend: a three parts complete tutorial - <AUTHOR> Hi HN, in the last months I wrote a complete tutorial that will guide through the coding of a Ruby on Rails backend with a Json API that can be consumed by an Android app.
It's divided in three parts:
Part one: the Ruby on Rails backend and the API -http://lucatironi.github.com/tutorial/2012/10/15/ruby_rails_android_app_authentication_devise_tutorial_part_one
Part two: register and login with the Android app - http://lucatironi.github.com/tutorial/2012/10/16/ruby_rails_android_app_authentication_devise_tutorial_part_two
Part three: task creation and update - http://lucatironi.github.com/tutorial/2012/12/07/ruby_rails_android_app_authentication_devise_tutorial_part_three
I covered topics such as the registration of a new user, his login and following authentication via a token, the retrieval of objects from the backend to the Android app through the Json API and many more.
I hope you can find it useful, let me know if I can improve it. <comment><AUTHOR> I put the links here to be clickable:

Part one: the Ruby on Rails backend and the API - [http://lucatironi.github.com/tutorial/2012/10/15/ruby_rails_...](http://lucatironi.github.com/tutorial/2012/10/15/ruby_rails_android_app_authentication_devise_tutorial_part_one)

Part two: register and login with the Android app - [http://lucatironi.github.com/tutorial/2012/10/16/ruby_rails_...](http://lucatironi.github.com/tutorial/2012/10/16/ruby_rails_android_app_authentication_devise_tutorial_part_two)

Part three: task creation and update - [http://lucatironi.github.com/tutorial/2012/12/07/ruby_rails_...](http://lucatironi.github.com/tutorial/2012/12/07/ruby_rails_android_app_authentication_devise_tutorial_part_three)</comment>


Hardest Organic Material Ever Designed by Scientists - <AUTHOR> http://news.discovery.com/tech/print-body-armor.html <comment><AUTHOR> Same story on engadget [http://www.engadget.com/2010/10/29/transparent- material-deve...](http://www.engadget.com/2010/10/29/transparent-material- developed-thats-twice-as-strong-as-kevlar/)</comment>


Entrepreneurs Defend a Tax Benefit Despite a Dubious Congress - <AUTHOR> http://www.nytimes.com/2007/09/21/business/21venture.html?ref=technology

<comment><USER2> With all due respect to VC;s.

I strongly disagree that VC's will stop putting money into new ideas. Can you imagine a Joe Shmoe VC putting a lesser amount of money into the Google Series B round ( when the company was worth 75m) because the tax rate was high. That is absurd. Many VC's have clauses in their contracts where they decide what their rate of return should be. In the event of higher taxes the greedy ones will simply increase the rate of return in their contracts.

</comment><comment><USER3> I strongly agree with VCs who are defending the move - in fact I suggest to give more tax benefits to new start-ups and liberal tax breaks to VCs for investing large capitals on new ventures this will increase the capital inflow, innovation, employment and enthusiasm for entrepreneurship.</comment>


Tips for nailing an iPhone app demo during a presentation - <AUTHOR> https://medium.com/what-i-learned-building/24a0aea749cc

<comment><USER2> I'd be curious why you'd recommend an AppleTV over a lightning-HDMI adapter. When we demo our iPad apps the direct connection is perfect. Spotty, shared wifi can hurt Airplay sometimes (and yes, it is awful that it uses a Wifi connection...)

<comment><USER3> Direct HDMI is higher resolution than the Apple TV's AirPlay, which is still capped at 720p. You can work around this by streaming to a computer directly plugged into the screen (e.g., a Mac Mini) running something like Air Server ([http://www.airserver.com/](http://www.airserver.com/)), which will allow a 1080p signal.

</comment></comment><comment><USER4> "Do Not Disturb" mode only mutes notifications while the iPhone's screen is locked. The text on the DnD settings page in iOS specifically says "When Do Not Disturb is enabled calls and alerts that arrive WHILE LOCKED will be silenced, and a moon icon will appear in the status bar" (emphasis mine)[1].

I've been bitten by this during a demo: I still received texts (from a co- worker) even though I had DnD enabled.

[1] [http://support.apple.com/kb/HT5463](http://support.apple.com/kb/HT5463)

<comment><USER4> A workaround using Guided Access can be found at[1]. This is not ideal, but it appears sufficient to prevent alerts etc during a presentation.

[1] [http://www.macworld.com/article/2025400/how-to- temporarily-m...](http://www.macworld.com/article/2025400/how-to-temporarily- mute-notifications-on-ios.html)

</comment></comment><comment><USER5> If you put the phone in airplane mode as the article suggests, I doubt AirPlay to the AppleTV would work because it needs the Wifi radio that would be turned off at that point.

<comment><AUTHOR> You're correct. Airplane Mode by default turns off Wi-Fi, but if you manually enable it, you can be in Airplane Mode and have Wi-Fi. This works well.

</comment></comment><comment><USER6> I wonder if the Apple TV hardware supports AirDrop/WiFi Direct (I know the software currently doesn't) so that you wouldn't even need to have the two devices on a WiFi network for them to see each other over AirPlay.

</comment><comment><USER7> I don't think using your personal phone as a presentation device is the best idea, you can avoid most of those issues by simply having another device to present your app on, a used iPhone, or even iPod will be very cheap to get, no one will see that hardware anyway.

This way you'll avoid the wallpaper, calls, browser history, airplane mode, etc.. it'll be basically always configured for presentation mode, and you can also use it for development and as a backup phone !, fuck me right ?! :D

</comment><comment><USER8> Clear your browser history, just in case.

<comment><AUTHOR> ha, that is a good one. didn't think of that, but also a good pre-caution!</comment></comment>


Show HN: RedditDigest, a simple tool to not browse Reddit all the time - <AUTHOR> https://github.com/mibzman/RedditDigest <comment><AUTHOR> This is a tool that I personally wanted for a long time. I'm considering turning this into an actual service, please let me know if this is something you would use if it actually had things like a UI.

<comment><USER2> I can't say that it is something that I would pay for, but I would gladly let you data mine my subreddits of interest to sell (anonymised) data to advertisers for it.</comment></comment>


New claim of "decoding" Voynich manuscript draws skepticism from scholars - <AUTHOR> https://arstechnica.com/science/2019/05/no-someone-hasnt-cracked-the-code-of-the-mysterious-voynich-manuscript/ <comment><USER2> It wasn't that long ago someone was claiming it was (surprisingly!) an old Hebrew dialect. So the skepticism is completely warranted until they present something fully "decoded" to demonstrate an actual translation of sentences and a coherent story, versus a few random words and surprising name connections.

Either way, they have a global audience. It'll be super interesting if they are right.

</comment><comment><USER3> I thought it was strange that none of the press on this story had anything to say about _what the text means._ If you've "decoded" something, shouldn't you be able to provide an English transcript? Why bury the lede?</comment>


Any Updates for YC winter 2013?  - <AUTHOR>

Does every applicant gets an email with their results ? <comment><USER2> Just a note- I believe YC specifically asks that you don't broadcast that you are in the running. As such, you probably won't see many affirmative comments from people who were asked to interview.

</comment><comment><USER3> Yes every applicant gets an email telling you whether you get in or not.

<comment><USER4> care to elaborate and share with the group?

<comment><USER3> Edited my comment. I was answering his question about everyone getting an email.

</comment></comment></comment><comment><USER5> Trevor Blackwell Updated on Quora "We'll email out interview requests later today (Nov 15). People not invited to interview will also get an email."

[http://www.quora.com/Y-Combinator/What-time-will-Y- Combinato...](http://www.quora.com/Y-Combinator/What-time-will-Y-Combinator- announce-the-results-for-Winter-2013-applications-on-15th-November)

</comment><comment><AUTHOR> We really are waiting for the results. Though we are confident about our application, and we know our video was viewed, but still there is a little curiosity that makes us feel uneasy.

Best of Luck to all, #fingersCrossed.

<comment><USER5> Can I ask How many views did you guys get. We had something like 3 or 4 views.

<comment><AUTHOR> Thats Great man, we had i believe 2 views

</comment></comment></comment><comment><USER6> It is helpful to check in with anything PG has said every now and then.

<http://news.ycombinator.com/threads?id=pg>

</comment><comment><USER7> I haven't gotten anything yet, but since YC is on pacific time, perhaps everyone is just getting up.

Good luck,

Jenny

</comment><comment><USER4> last year I got the email at 7pm EST

</comment><comment><USER8> Judging by the last cycles, all the emails seem to go out after 7PM Pacific so don't worry too much about hitting that refresh button throughout the day.</comment>


Ask HN: User dependent salting? Is this good enough? - <AUTHOR>

I've been using this password scheme for a while now, and I'm looking for thoughts.<p>salted_password(login,password) = sha1("some fixed text" + login + "/" + password + "some more salt"). <comment> mark-r Disclaimer: I've never done an industrial-class password hash, but the salts you show match my understanding of good practice. Coincidentally this was posted on HN today, and it takes issue with the hashing method rather than the salt: <http://codahale.com/how-to-safely-store-a-password/></comment>