Google scored points with its community by supporting Kotlin - <AUTHOR> https://backchannel.com/the-language-that-stole-android-developers-hearts-807fdbf07c2a <comment><USER3> Kotlin is exactly what Google needed to light a fire under Oracle's ass. They've been dragging their feet on new Java features for years. That, and the constant threat of Oracle closing Java back up as they're doing to MySQL.

The backlash against jigsaw may turn out to be justified. "Modularizing" the JVM would be exactly what you would expect as a first step to making some parts proprietary. If Oracle can wall off parts of the JVM completely they can claim GPL exemption for these parts and start closed source development of "enterprise" level features.

Kotlin will do a lot to derail attempts to make Java proprietary. Since it works fine on Java6 JVM's it sends a strong signal to Oracle that "we don't need you, if you piss us off we'll just fork the language".

<comment><USER4> Why not code generate to LLVM which is superior to JVM. Why not make a JVM to LLVM converter as well as a JAVA to LLVM?

<comment><USER5> > LLVM which is superior to JVM

Link? Superior in what way? Is there any LLVM based JVM implementation that runs faster than the current JVM android is using and no compatibility issue?

When I see those claims without any actual code, I would stay suspicious and call it farce, until it proves itself.

<comment><USER6> "Link? Superior in what way? Is there any LLVM based JVM implementation that runs faster than the current JVM android is using and no compatibility issue? "

Yes. Azul uses LLVM as its last tier JIT compiler now :)

I don't think anyone is going to argue they don't have the fastest JVM around.

See [http://www.infoworld.com/article/3193078/java/azul- introduce...](http://www.infoworld.com/article/3193078/java/azul-introduces- llvm-compiler-to-java-runtime.html)

The performance numbers they give are: " Falcon bests Oracle's HotSpot Java platform by anywhere from 5 to 250 percent in production performance, depending on the application, according to Azul. "

<comment><USER5> And you forget to quote: > Based on the LLVM compiler platform, designed for server workloads, and optimized for recent Intel and AMD architectures

Server and mobile application have vastly different assumption of workload and metrics to take a look at. However, this announcement definitely better than OP's vague performance claim, which I agree. But as I said, there is no proof at this point, that LLVM based implementation on _Android_ improve the the performance.

Quite on the contrary, Google include LLVM in 5.0 then remove it later: [https://www.quora.com/What-are-the-technical-details-of- the-...](https://www.quora.com/What-are-the-technical-details-of-the-Android- ART-runtime-introduced-in-Android-4-4/answers/10044855?srid=XwOv)

And it was never used as the primary option anyway. So there is definitely not enough confidence to claim the superiority, until somehow _make_ it work in the first place.

</comment></comment></comment></comment></comment><comment><USER7> TL;DR -- because developers love it. I clicked the article hoping there was some strategic background, some connection to the Oracle lawsuit, etc. Nop, the answer to "why" is "because of its merits". Also in this article, some backstory about the name "Kotlin".

<comment><USER8> I wonder if the hn gods will change the title from "Why supporting Kotlin is genius move for Android" to something less sensationalist. Maybe not, as it's being posted by Steven Levy himself.

<comment><USER9> They will likely change it to what the article's title is.

</comment></comment></comment><comment><USER10> The language is indeed very nice but really key things that make it so nice are also:

1\. The IDE support (without it, it would be somewhat more painful)

2\. The fact JetBrains have built a really great new syntax and still have it compile down to regular java bytecode - and bytecode that isn't a total nightmare (I'm looking at you Scala!)

3\. JetBrains use it themselves for their own suite of commercial products (mostly code editors) - this made me feel like it was less likely to become a toy language.

4\. The fact that coming from Java it is absolutely painless - <USER2> syntax, automatic code conversion that works well for the most part, and full interop with Java.

<comment><USER11> Can you say more about what you dislike about compiled Scala?

<comment><USER10> In order to implement all the Scala language magic the generated byte code is sometimes far away from what the equivalent Java code byte code would look like.

This isn't a problem for most people but it is an issue for anyone who uses stuff like byte code instrumentation - take a look at this issue for example: [https://github.com/puniverse/quasar/issues/45](https://github.com/puniverse/quasar/issues/45)

It's not a criticism of Scala (the language is just a LOT richer so has to cater for more sophistication).

But the difference matters to me which is why I prefer Kotlin over Scala and I'm prepared to miss out on some of that sweet Scala magic.

</comment></comment></comment><comment><USER12> > In the early 1700s, Peter the Great, the czar of Russia, was busy nabbing > land from his western neighbor, the Swedish Empire. He seized the tip of the > Gulf of Finland, and began building his beloved city of Saint Petersburg > there. He also secured a small island just off its coast as a naval defense: > Kotlin.

> Peter couldn't have known that more than three centuries and 5,500 miles > removed...

However, if you are from eastern Europe, chances are you've ran into large brand of tomato products known by same name:

[https://maspex.com/files/pl/news_spotlight/file_57502ce3e538...](https://maspex.com/files/pl/news_spotlight/file_57502ce3e53816450428143.jpg)

;)

</comment><comment><USER5> Exactly this. So tired of these self-entitled feeling-smart conspiracist unnecessary interpolation of unrelated events, e.g. Oracle lawsuit, Google's agenda blahblah.

Kotlin is already popular in Android dev crowd. That is the one and foremost factor that why Google _would_ support it. Because there is already a community and a robust toolchain(Thanks to Jetbrain) over there. It is a low- hanging effort for Google to claim by simply signaling a gesture with very little to commit really.

</comment><comment><USER13> Kotlin is already quite popular in the Android community. I would actually point out that it is the engineers at Square (like Jake Wharton) that gave Kotlin it's early legitimacy.

The Google announcement excites me for reasons beyond Android - I'm hoping that Google's huge investments in machine learning, play off along with the amount of investment it is going to do in Kotlin.

I would love to see a whole bunch of server side infrastructural components built out in Kotlin ... including things like Tensorflow, Spark, etc

More than Oracle, I think this is pretty much the death knell for Scala. When you have a far more pleasant language, with IDE integration that is mind blowing, and is supported by one of the largest companies in the world ... And probably is ALREADY MUCH MUCH more popular than Scala at this point

<comment><USER14> We'll see how Kotlin looks when it's as old as Scala is. They haven't yet had to make substantial changes while keeping compatibility with existing codebases; that's hard for any language and much harder for a language that throws in a lot of ad-hoc special-case features at the language level (which Kotlin does a lot more than Scala, despite how it might superficially seem).

<comment><USER15> Kotlin is heavily used internally at JetBrains for development of their IDEs. For years now - those aren't small or easy projects.

<comment><USER14> Just as with a library, evolving a language that's used internally is very different from evolving one that's used publicly by third parties.

</comment></comment></comment></comment><comment><USER16> You know, I gotta admit, as someone who rather likes Kotlin, even I'm getting a little exhausted with all the breathless Kotlin articles...

<comment><USER17> Is it really that great? Seems like Swift for the JVM. Sure it's great, but there are a lot of similar things out there.

<comment><USER18> Fun fact, swift took some of its early inspiration from kotlin.

<comment><USER19> Source? The Swift project's initial commit[1] was 6 months before Kotlin's initial commit[2], so I fail to see how something started six months earlier could have taken its early inspiration from a language that didn't exist yet.

[1] [https://github.com/apple/swift/commit/18844bc65229786b96b89a...](https://github.com/apple/swift/commit/18844bc65229786b96b89a9fc7739c0fc897905e)

[2] [https://github.com/JetBrains/kotlin/commit/3e4dce385331c91c9...](https://github.com/JetBrains/kotlin/commit/3e4dce385331c91c9059fcdcea3eae2394f34942)

<comment><USER20> Jetbrains unveiled Kotlin in 2011, it had been under development for a year at that time. Swift was introduced at Apple's 2014 Worldwide Developers Conference.

That's what I get at wikipedia for each language.

</comment></comment></comment></comment></comment><comment><USER21> I'm glad to see Kotlin support (would love Python support but you can't win them all)

The Android APIs are still a major problem for me. In web front-ends we've basically gone full FRP and I'm sitting here with my resource files and 10 line invocations to make a notification.

This is partly because it's necessary for Java, but I'd love to see a first party API that tries out something a bit more fluent

<comment><USER22> It's not necessary for Java, the Android APIs are just horribly written, and the notification is a lot more involved than you'd think because it ties into how the OOM treats your app and the intent system

<comment><USER21> I think I get why the notification stuff is so complicated (there's a lot of stuff going on, after all!)

It always feels like Android shipped with the low-level API but forgot to provider a higher-level API for the 95% case

</comment></comment></comment><comment><USER23> Actual title "The Language that Stole Android Developers' Hearts"

</comment><comment><USER24> The way I see it - the fact that alternative JVM languages are so underused is a damn shame. And if it becomes more acceptable to not use Java, then all such languages will benefit. For many reasons Kotlin is better as a champion of such a change.

</comment><comment><USER25> Probably a silly question, but since Android is OSS, what specifically prevents parties other than Google from adding "first class" language support?

Does Google not accept (major) external contributions to the build toolchains? Is it the official documentation that's getting rewritten for Kotlin? Or is Google releasing Kotlin-ified wrappers for the Android APIs? Maybe I don't fully understand what new privileges Kotlin is getting.

<comment><USER26> Kotlin is getting Google's blessing. Mentioned in Google's Android development docs and tutorials. That's the magic sauce. Since Kotlin is veeery close to Java, it was already working well on Android. It targets the JVM of Java6, so if you compile your Kotlin android app, it looks like a regular thing compiled from Android Studio. Regular bytecode, that then gets recompiled by dx (dalvik compiler into .dex bytecode - see also [https://softwareengineering.stackexchange.com/questions/2852...](https://softwareengineering.stackexchange.com/questions/285235/is- art-an-installation-process-or-an-os-or-a-virtual-machine) )

And yes, adding new things to Android is ... problematic, because Google doesn't accept pull requests. (It accepts bug reports, and sometimes patches of bugs.) And of course you can propose a big patch adding [see [https://source.android.com/source/life-of-a- patch](https://source.android.com/source/life-of-a-patch) ] .. let's say Swift to the Android Platform, but the project owners are Google employees, and the community cannot really influence what gets accepted. [ [https://source.android.com/source/roles](https://source.android.com/source/roles) ]

<comment><USER25> Got it. It's a shame that Google has been moving Android in a more proprietary direction.

Are there any notable Android forks that are more progressive about supporting new languages? If so, is their market share consequential?

<comment><USER26> [https://en.wikipedia.org/wiki/List_of_custom_Android_firmwar...](https://en.wikipedia.org/wiki/List_of_custom_Android_firmware)

Replicant is the most "open".

Also, it's not hard to package all the stuff a language needs and put it into an APK. It's just messy and there are a lot of "edge cases" and things to work out (like the problem of interacting with the Platform, you'd need to call into a "Java" interface from your language, you'd need to run your app inside ART/Dalvik, maybe fork - [https://stackoverflow.com/questions/39006044/repeatedly- fork...](https://stackoverflow.com/questions/39006044/repeatedly-fork-android- app-process-where-child-can-access-system-services-via) ).

And so if you spend half a year just getting something to run, and on the next Android version Google makes a change, and bamm, you might get left in the cold, because security or whatever.

</comment></comment></comment></comment><comment><USER27> Why is Kotlin a better language for Android dev?

Won't the platform APIs designed for Java look and feel very non-idiomatic in Kotlin?

<comment><USER28> No. Kotlin is designed with Java interoperability in mind; it is the language design top priority (unlike e.g. Scala and Clojure).

<comment><USER29> As far as I've experienced, Scala has excellent interop with Java. What do you find lacking?

<comment><USER17> Kotlin is far simpler than Scala which has a big emphasis on functional programming and OO, so not going to be super popular soon. It's also behind Kotlin in good ide support. Clojure is simpler, but mainly focuses on functional programming and is a lisp as well, so will also not be a great candidate for the masses.

<comment><USER30> Functional programming has surged strongly in popularity these last couple of years.

As pointed out, other JVM languages also have "Java interoperability" as top priority. Clojure does.

Clojure is getting popular lately, why isn't a "great candidate for the masses"? Because it is a Lisp? During most of the 1980s, the #1 programming language to teach children how to program was LOGO, which is basically Lisp in disguise...

<comment><USER17> If something doesn't have algol syntax, it generally doesn't do well with the masses. Look at where Common Lisp & Clojure sit on the TIOBE list(do they even break the top 20?) FP is picking up some steam, but I fear lisp never will especially with such fragmentation of language and vendor. I'm not really familiar with Logo, but it doesn't sound like it had parenthesis or brackets like Rebol (something to make it homoiconic), and since it is not in use anymore...that might be proving my point.

<comment><USER31> I posit, without proof, that Algol has Algol syntax.

Where is Algol on TIOBE?

<comment><USER17> C, C#, C++, Java, & JS could be said to have a derivative of Algol syntax. That covers probably 90% of all software being actively written in the world.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER32> I'm sure Kotlin is a good language but as a developer with a big codebase I find it difficult to migrate my Java code to Kotlin or mix both languages in the same project. I think I will be confused all the time!

If I would be starting with the platform now I'd start with it but now I dont see any reason!

<comment><USER33> It looks to me like Kotlin is enough like enhanced Java that it's pretty painless to extend an existing Java codebase with it. IntelliJ even has automatic translation of Java source files to Kotlin, though I'm sure there are edge cases where that doesn't go well. The benefit is not having to write Java anymore. If you don't mind writing Java then I think you might benefit from exposure to a wider variety of languages.

As for getting confused between languages, most of us work in heterogeneous environments these days, even if it's just something like using Python server- side and Javascript client-side. I don't find confusion over the languages to be a significant difficulty there and I don't think it would be with a mixed Java/Kotlin project.

</comment></comment><comment><USER34> Now more I think about It is genius move by Google. With this low effort work Google generated lot of buzz. Android remain same. Tooling and language is developed by Jetbrains for Kotlin. If Kotlin brings in new developer to Android, great for Google, if not, dependable Java is always there.

</comment><comment><USER35> dude, wheres my dart/go android support?

<comment><USER36> When they have a repl maybe they can be considered.

<comment><USER37> pub global activate dart_repl

pub global run dart_repl

And I'm sure Go has a repl too.

</comment></comment></comment><comment><USER38> So how is Kotlin's interop with native code? I heard it was still pretty bad with Java despite some updates in that department. Swift can handle some API's but for real interop you can go back to Objective-C(++) wrappers with zero penalty.

<comment><USER39> You mean Kotlin <-> Java or Kotlin <-> C?

Kotlin Native (Kotlin <-> C & Objective C) _just_ came out this month, is still a technology preview, and AFAIK is really rough around the edges. Haven't tried it.

Kotlin has always had a very good Java interop story, in both directions. I've been using it for a year with Hadoop, AWS, JSoup, Rome, Jackson, DropWizard, Jetty, Apache Commons, ElasticSearch, Weka, and many other standard Java libraries and never had a problem. You basically drop in a library and go. Several of those libraries are either really old (eg. Weka was written in the last millenium) or pretty complex (Jackson is all annotation/reflection based), and I've never really had a problem. You do need to keep track of nulls yourself when crossing the Java boundary, and you need to understand what code Kotlin generates if you're implementing an interface or placing annotations, but both of those are well-documented and pretty typical tasks for any FFI work.

<comment><USER40> Did you choose to work with the JVM since leaving G?

<comment><USER39> Yeah, for this project at least. I've found that my choice of technology stack is largely dictated by a.) the libraries that are available and b.) the potential market I'm investigating. It's in Kotlin because I need Hadoop for at least part of the project, and one corpus I'm working with has a bunch of supporting tools in Java that aren't available on other platforms.

I'd been doing a bunch with smartwatches a year or two back, so the project before this was in Swift (because when I talked to potential customers & looked at market share numbers, starting with anything other than the Apple Watch was indefensible), and two projects before then were in Java (because the Apple Watch wasn't out yet and Android Wear & Pebble were the only games in town). There were also a couple ideas that I'd tested out using just WordPress and YouTube, with no coding at all.

</comment></comment></comment></comment><comment><USER41> I wonder if Kotlin could compile to Dalvik bytecode in the future? It might be pointless with Java, because Oracle owns Java compiler and maintaining separate fork might prove hard to do. But with Kotlin it should be somewhat easier. I've heard that the whole Android development is very slow because of those intermediate steps.

Also it might help to develop or improve live update features. If I'm developing server applications, I'm usually using JRebel which allows live reloads of bytecode and that's tremendous productivity gain. Same with React Native. I'm not sure about pure Android development.

<comment><USER42> Google already tried compiling Java source code directly to Dalvik bytecode (the "Jack" compiler) but they recently abandoned that approach in favour of improving the regular Java-bytecode-based toolchain. Perhaps because of the new focus on Kotlin?

The Android toolchain used to be horrendously slow but has gotten a lot better since they switched from Eclipse and Ant to IntelliJ and Gradle – assuming you have enough RAM to dedicate a few GB to the persistent Gradle process. It now has incremental compilation (of Kotlin and Java), incremental dexing (i.e. converting the compiled Java bytecode to Dalvik bytecode) and incremental reloading ("Instant Run"). And the emulator can run the x86 version of Android nowadays, so it's no longer slowed down by emulating ARM. It's pretty nice.

</comment></comment><comment><USER43> How is Kotlin compile speed relative to Scala? I imagine a little faster, anyone have experience on mid-size projects?

<comment><USER44> Seems to be about the same as Java. The main source of slowness when compiling is, as always, Gradle and not the compilation itself. Kotlin doesn't fix that.

<comment><USER43> Java-level compile speed sounds amazing. My build system experience is with sbt, which is mostly slow on startup because it checks the versions of every library, every time. The rest of the slowness is from the Scala compiler. A fast Kotlin compile plus a fast command-line build resolution would be a killer combo.

</comment></comment></comment><comment><USER24> BTW for those who say that Scala interop with Java is as easy, can you demonstrate how to use this from Java?

[https://github.com/tumblr/colossus](https://github.com/tumblr/colossus)

<comment><USER45> I think the claim there is more like "you can already use the huge amount libraries/your existing code with Java and, with care, you can make your Scala code work the other way" than "interop is seamless back and forth."

<comment><USER24> Well Kotlin does indeed claim that interop is seamless back and forth AFAIK.

<comment><USER45> Which is neat, but unless you are a library designer it's probably not that much of a selling point.

<comment><USER24> Major selling point is the ability to mix Kotlin and Java freely.

I just find it funny how Scala guys are saying "me too" at every opportunity. But that always comes with an asterisk, if you look closely.

IDE support is as good, Java interop is as good, etc.

<comment><USER45> Sorry, I didn't realize you were personally invested.

<comment><USER24> Well I like and use Kotlin, that's the extent of it. Scala is a non-starter for me.

<comment><USER45> How come? I started using it because my company did and I've found it pretty good, overall.

<comment><USER24> I started using Kotlin because the author of MapDB did

[https://github.com/jankotek/mapdb](https://github.com/jankotek/mapdb)

Scala was around for a long time, perhaps if I could look at it with fresh eyes now I would consider it, but somehow I always had a feeling that Scala isn't for me. And now as Kotlin gaining momentum I'd rather stick with Kotlin.

I want first class IDE support and straightforwardness in my workhorse languages. For hobby languages I'd rather play with something like Red or Perl 6.

<comment><USER45> I haven't tried Kotlin but Scala works with IntelliJ pretty well. I'd say it's pretty comparable to VS/R# with C#.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER46> alright, wtf is kotlin, why is it suddenly such a big deal, and how big of a deal is it?

edit: so i checked this out myself. i have no idea why this is a big deal. another app language? i thought reactnative was all the jazz?

<comment><USER47> Judging by your downvotes I guess it is just Google PR out in full force the last couple of days.

<comment><USER48> It's jetbrains' PR now added with Google.

Google employees can destroy any post on reddit. Jetbrains copied that model. Anything about Jetbrains will have tons of artificial posts at the top, their crew upvoting it.

It's useless this sort of thing is killing social media completely.

WTF is kotlin and why would anyone in their right minds use a language from a text editor company. Beats me.

</comment></comment></comment><comment><USER49> To summarize, is genius because it keeps devs happy. It's an apple move

<comment><USER50> Apple keeps users happy, not devs. Just take a look at Xcode.

</comment></comment><comment><USER51> When I see quotes like "Oh my God this is awesome" my sensors go to red flag mode full-time.

Devs are people like everybody else and can be hyped.

Let's give it time. Not sure what's the big fuss about. Yes I've read about GUI toolkits that reduce the development time. This still doesn't mean much IMO. The business owners will simply become more greedy and will demand more work for less money.

I really don't see how the devs will win.

</comment><comment><USER52> My question, which I also posted as Ask HN, was that why not Scala?

<comment><USER53> Because Scala doesn't give a !@#$ about backwards-compatibility. It's too unstable for huge project as Android.

</comment></comment><comment><USER54> Not sure if swooned is the right word.

</comment><comment><USER55> Such a misleading title!

</comment><comment><USER56> Genius is a strong word here

</comment><comment><USER57> Android will eventually adopt Swift. It is not a matter of "if" but "when". Who knows 5 year from now, you all will be coding in Swift (for servers, iOS and Android).

<comment><USER58> Can you list arguments why do you believe this to be likely?

Interoperability of Swift with the existing APIs and JVM is not impossible, but it is a significant barrier that needs to be overcome and needs very, very significant advantages to justify that.

<comment><USER57> Watch: [https://news.realm.io/news/tryswift-chris-robert-end-to- end-...](https://news.realm.io/news/tryswift-chris-robert-end-to-end- application-development-swift-backend/)

<comment><USER59> IMO, kotlin makes a much better candidate to be "the" cross platform language for server / client since it supports typescript as a first class citizen, and a native target is coming.

You could use the same arguments in the article you posted to posit that everyone will be developing on a Mac.

It's not very convincing to me.

</comment></comment></comment></comment><comment><USER60> > Standing on stage on Wednesday morning at Google I/O, > Android PM Director > Stephanie Saad Cuthbertson broke the > news that Kotlin, which was first > released in 2012, is now > officially supported as a "first class" language > for > Android... > developers whooped freely when told that they no longer > had > to worry that Kotlin fever was just a phase, to be > abandoned like > dozens of other cult favorites before it.

Nothing that google says about Kotlin could _possibly_ mean that it's not a phase, to be abandoned like other cult favorites before it. Is Kotlin more official than Wave? Reader? Fiber? Loon? Boston Dynamics? Picasa? Titan? Glass? Google+? Labs? Gears? Code Search? Health? Knol? Orkut? Answers? Deskbar? Page Creator? Sites?

Google has the right to stop supporting whatever they want, but there is a hard-to-measure cost in developer trust (and goodwill).

edit: formatting

<comment><USER61> You make it sound like Google is the only company to EOL underperforming products and services. How many products and services has Apple or Microsoft abandoned or shut down during their span? I'm guessing that list is very long.

<comment><USER62> They have the right to EOL what they want; but OP is still right to warn about it based on Google's history of EOLing stuff that has been liked by the community.

> How many products and services has Apple or Microsoft abandoned or shut down > during their span?

Microsoft is the best example for commitment to API compatibility over decades, i.e. the polar opposite of Google.</comment></comment></comment>


How Video Games Changed Popular Music - <AUTHOR> http://www.newyorker.com/culture/cultural-comment/how-video-games-changed-popular-music <comment><USER2> The article goes from adoration of few particular video game composers/engineers (not undeserved one, mind you), to presenting few tidbits that attempt to show very tentative link to pop music and blowing it up to "changed popular music" doesn't do justice to either creative genres.

One just needs to listen to few Japanese synthpop bands from the 70s like P-Model or Yellow Magic Orchestra to see which direction stream of influence was flowing back then. I'm pressed very hard to believe that bleeps and blops of the 70s arcade cabinets impressed any musician, when you had much more powerful tools to do synthesis far more advanced and relatively inexpensive. After its peak in the late 80s, as far as pop music was concerned, synth went in sort of hiatus, to come back slowly in last decade or less, and still, bleeps and blops are just a single drawer in an immense cabinet of instruments employed.

I admit not to play too many games recently, but from what I've seen in AAA titles, it's dominated with bland orchestral ambientals. There's still no adaptive phrasing, AI composition, and really no intelligence behind it all. The medium holds immense potential, but I'm still waiting for it to unlock itself. We had serialism (though I don't enjoy it myself) almost 100 years ago. What's the hold-up?

I hope this doesn't fall under _gratuitous negativity_. I just don't see it.

<comment><USER3> > I admit not to play too many games recently, but from what I've seen in AAA > titles, it's dominated with bland orchestral ambientals.

Not all AAA titles are remarkable for their music, and there's a lot of good music to be found in more independent titles.

I'll admit to being a sucker for a good orchestra, though.

> There's still no adaptive phrasing

While far fewer games use it than ought to, that's been around for quite a long time. Take a look at Wind Waker, released in 2002/2003.

<comment><USER4> Lucasarts's iMUSE system too: [http://www.1up.com/features/imuse-secret- organic-music](http://www.1up.com/features/imuse-secret-organic-music)

</comment></comment></comment><comment><USER5> The influence on UK urban music particularly cannot be doubted. Check out this mix: [https://soundcloud.com/kodenine/kode9-sinogrime- minimix-2005](https://soundcloud.com/kodenine/kode9-sinogrime-minimix-2005)

Especially the tune that comes in just after 6 minutes, and the one which follows it at around 8:30. They could be straight out of a (S)NES game, as could much of grime records from those days. While its now coveted by hipsters/nerds, at the time it was ghetto music. There's still nothing like it out there which has the same effect.

EDIT: heres another couple. these could be straight from the secret of mana soundtrack or something:

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

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

as a bonus heres that first one in its natural habitat, with vocals :) [https://www.youtube.com/watch?v=xQra9nENdzA](https://www.youtube.com/watch?v=xQra9nENdzA)

One of the MCs in that clip is now a chart-topping pop star.

This one actually reached number 31 in the charts itself, and I'm pretty sure some of the percussion is actually sampled from a gameboy:

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

</comment><comment><USER6> While the article focuses on older videogame music, I think more recent examples show the complex relationship between mainstream popular music and videogames. Artists like Austin Wintory (composer for TGC's Journey and Monaco), Darren Korb (Bastion, Transistor), and Michael McCann (Deus Ex: Human Revolution) have created music that would not be out of place on the radio, but create a distinct ambience and mood intended to enhance a setting rather than make the music itself the primary focus.

Because it can be so entertaining without being too distracting, videogame soundtracks are primarily what I listen to while I'm writing code.

<comment><USER7> I love Deus Ex: Human Revolution theme song.

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

<comment><USER6> I'm looking forward to more from the new Mankind Divided game!

</comment></comment></comment><comment><USER8> Strange to write an article like this without mentioning the SID chip (though I suppose SID chip-inspired music is more of an underground phenomenon, with less influence on popular culture.)

<comment><USER9> Especially to omit things like the several appropriations of SID tunes by popular musicians; Kernkraft 400 by Zombie Nation might be the most successful example, but there were a few scandals around pop artists sampling tunes from the demo scene, too, as I recall.

</comment></comment><comment><USER10> There's a pretty awesome documentary series 'Diggin' in the Carts' done by Red Bull that traces the impact of 8 and 16 bit era music.

From the youtube channel: [https://www.youtube.com/playlist?list=PLtbJmr1WtatcUO5smuoPD...](https://www.youtube.com/playlist?list=PLtbJmr1WtatcUO5smuoPDUEATfYZ1V6mt) "Diggin' in the Carts" is the untold story of the men and women behind the most globally influential music to come out of Japan. This six-part documentary series will delve into the history of 8-bit and 16-bit music, and the impact it has left in the world of video games and music."

</comment><comment><USER11> Not a whole lot of supporting evidence for how it "changed popular music", rather it just becoming more sophisticated as time went on by the technology allowing for more complex structures and bringing in well-known artists. Video game music is still very much a niche genre, regardless of how complex it is. Surprised Michael Jackson wasn't mentioned for his helping out with the Sonic 3 soundtrack, probably one of the greatest from the 16 bit era.</comment>


Secret Atari ST video mode discovered – 33 years later - <AUTHOR> http://www.atari-forum.com/viewtopic.php?f=15&t=34108 <comment><AUTHOR> What's amazing about this hack is it's literally two lines of assembly

In TFA:

MOVE.B #2, $FF8260 ' Switch both GLUE and Shifter to mono

MOVE.B #0, $FF8261 ' Switch Shifer back to low-res

</comment><comment><USER2> I always love seeing people discover new things about old computers. It's always fascinating the kinds of things people can get them to do. Especially ones like this without any modern day hardware mods. Just some clever programming.</comment>


Is a Dataframe Just a Table? (2019) [pdf] - <AUTHOR> https://plateau-workshop.org/assets/papers-2019/10.pdf <comment><USER3> > _Having many different ways to express the same logic makes it hard for > developers to understand programs of heterogeneous styles. Besides having > varying ways to express the same simple logic, the sheer number of APIs ( > > 200) that are not only overloaded but also have default parameters that may > change version to version, making it hard to remember the APIs._

It's a bit tangential to the main point, but I do agree with this remark. I have always found Pandas uncomfortable to work with. I'm never sure if I'm doing things in the most efficient/idiomatic way and I've found it hard to be consistent over time, especially since I've picked up different bits of code from different places.

I've gotten a lot more efficiency out of R, especially the data.table package.

<comment><USER4> I just finished a lengthy analysis of why pandas groupby operations ends up harder to use than R's dplyr or data.table.

For example, a grouped filter is very cumbersome in pandas.

Interested to hear if you think it gets at the heart of the problem.

[https://mchow.com/posts/2020-02-11-dplyr-in- python/](https://mchow.com/posts/2020-02-11-dplyr-in-python/)

<comment><USER5> > result length dependent operations: to calculate a mean in this case we have > to pass the string "mean" to transform. This tells pandas that the result > should be the same length as the original data.

        g_students.score.mean()

has the same length as using `g_students.score.transform('mean')` but the result has different values!

I think that is a great point to add to you very interesting article. I wouldn't know which of the two operations is correct to use, and I would not notice anything wrong, or odd with either method in a code review, so this is ripe for adding wrong results in a production environment.

</comment></comment></comment><comment><USER6> Tables and data frames are both leaves in the far more fundamental flow that beginners don't pick up because it is too simple - the relational model of data. The real problem is the the basic normal forms are so obvious and simple it is difficult to tell if people designed around them on purpose or stumbled onto the right path.

I suspect the distinction between tables and data frames (and arguing about query languages) is from people who have lost sight of the important things when dealing with data - the relational model and a system that supports relational algebra. Beyond that, features and optimisations need to be justified in terms of today's (and tomorrow's) needs which are specific to the data. The only major issue with SQL is a lack of support for something like R's tidyverse gather() and spread() operations which could be considered as missing operations in relational algebra.

<comment><USER7> I think one limitation of what you're saying is that you need to process the data before they become relational model. You need to integrate and normalize, and therefore, at some point, you need to support datasets that are not in normal form. Or perhaps you don't even need to normalize.

But I also agree with you. I think we are teaching programming wrong, we start with imperative programming, but perhaps we should start with data modelling. How the data look like? What are the constraints? Can we test the constraints? How many bits I need to store it?

"Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won't usually need your flowcharts; they'll be obvious." \-- Fred Brooks

<comment><USER8> But that was exactly how programming was taught 30 years ago. Relational data modeling was your starting point. Then object orientation came along and we suffered the dreaded object relational impedance mismatch when we couldn't translate invoice header to invoice line-items in an object oriented way. Yet somehow the majority of development continued down this design philosophy, abstracting the data model further and further away (it was only heresy for a short while that data models were being _generated_ by tools of process models). Then NoSql. Then graphQL dragging the lamppost of software development further away from understanding data first.

The central design premise for relational data modeling was "if your model could potentially allow inconsistencies, assume the inconsistencies". Today that premise is easily brushed aside with "you'll never get anyone manipulating this table without going through this layer" or "we then group by these columns to show unique records to the user".

<comment><USER9> I think NoSQL is only as popular as it is because a lot engineers don't have a proper understanding of the relational model (which isn't hard to understand at all, it just seems to have fallen out of popularity). I certainly think there are completely valid use cases for denormalized datastores, but I don't think those use cases are what's driving their adoption. You can see this in how so many mongo/dynamo... apps end up just being semi-normalized, relational-ish databases.

I also think another reason is that relational database interfaces don't really fit in with the architecture people want to use these days. Products like dynamo have secure and operable HTTP interfaces and SDKs that fit in really nicely with the 'serverless' stuff. To run a relational database you pretty much need to run a network, which isn't particularly compatible with such architectures.

<comment><USER10> I think a factor in this is that NoSql databases have nice API's that programmers can use to setup tables, do simple queries etc, which makes it much easier to get started. For RDBMS's you have to muck around with connections and SQL, which is more powerful but requires much more ceremony. (Connection pooling, prepared statements etc)

The lack of understanding of the relational model is not the limiting factor in my experience, the developer experience is just much worse.

<comment><USER11> What you say is True, but can be solved by an ORM, though that adds an extra layer of complexity

<comment><USER12> It's not just ORM. Many NoSQL databases allow for real-time events (query subscriptions), a simple security model, built-in data versioning, built-in sharding. You rarely get any of that out-of-the-box for a traditional RDS.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> It is worse than a table.

Dataframe don't really have a clear boundary as what it can do or cant do. I see no problem why you can't shoehorn some control flow logic into it which makes it pretty much just an executor of arbitrary computation graph specified in DSL, which relies on however the developer decides to implement it.

I'd rather take SQL because I have a better understanding what it is doing.

<comment><USER14> Can you drop nans, parse strings to floats, apply arbitrary lambdas over a rolling window, take the cosine of those values, and plot a graph against time, in a single line of sane SQL?

Easy in Pandas.

Dataframes are not tables; tables are not dataframes. It's nearly as apples- to-bananas as comparing Python lists to C arrays.

<comment><USER15> everything you mentioned can be done easily through database schema. window functions work well in SQL. plots are easily done in any BI solution that hooks up to any database.

pandas is just poor man's SQL+BI. pandas stores everything in memory and has many limitations.

in SQL Server I can easily churn through terabyte sized database and get the data I need, because the schema is well designed with partitioned tables, clustered indexes and a well designed SQL takes less than a second to run against >1TB database. It even allows a team of more than 20 people to work with the same SQL and query it simultaneously.

i would love to see how you can analyze 1TB csv file, or a pile of 100 csv files totalling over 10TB where you have yet to discover the schema and how tables join together. and I am doing it with on a simple $700 workstation, not even using any hadoop nonsense

<comment><USER16> How about working with poorly designed schemas? I work with SQL-Server as well, dealing with legacy data designed around imperative t-sql programming. Our 'BI-Solution', SSRS, crawls on pretty simple queries, where 'hacks' need to be done, joining on same table, all kinds of dirty tricks...

I don't know... I honestly feel like 'BI-Solutions' are a poor-persons Python if you are doing anything more than simple dashboards. Something that can be done in 2 lines of code in a Notebook requires endless fiddling in an IDE, to produce something not easily reproducible.

Aside, I've no experience with Tableau or Power-BI, just know that Crystal Reports and SSRS which are pretty painful.

<comment><USER15> it's hard dealing with legacy stuff. One alternative I can propose - <USER2> your management and go get yourself a separate and latest SQL instance just for analytics. Easiest solution you can do is to install SQL Server Developer version which is free.

cherry pick what your need and ETL your data out of legacy systems into your warehouse and run something like tableau/looker/powerbi on top and you will be amazed how effective you can be

<comment><USER16> Agreed, but again, I ETL my data into a warehouse, as a developer (not a BI person), I'm reaching for spark, flink, or whatever to roll my analytics, and python/flask/d3 for building web dashboards.

Then, once you have 'insight' into your Data, you can easily 'do' something with it without the limitations of a tiered product.

</comment></comment></comment></comment></comment></comment><comment><USER7> > What should we make of it?

People are idiots! (I am sorry to say that, I don't really mean it, I empathize, everyone sometimes is.)

Yes, dataframe is pretty much just a table. (And yes, GraphQL is a poor reinvention of SQL.) However, to be fair, there are different considerations. Database needs to know things like storage constraints and foreign keys (so you have many different column types), when you're doing just analytics (i.e. pandas), you pretty much only need two types - number and (trimmed) string (and sometimes a datetime, but that's just conveniently formatted number). (I think SAS got that right.)

Anyway, I think the way out of this mess is to have a functional, Haskell-like language for processing tables (not necessarily Turing complete) that would subsume declarativness of SQL, and that could be compiled into different targets. The language would basically specify some (limited, so recursion in that language would not be allowed) processing of tables (of known types), and you could then compose these processing pieces, or integrate them with custom processing in other language.

I understand why people hate SQL, it is on some level hard to write and compose. I think a correctly designed functional language would help here. Or maybe just tear LINQ out of the .NET ecosystem.

<comment><USER17> In the re-inventing SQL department, I'd take a look at EdgeQL/EdgeDB. It's not perfect, but much closer to a functional language and composes well.

I would not consider GraphQL a poor reinvention of SQL, since its niche of decoupling and simplifying untrusted high latency clients is too different for flexible queries created by a trusted server. It competes with REST and RPC, not SQL.

GraphQL's native operations are limited to following a foreign-key link, which has predictable performance (quasi linear in the number of objects in the response) and selecting a subset of fields (reduce the response size and enable field level deprecation and usage tracking). These limitations prevent both malicious clients and less performance concerned front-end developers from putting excessive load on the database. These limitations also allow it to work with both data stored in a database and data generated by an application, while supporting SQL is pretty much limited to being processed by a database.

<comment><USER7> The way I see it, SQL and GraphQL are solving somewhat complementary problems. In SQL, I have a structure (all these tables that possibly have to be joined) in the database and I want to pick something out as a simple result table. In GraphQL, I create the more complex structure on the output.

But I do consider GraphQL somewhat unnecessary, because if those REST APIs composed just like tables do in the database, then you wouldn't need GraphQL, and you could run a normal query. (There is also a problem of externalities, putting the processing costs on the client is cheaper.)

And thanks for pointing out EdgeDB.

<comment><USER18> >you wouldn't need GraphQL, and you could run a normal query.

You're making the assumption that there is something to run a normal query on. As soon as you write even a single line of server side code this assumption is broken. What if the GraphQL query doesn't actually use an SQL database and just reads something from a file or another service? What if the server is responsible for granting row level access under very complicated rules that cannot be implemented with just SQL and would be completely insecure if it was done on the client? What if you actually need to do things like implement business logic?

What you're talking about is downright nonsensical within that context.

<comment><USER19> These counterpoints are probably valid for most database systems, but with Postgres it's actually far more efficient to use it as the substrate in which everything else is embedded.

* Postgres has a robust, battle tested role based security model with inheritance.

* Postgres has foreign data wrappers that let you encapsulate external resources as tables that behave the same way as local tables for most use cases.

* Postgres has plugins for most of the popular programming languages.

If you really like GraphQL, the Postgres approach can still give you that too, using Hasura or PostGraphile.

</comment></comment></comment></comment></comment><comment><USER20> Summary: no, because row order matters in dataframes. That's why matrix operations are a better computational framework for dataframes than relational algebra.

<comment><USER21> That's doesn't seem a very defining characteristic. Row order/index is just an implicit primary key column.

<comment><USER20> The point is which operations you optimize for. Most SQL databases aren't well-optimized for matrix multiplication, but are great with search-style queries, and the opposite for dataframes.

</comment></comment></comment><comment><USER22> The article is a nice comparison of pros and cons of Pandas and SQL, but the title and ensuing comments are misleading and off the point, akin to favorite arguments like "is Haskell types just C++ objects"? They have similar and differences, in core semantics and in ergonomics.

Pandas has a perlish API designed for abbreviating common tasks, combined with a Pythonic (per common practice, despite being against Putin's stated principles) disregard for informative use of types, instead a simple coherent, principled, layered API. That makes it look like "SQL done wrong" because the semantic differences aren't laid out explicitly.

<comment> Iwan-Zotow > being against Putin's stated principles

walk carefully

</comment></comment><comment><USER23> A dataframe may be a table, but it can also be a matrix by supporting some matrix operations.

<comment><USER21> yes, the problem is, it is not a very good table.

</comment></comment><comment><USER24> Reading the sections 2.2.3 (about joins) and 3.5 (about code comprehension) took me aback! I came with a positive a priori for dataframes, but changed my mind. SQL is far to be perfect, but at least there are sound foundations!

</comment><comment><USER5> I liked the article, although it kinda conflates SQL and database and Pandas and dataframe.

It does acknowledge other dataframe implementation (Base R and Spark) but most of the arguments about what defines a dataframe are taken from the Pandas API.

</comment><comment><USER25> Man, I wish there were more honest comparisons of approaches like this one rather than the "shut up, stupid" stackoverflow example he references at the start.

<comment><USER26> she*

[http://yifanwu.net/](http://yifanwu.net/)

</comment></comment><comment><USER27> I was unable to learn R because I couldn't understand what a dataframe is. It was irritating that it wasn't defined clearly and there seemed to be no connection to terminology that was familiar to me (relational databases, SQL tables etc.).

<comment><USER28> There's no other way to say this without sounding rude, but you weren't unable to learn R because you couldn't understand what a dataframe was - you were unable to learn R because you gave up. Blaming a data structure for the failure seems like a bit of a stretch.

<comment><USER27> That is what I said. I didn't understand what a dataframe was. Note that I didn't really blame the data structure. I said it was an irritating factor. Someone else might not have been as irritated. But if R was closer to what I already knew, learning would have been easier. For me.

</comment></comment></comment><comment><USER29> Article aside - that LaTeX theme is dope

</comment><comment><USER30> Yes

</comment><comment><USER31> This doesn't seem to be from 2016 (some identifiers suggest that it is, but it cites papers up to 2018 and it says that a tweet from 2016 is two years old).

<comment><USER32> Indeed. "Conference on Very Important Topics 2016" is not a real conference, but placeholder from a template. Maybe it was left behind by accident? The paper is from the PLATEAU Workshop 2019.

<comment><USER33> Ok, we've added three years to the title above. Thanks to both of you!

</comment></comment></comment><comment><USER34> "Now GraphQL has almost 15K GitHub stars and a large and active developer community. What should we make of it?"

don't know why, made me smile. Didnt know the DB world is so edgy - its cute.

I say bygons about graphql, usability always trumps fad in the end and "nature will decide", nature the masses and hordes of "US over Time". Does GraphQL do warehousing well ?

Well im not militant and think its cool.

One could say, based on my experience at uni with random access machine calcs by hand, that everything a computer does reduces to a table. Anyone with examples of things that arnt essentially tables ?

<comment><USER7> > Anyone with examples of things that arnt essentially tables ?

Well, my definition of table: Fixed number of columns of possibly heterogenous types. Variable number of rows that have all the same type.

So, for starters, a matrix is not a table. Nor is a list, a tree, or a hash table (KV store).

<comment><USER35> > Variable number of rows that have all the same type.

Why do they need to have the same type? In sqlite a field can have a different type in every record/row. ([https://www.sqlite.org/datatype3.html](https://www.sqlite.org/datatype3.html)). Is having a fixed typed fields fundamental to the concept of a table, or just a property of most SQL implementations?

<comment><USER36> How do you _aggregate_ without field types? You'd end up writing custom code for untyped map-reduce...

How can you code know what data to expect without typed field? Your code size can grow up even 10x if you need to assume that any record can have any shape...

You could have _more complex and user defined types_ in an ideal super-SQL, like "int or map:string->bool" etc., but you WANT types. They reduce complexity at all levels! You want them in you code, you want them in your data!

Sure, go ahead, just use MongoDB with no constraints on collections structure... You'll end up with 5x more code in you application and 5x more bugs.

SQL and the relational model help you _think more_ , code _less_ (and slower - but this is an advantage) and _have less bugs with less effort!_ If you're lazy and prefer _thinking deeper_ to _" working harder"_, you'll always prefer properly typed SQL :P (Unless you're working with stuff that's naturally shaped as graphs or tensors.)

<comment><USER35> None of your remarks come close to answering my question (is having a type definition in the field/schema fundamental to a table, or just a way that most SQL databases decided to implement them)?

Regarding your questions, in case of sqlite3, a _value_ is typed, but a _field_ is not. sqlite3 only has a very small number of types (numbers, text and nulls) and functions (both aggregation and non-aggregation) that expect either number or text do standard SQL casts before evaluation.

In practice the type systems of all common SQL implementations are so weak that their "guarantees" are worth very little for the user/programmer anyway. (I have a hunch that they're really mostly for internal optimizations). All your code need to handle nulls anyway (and if you only use non-nullable fields, users are just going to use their own placeholders/adhoc sentinal values).

Back to the discussion: sqlite3 don't impose any type homogeneity on fields/columns, while Pandas / R dataframes do. So why should that be a characteristic of a "table", let alone one that distinguishes a "table" from a "dataframe"?

<comment><USER37> Who's to say who gets to write the formal definition? And just because the formal definition claims or doesn't claim something, why does that mean every single implementation has to behave exactly that way?

</comment></comment></comment></comment></comment></comment><comment> r-zip This guy's writing is really inconsistent. "v." and "vs.", plus singular/plural disagreements all over the place. I think the CS/ML/EE fields need to raise their standards w.r.t. editing. Interesting paper though.</comment>


Emerging technologies usher in more fuel-efficient, comfortable aircraft - <AUTHOR> http://www.economist.com/node/21527035

<comment><USER2> The "double bubble," with all of the engines located at the rear of the aircraft could be a dynamite combination with the unducted fan. The unducted fan would give a 40% fuel savings, but it has the disadvantage of failing fan blades potentially flying into the fuselage. Locate the fan blades at the rear, and this problem largely goes away. There's also the problem of noise, but such technology could be limited to "cargo ports" located in remote places, acting as hubs for intercontinental shipping.

The Aerion supersonic business jet has good potential for a trans-ocean jet sharing business. Executives and VIPs could land at coastal airports, and transfer to a supersonic jet parked close by on the tarmac. Actually, using this scheme, there's no reason why one couldn't use rocket-planes with mid-air refueling to shoot VIPs on sub-orbital ballistic trajectories across the Atlantic or Pacific in well under an hour.

</comment><comment><USER3> Is it just me or did the section about "creature comforts" seem completely out of touch with reality? "...mood lighting and holographic entertainment units..." I'd be happy if my flight just had free wifi. Not to be overly cynical, but it's far more likely we'll see the airlines finding more ways add fees and pack in passengers.

<comment><USER4> meh, I actually prefer the 'pay for what you use' model. My big problem with it is that they don't optimize for speed. For example, instead of charging you extra for checked bags, I think they should charge you extra for those overhead bins; loading/unloading would go twice as fast without those bins. Don't tell me the weight makes that much difference; the difference between me and some of my friends would be the weight of two or more checked bags, and I'm not particularly unusual. (I mean, I'm what, 6', and 200# just over a 27 BMI, so yeah, I'm fat, but I'm not unusually so.)

I guess as Americans, what, with the TSA, we have already made the choice that well, speed doesn't matter.

I can't complain too much, really; flights are almost miraculously cheap. It's hard to complain about something being less than luxurious when you can get halfway across the country for the price of taking someone out to a nice dinner.

"The only area where technologists have failed to improve efficiency is in reducing the weight of passengers, says John Corl of Flight Sciences"

</comment></comment><comment><USER5> How far off are the VTOL, hypersonic, high altitude electric jets Musk always talks about?

Why aren't the airlines pursuing this angle - seeing as both drag and landing at airports consume the vast majority of fuel, time and cost of an airplane.

<comment><USER6> I doubt that VTOL would save fuel. More likely it would consume more fuel than conventional landing.</comment></comment>


Sports stats, scores, and analysis - <AUTHOR> http://statsheet.com/

<comment><USER2> Thanks for the link! I'm the founder of StatSheet. I wish I had the money to pay for a PR firm. Should I put johnbilli on the payroll? :-)

<comment><USER3> I'd kill for your domain :-) Nice site. Why no MLB?

<comment><USER2> How I got my domain is an interesting story in itself. It cost me $500, which I thought was a steal.

Why not MLB? Time and money :-) Plus, MLB stats on the web seem to be better covered than some of the other sports. But I do intend to add MLB in the near future. Ultimately I'd like to add every major sport to StatSheet! Golf, cycling, you name it.

</comment></comment></comment><comment><USER4> Doing stats (even if it does seem interesting) != Taking on ESPN, CBS Sportsline, Yahoo Sports.

Cool idea, temporarily ruined by a Digg headline.

Edit: Was not a PR firm or the founder who submitted the link.

<comment><USER5> Agreed.

Nice site. The chart builder feature seems really cool. And overall, stats are really easy to find. Less digging than other sites.

</comment></comment><comment><USER6> It doesn't seem to actually have that many stats on it. I clicked on NFL and there was just a list of teams. I clicked on a team and then there was just a schedule, i.e., another list of teams. Where are the stats?

I was hoping for something that would show me some new, interesting statistics. Like different ways of analyzing the stats to say how the conventional wisdom was wrong about something.

<comment><USER2> So far I've done the most with College Basketball and College Football.

Here are a few links that show features and stats unique to StatSheet:

<http://statsheet.com/chart_list>

<http://statsheet.com/mcb/rankings/motion> [http://statsheet.com/mcb/games/2008/03/08/north- carolina-76-...](http://statsheet.com/mcb/games/2008/03/08/north- carolina-76-duke-68) <http://statsheet.com/mcb/referees/steve-welmer/trends> [http://statsheet.com/mcb/players/player/davidson/stephen- cur...](http://statsheet.com/mcb/players/player/davidson/stephen-curry)

<http://statsheet.com/cfb/teams/florida/game_stats> <http://statsheet.com/cfb/players/player/florida/tim-tebow>

<http://statsheet.com/blog/introducing-statfix-com>

</comment></comment><comment><AUTHOR> Why linkbait? The site was just featured on Mashable. This looks a lot better than any other site I've seen: [http://statsheet.com/mcb/games/2008/04/07/kansas-75-memphis-...](http://statsheet.com/mcb/games/2008/04/07/kansas-75-memphis-68)

<comment><USER4> Mashable is one of the Kings of linkbait. Changing the title would do wonders.

</comment></comment><comment><USER7> How is this taking on anyone?

This looks like linkbait.

</comment><comment><USER7> Protip: people don't go to ESPN, Yahoo, or other sites just for stats.

<comment><USER2> StatSheet isn't only about stats. There are AP articles & photos, personalization features, discussion forums, etc. Soon users will be able to write articles too.

<comment><USER8> It _should_ be just about stats. You can't take on those three on everything.

You do stats much better than they do. Focus.

<comment><USER2> Great point Joel! Stats are definitely my bread and butter.

</comment></comment></comment></comment><comment><USER9> We at <http://www.hotstixgolf.com> would be very happy to see you add Golf to StatSheet!</comment>


Google.ps domain was hacked - <AUTHOR> http://google.ps/ <comment><USER2> ... and thousands of HN readers get infected by a zero-day exploit. Maybe. If you're thinking of submitting a known compromised site to HN, consider instead submitting a third-party site which explains/documents the compromise. Ideally from a respected security research company. This has several benefits:

1\. You're not subjecting HN readers to a site under the control of a malicious party who may have done more than just deface it. Even if _you_ verify that you only receive plain boring text with no scripts, iframes, plugins, etc. it's impossible to verify that someone else won't get served different content. For example, malware that only gets served to people in Israel.

2\. Once the compromised site is restored, people visiting the link won't see what happened. When you link to a third-party article, that article will persist even after the hack is long since gone.

3\. Linking to a security research company will probably give better insight into the technical details _how_ the attack happened, gratifying our intellectual curiosity, instead of just being a dumbed-down piece from some mass-market tech blog.

<comment><USER3> I agree with your point, but 0-day exploits aren't tossed around like candy corn. They're multi-million dollar munitions.

<comment><USER4> > 0-day exploits aren't tossed around like candy corn

They are if the zero-day isn't what you're after.

Something like this _is_ like candy corn to a site like HN. You need an exploit _and_ a reason to get your targets to visit your hacked site. When something like this hits HN's front page, if your target is in the tech world, odds are very good that you'll catch someone in the company/companies you're after. This is not theoretical. See, for instance, the Java exploits employed in those hacked iOS dev forums that successfully compromised computers at Facebook, Twitter, Apple, and Microsoft[1].

[1] [http://arstechnica.com/security/2013/02/web-forum-for- iphone...](http://arstechnica.com/security/2013/02/web-forum-for-iphone- developers-hosted-malware-that-hacked-facebook/)

<comment><USER3> These are both really excellent points.

While DNS-hijacking Google.ps as a watering hole for HN seems like a bit of a long shot of a vector to get access to HN users, it would be a pretty logical vector for Palestinian Authority systems. And is likely a lot of other users would get unintentionally caught in the net.

Flash/Java vulnerabilities are also quite a bit cheaper (100k range), and well within the price range of most criminal APTs, let alone nation-states. But I imagine most, if not all, HN users have those extensions disabled by default.

So the only way to compromise the systems of most users here would be a 0-day javascript vulnerability in Chrome/Firefox. These are the 0-days to which I was referring, which are massively expensive.

But overall the point is valid. The risk, even if not that large that anyone here would be targeted, makes it a good idea not to post directly to compromised websites. I'm not exactly wild about a random workstation at any US company being compromised, even though they weren't explicitly targeted, by random Israeli hackers or even Unit 8200.

</comment></comment></comment></comment><comment><USER5> google.ps has not been hacked.

The .ps registry was. Google DNS servers have been changed to omar.genious.net and hamza.genious.net

<comment><USER6> Hacking a registry is even more alarming.

<comment><USER7> Not all registries are created equal. I'm a heavy Internet user and I'd get along just fine without the .ps nameservers.

<comment><USER8> Still, it goes to show that even if you lock down your website, you could still be vulnerable if your registry is vulnerable.

<comment><USER9> That has been shown since the first day of DNS.

</comment></comment></comment></comment></comment><comment><USER10> Looks like their domain was compromised. It points to an IP associated with this hosting provider: [http://www.genious.net/](http://www.genious.net/)

<comment><USER11> Looks like a Moroccan hosting provider.

</comment></comment><comment><USER12> [http://i.imgur.com/BNspAdZ.jpg](http://i.imgur.com/BNspAdZ.jpg)

<comment><USER13> Thank you.

I wish OP would have done the same with a comment. In fact, this should probably be standard procedure when submitting a link to a compromised site if it's not to a blog/news post about it.

</comment></comment><comment><USER14> Please change the title to "Google Palestine defaced" or "Google DNS entries maliciously changed". Google Palestine was/is not hacked.

<comment><USER15> Yes it was. Let's not quibble.

<comment><USER14> No it was not. It implies something under Google their control was compromised which was not the case.

<comment><USER15> Really, it implies any attack or breach that is apparent to users. This is __very __apparent.

<comment><USER14> That is not what "hacked" means. If they had really hacked Google their servers and proxied all searches through a system of theirs without letting the users know it would not have been "apparent" yet Google was hacked in the correct sense of the definition.

They were defaced which was directly apparent to users - not hacked. At all.

<comment><USER15> I'll repeat the crux of this discussion. There's no definition of 'hacked.' Welcome to the Internet.

<comment><USER14> No definition of "hacked"? Really? You will go that meta to prove your point?

"a hacker is someone who seeks and exploits weaknesses in a computer system or computer network" ( [http://en.wikipedia.org/wiki/Hacker_(computer_security)](http://en.wikipedia.org/wiki/Hacker_\(computer_security\)) )

Being hacked means a hacker has found and exploited a weakness in a computer system or network. Saying that Google Palestine was hacked is false because no exploit in a computer system or computer network OF Google Palestine was found nor exploited.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> More details here [http://hak-it.blogspot.ro/2013/08/google-palestine- hacked.ht...](http://hak-it.blogspot.ro/2013/08/google-palestine-hacked.html)

<comment><USER10> Doesn't look like a fake defacement, google.ps has looked like google since 2009 according to archive.org: [http://web.archive.org/web/20090812080241/http://www.google....](http://web.archive.org/web/20090812080241/http://www.google.ps/)

<comment><USER17> Right, but someone just changed the domain to point to a new IP address. So no one hacked Google's server.

<comment> UVB-76 Exactly. Instead of showing up Google, these hackers (assuming they are indeed Palestinians) have just shown up their own domain registry.

</comment></comment></comment></comment><comment><USER18> Fair warning, that link goes to the compromised site.

<comment><USER19> There was no fair warning: the title doesn't make it clear whether the event is over.

</comment></comment><comment><USER20> Oh man, imagine the heart attack the engineer who first got this ticket must have had before he realized it was a just a dns hijacking.

<comment><USER21> Google's incident response team deals with far bigger issues on a daily basis. This is hardly more than a few kids playing around.

<comment><USER22> Care to elaborate?

<comment><USER23> Nice try, Mark Zuckerberg

</comment></comment></comment></comment><comment><USER24> The page also tries to load a mp3 file using Real Player. Sounds bad... Is that some known exploit?

Real Player is so rear this days, so at list it wouldn't be my first choice if you only wanted to play a song.

<comment><USER25> The mp3 is "Hard", by Rihanna. Doesn't seem to have any exploits attempted (it plays fine in mplayer, with no funny business).

</comment></comment><comment><USER26> Probably just Kids. Nothing very sophisticated. Shame that pretty much all of the basic internet infrastructure is so utterly broken.

</comment><comment><USER27> I love how it says "From Palestine: We are the Best of the Rest"

Best of the Rest? Well, that's not saying much, is it?

<comment><USER28> They must have some awesome ANSI art.

</comment></comment><comment><USER29> Out of six DNS servers, which are authoritative for zone .ps, only one gives out wrong NS records for google.ps . Is it pure luck for that answer to be cached at Google Public DNS, or it possibly had been done by some obscure trick?

EDIT: Ok, on the second thought it seems that the compromised server is just the closest to google. All that is left is to wonder, whether palestine guys did target that server because of it :)

</comment><comment><USER30> Using HTTPS Everywhere gave me a warning on visiting [https://google.ps](https://google.ps), Chrome blocked the url giving a warning on the HSTS/certificate pinning.

</comment><comment><USER31> Being the Google bar on the screenshot in French and the name servers on a Moroccan hosting provider I think it's clear where these script kiddies are from :)

<comment><USER31> P.S.: Not implying anything, just adding information. I've re-read my comment and it looks a bit wrong.

</comment></comment><comment><USER32> "Listen to Rihanna and be Cool"

Kudos.

</comment><comment><USER33> Aren't we seeing a lot of DNS based attacks in the recent past? I remember .pk TLD was hacked not too long ago.

Considering that most of the big sites run local variants of their services using these TLDs is it fair to assume that one of these next ones could be of the phishing kind? What's the best thing to do - always use the .com hoping that it is safer?

<comment><USER21> This isn't a DNS issue, it's a SQL injection attack.

ICANN needs to mandate stronger requirements for best practices with web based management UIs. Unfortunately they have little in the way of real control over ccTLDs.

You'd be best served registering ccTLDs and redirecting them to your gTLD of choice (say, .com) and not trying to serve localized content from them.

<comment><USER34> ICANN is not in a position to mandate such requirements for ccTLDs as they are not empowered to. ccTLD governance differs from gTLDs in that each country code is managed and overseen locally within the country. This is why there is such a diversity in ccTLD policies. For better or worse this model of subsidiarity is what we have today.

<comment><USER21> Which is why I said

> Unfortunately they have little in the way of real control over ccTLDs.

Hopefully NTIA can empower ICANN (as the IANA operator) to better exercise security requirements against ccTLDs. Ultimately NTIA can pull the ccTLD from the root, which is a stick we could use increase the overall security of the internet, but I would prefer we find a carrot.

</comment></comment></comment></comment><comment><USER35> I cannot confirm this from all locations. google.ps sometimes resolve to a legitimate Google and other times to the Moroccan server. Does anyone have an idea how could that be possible?

<comment><USER36> DNS caching.

</comment></comment><comment><USER37> Switched to my phone's LTE - it said "This Account Has Been Suspended"

Refreshed site on my computer connected to wi-fi - it now appears to be return correct Google site.

</comment><comment><USER16> What? Where?

</comment><comment><USER38> wtf is this bullshit!

</comment><comment><USER39> This is hilarious

</comment><comment><USER40> Good job, butthurt nationalist losers ;-).

<comment><USER41> And if this were done by jews being oppressed somewhere, your reaction would be the same?

Not that you'll take this advice, but I'd really recommend spending a little time thinking about what if you were born with a different last name.

Would you be a butthurt loser then, by dint of that last name?

<comment><USER40> I'm congratulating them; hence the winking smiley-face. What the hell?

This is an online prank. Have you actually decided to treat it as a serious political protest?

<comment><USER14> Congratulating someone by calling them "butthurt" and "losers" doesn't work. Your post is rather offending and your last name does indeed spoil your stance in the Israeli-Palestinian conflict but nevertheless your comment is inappropriate and was uncalled for.</comment></comment></comment></comment>


JavaScript SEO - <AUTHOR> http://jeffwhelpley.com/javascript-seo/

<comment><USER2> > The controllers are very similar but do deviate from each other from time to > time. Still, I tried to keep the code looking the same line-for-line > whenever possible.

> In order to do a like for like, we created our own JavaScript-based template > engine. The client tempaltes are compiled into HTML using a Grunt plugin and > then packaged into the main JS file. I had to create some server side > functions to mimc the Angular syntax, but I got close with my like for like > comparison.

If this is the number of hoops needed to jump through to get Angular working for server-side rendering, I'm frightened. Please tell me there's a better way.</comment>


Show HN: My afternoon project - a pleasant viewer for the "who is hiring?" posts - <AUTHOR> http://hnhiring.micahw.com/ <comment><USER3> Awesome! Is there possibly a way to filter the freelances by those looking for work and those looking for freelancers?

</comment><comment><USER4> Great! When I was reading hiring post today I was just thinking that something like this will be very helpful.

Just one thing is missing: sorting by city.

<comment><AUTHOR> You can search by city by using a regular expression in the filter box (ex: nyc|new york).

<comment><USER5> Or possibly a 3-pane display (if desired).. Pick the Year/month, then the city, then see all the people in that city. Or similarly, Year/month, then the company (sorted), then the post.

</comment></comment></comment><comment><USER6> Clean.

Small bug: when you click on a username it should go to <http://news.ycombinator.com/user?id=xxx>, not <http://news.ycombinator.com/users?id=xxx>

<comment><AUTHOR> Thanks -- fixed.

</comment></comment><comment><USER7> Could you filter internships too?

</comment><comment><USER8> As someone just coming off a long contract and looking for a new job/gig -- thank you... thank you from the bottom of my heart. I cannot express how wonderful this tool makes me feel in the midst of a difficult job market.

</comment><comment><USER9> Somebody forgot to support unicode :)

<comment><AUTHOR> That was the result of a weird interaction between open-uri and nokogiri. It's working now.

</comment></comment><comment><USER10> Looks good but the scrolling on iPad feels really wrong. So much so that it actually bothered me and I had to stop. Actually a very weird sensation - <USER2> nails on a chalk board - it is the first time I have had such a 'physical' response to pictures under glass.

</comment><comment><USER11> Very useful!

Just a very small nitpick (not something you should lose your sleep over at all) - upon navigating to a link and then clicking browser back button doesn't take me back to the location I was at. I would even recommend opening links in a new window.

</comment><comment><USER12> This is super! I wanted to do something like this myself - you've executed it brilliantly!!

Why don't have a "Feb 2012 - all" and let user's search using the regexp box? That way, I don't have to search both categories for stuff that might span both.

</comment><comment><USER13> Awesome, thanks! Unfortunately, am on the stock Android browser, and it won't let me scroll down past the length of the left hand nav menu. Not sure why, but can look at your css when I'm back on my desktop if you like.

<comment><AUTHOR> What android version is that? It seems to work on the ICS browser.

<comment><USER13> Sorry for the delay, I'm running Android 2.3.3.

</comment></comment></comment><comment><USER14> Nice site.

When I first saw the "ad" for a developer in New York on the bottom right of the site I thought to myself: "Wow, and he's already found a business model."

It took me a second to figure out that it was the site's creator's info.

</comment><comment><USER15> Also a very non-obtrusive way to market your availability ;)

</comment><comment><USER16> Would be nice to see the job openings as a "gmail discussion" where I can read the "title" and just collapse it if i'm not interested instead of mouse wheeling !

</comment><comment><USER17> Something I wish the actual thread had, that would be great in this is sorting by posted date (aka latest posted, etc...)

</comment><comment><USER18> Does anyone know why companies mostly want to hire full-time coders instead of freelancers/consultants/contractors?

<comment><USER15> As the owner of a consultancy I have to acknowledge that FTEs are often appropriate, for good reasons:

FTEs are available in perpetuity (theoretically), contractors can be flighty

Manageability of FTEs is assumed, while freelancers often multiplex

Overall lower cost

IP/knowledge remains in-house with FTEs (talent acquisitions show this is a big deal)

Of course, there are some bad reasons too (trust issues, etc.).

</comment></comment><comment><USER15> Great work. Would be nice to keep the regex active as I click different months (presently my regex is ignored).

Bookmarked.

Thanks!

<comment><AUTHOR> That's fixed.

<comment><USER15> Awesome. Thanks.

</comment></comment></comment><comment><USER19> Interesting, but scrolling in my iPad was unusable, so I didn't really want to dig into it.

<comment><USER20> No its fine, but you need to scroll using two fingers instead of one.

</comment></comment><comment><USER21> Nice, even i thought of having something similar to make it easy to filter relevant job.

</comment><comment><USER22> Great work - this is really useful. How often does it update?

(I just posted in one of the threads)

</comment><comment><USER23> Does any backbone/whatever involved?

</comment><comment><USER24> great work, kind of finding it difficult to know who is hiring and who is looking for jobs.

</comment><comment><USER25> Very nice job, indeed.

</comment><comment><USER26> Love it

</comment><comment><USER27> nicely done!</comment>


Show HN: Editor Blending Markdown, Blocks and Wysiwyg - <AUTHOR> https://papyrs.com/block-wiki-markdown-editor/ <comment><USER2> So is this some sort of a Notion clone?</comment>