Apps for which macOS applies compatibillity fixes - <AUTHOR> https://worthdoingbadly.com/appkitcompat/ <comment><USER2> _Microsoft Excel /PowerPoint/Word have a patch in _CFArraySortValues to change the sorting algorithm slightly. How do you break sorting?!_

To take a wild guess, it could be a change from a stable to unstable sort: [https://en.wikipedia.org/wiki/Sorting_algorithm#Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability)

 _Apple gets a bad reputation for their supposed lack of backwards compatibility. Nothing is further from the truth: macOS includes tweaks for specific important apps to keep them working on new OS versions._

I read it more as "even Apple is willing to put in patches for backwards compatibility, if your app is important enough." If your app is not, then Apple couldn't care less. MS is more conservative about not breaking things even for relatively obscure apps.

<comment><USER3> Might be. I took a look at _CFArraySortValues, and the "normal" path through it ends up calling CFQSortArray. However, the "com.microsoft.*" path performs what appears to be a bubble sort. Interestingly, the public facing version of CoreFoundation doesn't have the special-case paths: [https://github.com/apple/swift-corelibs- foundation/blob/df3e...](https://github.com/apple/swift-corelibs- foundation/blob/df3ec55fe6c162d590a7653d89ad669c2b9716b1/CoreFoundation/Collections.subproj/CFArray.c#L951)

<comment><USER4> I suppose Excel data is often almost sorted with a few new additions, which makes bubble sort an arguably better choice?

<comment><USER5> Nope, bubble sort always performs the same number of ops regardless of whether the array is partially sorted or not. You might be thinking about insertion sort, which has that feature.

<comment><USER6> Not true.

(3 2 1) -> (2 3 1) -> (2 1 3) -> (1 2 3) (3 passes, 3 swaps)

Compare: (1 3 2) - > (1 2 3) (2 passes, 1 swap)

<comment><USER5> Hmm I suppose you're right. My bad!

</comment></comment></comment></comment></comment></comment><comment><USER7> I guess I made the big time!

The iTerm2 one is interesting because it came too late. Apple's patch disables Sierra's native tabbing. Version 3.1.3 did not disable it completely. I published a fix in version 3.1.4 which came out on October 22, 2017, about a month after Sierra launched. I guess they must have fixed it in a dot release of Sierra, but I won the race and got the fix out before 10.12.1 which came out on October 27.

I'm glad someone's got my back, anyway.

<comment><USER3> Speaking of iTerm's tabbing functionality, are you still using PSMTabBarControl? You make a couple of odd decisions with tabbing, such as blank spot in the tab strip on the right to make way for the overflow indicator, which IMO is inferior to how macOS does it (scrolling tabs). In addition, tab defocusing causes visual discoloration. Does macOS just not provide the API you need, or what?

<comment><USER8> i really hate scrolling tabs...

<comment><USER9> Agree wholeheartedly. Firefox is basically dead to me because of this (that and it's now trickier than ever to fix it).

I'll take 1px wide tabs over scrolling.

<comment><USER10> Um.... Why? 1px Wide Tab is basically a design that forces people not to have too many tabs. Which is great for those who can keep their Tabs Numbered. But even discounting the number of tabs open to be read, a single Feedly section, or in the old days Google Reader section I could easily bump up to 100+ Tabs, and much more in WWDC / Apple Keynote time.

Which makes 1px Tabs annoying as hell.

So I really don't understand why 1px Tab is preferred over Scrolling Tabs.

<comment><USER11> I guess because you have to do a ton of scrolling to go from one of the first tabs to the last.

Of course, if you don't have scrolling tabs then the tabs get so small that it's basically impossible to find what you want.

I solved this dilemma by hiding my FireFox tabs and using Tree Style Tabs. I find it really helps with keeping tabs organized and I can keep a lot open without worrying. I removed the scrollbar and close buttons, and made the tabs smaller, to further save on screen real estate.

<comment><USER3> > I guess because you have to do a ton of scrolling to go from one of the > first tabs to the last.

On a Mac trackpad, this is one swipe. Sure, I see how this can be a problem if you use a scroll wheel, but I've never had this be a problem otherwise.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> This used to be Microsoft's shtick, Joel Spolsky wrote an amazing article related to this a few years ago: [https://www.joelonsoftware.com/2004/06/13/how-microsoft- lost...](https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost-the-api- war/)

Relevant excerpt (abridged):

> I first heard about this from one of the developers of the hit game SimCity, > who told me that there was a critical bug in his application: it used memory > right after freeing it, a major no-no that happened to work OK on DOS ... > the Windows developers ... added special code that checked if SimCity was > running, and if it did, ran the memory allocator in a special mode in which > you could still use memory after freeing it.

</comment><comment><USER13> Microsoft does this too, though I can't find the article right now.

There are hundreds of special compatibility hacks for various software baked into Windows to make things run smoothly.

Edit: The links are broken now, but a paragraph from the article is quoted here:

[https://www.joelonsoftware.com/2004/06/13/how-microsoft- lost...](https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost-the-api- war/)

> Look at the scenario from the customer's standpoint. You bought programs X, > Y and Z. You then upgraded to Windows XP. Your computer now crashes > randomly, and program Z doesn't work at all. You're going to tell your > friends, "Don't upgrade to Windows XP. It crashes randomly, and it's not > compatible with program Z." Are you going to debug your system to determine > that program X is causing the crashes, and that program Z doesn't work > because it is using undocumented window messages? Of course not. You're > going to return the Windows XP box for a refund. (You bought programs X, Y, > and Z some months ago. The 30-day return policy no longer applies to them. > The only thing you can return is Windows XP.)

<comment><USER14> windows hardly changes a function contract. most their patches are to support bugged programs that used the api in undocumented ways, not because they changed an api functionality

[http://ptgmedia.pearsoncmg.com/images/9780321440303/samplech...](http://ptgmedia.pearsoncmg.com/images/9780321440303/samplechapter/Chen_bonus_ch01.pdf)

</comment></comment><comment><USER15> Reminds me of my all-time favorite Joel Spolsky story about Bill Gates' amazing technical free-diving skills and the Excel date compatibility problem.

[https://www.joelonsoftware.com/2006/06/16/my-first-billg- rev...](https://www.joelonsoftware.com/2006/06/16/my-first-billg-review/)

<comment><USER16> It's easy to forget that Bill Gates was once the Jeff Dean of his time.

<comment><USER17> Bill Gates is a genius, maybe even in technical stuff, but he wasn't the Jeff Dean of his time.

<comment><USER16> Well of course, in a way, nobody could be, because software didn't have the impact on the world then as it does now.

<comment><USER18> I'd say it had more impact then.

The major impact of software and computing was front-loaded, as in, it came with the early hanging fruits: being able to computerize banking, government data, credit card transactions, international trading, etc. This gave a huge boost to market efficiency and globalization.

The rest, with the internet, apps, online sales, etc, is just another outlet for doing business. Whether a 2B2 order happens on the web, or by old-style computer networks, or even by fax, is not that much of a difference.

</comment></comment></comment></comment></comment><comment><USER3> Honestly, I wouldn't be surprised if this is basically the list of apps personally used by Apple employees that broke between releases.

EDIT: Here's a list sorted by number of occurrences: [https://gist.github.com/saagarjha/f36b6d99c3b89acfc02624806e...](https://gist.github.com/saagarjha/f36b6d99c3b89acfc02624806e052462)

</comment><comment><USER19> I used to maintain a Finder plugin that added icon overlays to files, and added menu items to right-click menus.

It worked by injecting code into Finder at runtime, and then swapping method implementations for various classes. (Mac developers call this swizzling.)

We basically had to reverse engineer Finder every time Apple shipped a new version of MacOS. Later, as the process grew more common, we had to add tricks to make sure that we could work smoothly with other similar plugins.

I jumped for joy when Apple released the Finder Extension API!

<comment><USER20> I know you said you don't maintain this plugin anymore, but does it still exist in some form? It sounds interesting!

</comment></comment><comment><USER21> _Apple gets a bad reputation for their supposed lack of backwards compatibility. Nothing is further from the truth._

Well, they definitely break a lot of things. Mostly things that were never documented or guaranteed to work, though.

My app [1] regularly broke with new macOS releases between 10.9 and 10.12. So often I actually shivered when they announced a new version.

I was calling Cocoa stuff from separate threads which is almost never guaranteed to work on macOS (the UI is explicitly not thread-safe). It usually worked on older releases though, but since 10.9 or so, it broke a little more with almost every new release.

Not really Apple's fault as it's mosty breaking stuff that was explicitly not guaranteed to work in the first place and which I shouldn't have used. On the other hand, Microsoft seems to keep every quirk from Windows 9x time still working until today.

[1] [https://github.com/enzo1982/freac](https://github.com/enzo1982/freac)

<comment><USER3> > I was calling Cocoa stuff from separate threads which is almost never > guaranteed to work on macOS (the UI is explicitly not thread-safe)

It seems to me that you know what's wrong here, but just in case you don't, most UI work should be done on the main thread. There are certain lower-lever layer APIs that IIRC do explicitly allow for calls from multithreaded contexts, but other than that stick to the main thread. There's actually a new tool, the thread sanitizer, that helps you adhere to this by flagging all misuse of Cocoa outside the main thread.

<comment><USER22> This is the case for almost every graphical toolkit I've developed for.

</comment></comment></comment><comment><USER23> From the article:

> _" Note that this is just a list of apps Apple has developed compatibility > tweaks to make them run on newer macOS versions. As the list demonstrates, > even the best apps often needs some tweaks on newer macOS. In addition, most > of these patches are only applied to older versions of apps."_

Quite a stretch from this to the clickbait title _" These 299 macOS apps are so buggy..."_.

<comment><USER24> That's not fair to say. These apps may very well have done one or two things wrong in their code that required Apple to step in. I have a million such mistakes in my code but no one uses them enough to warrant a checkfix.

Also these apps are huge and push the platform forward more than other apps so the likelihood of this relying on undocumented behavior is much much higher and Apple is some sense shares responsibility for those bugs. So the face that they make these checkfixes makes sense.

</comment></comment><comment><USER25> This sounds somewhat analogous to what Nvidia do with their graphics drivers. You hear stories about how the driver is full of game specific hacks to work around bugs / poor designs in the games themselves.

While this can be good for performance and stability of these games, it does result in a bloated and complex driver, which I'm certain is difficult to maintain.

<comment><USER26> You can confirm these stories by downloading Nvidia Inspector which includes the Nvidia Profile Inspector that allows you to view and edit the - hundreds - game profiles the driver knows about and even make new ones (quite useful if you are playing some obscure game that happens to have a similar bug or use the same engine as a more popular game). The available tweaks even include fixes for games released in the 90s.

<comment><USER27> This imho is how you do this kind of thing. I've seen the contrary to often in production environment where per customer exceptions (if customer-id ==) are made. Instead you have to make the exception itself into a concept en manage the relation between the exception and the customer/application at a different level like nvidea does with the profiles.

</comment></comment></comment><comment><USER28> Interesting that Firefox made it onto the list; one would have assumed it would have been easier to produce a patch for an open source application than to maintain a compatibility fix in your own code.

<comment><USER3> Well, who would write the patch? Someone at Apple?

<comment><USER29> Yes? Or some regular contributor to Firefox that gets guidance from an Apple engineer?

<comment><USER3> > gets guidance from an Apple engineer

You do realize that the chances of this happening is next to nil, right? This is doubly true for prerelease software.

<comment><USER30> This happens all of the time. Very common for Apple to reach out to the popular apps.

And if you aren't popular you can just goto WWDC where hundreds of engineers will quite happily talk through issues and give guidance on prerelease software.

<comment><USER3> > Very common for Apple to reach out to the popular apps

You have to be _really_ popular for this to happen, or be the only adopter of a technology they're trying to push. Basically, the question you have to ask yourself is "could Apple showcase us at a keynote?" Of course, such arrangements have massive NDAs around them.

> if you aren't popular you can just goto WWDC where hundreds of engineers > will quite happily talk through issues and give guidance on prerelease > software

Yes, but they aren't going to tell you what's wrong with your software…you'll need to go up to them at tell them "so and so doesn't work" and then they'll help you. I think it's unlikely that they'd just outright tell you that they made a special case for your software and you should get around to fixing it.

<comment><USER31> This is Firefox we're talking about, so yes it's popular. And this does happen far more than you're claiming. I'm not sure why you're still trying to push your angle honestly.

<comment><USER3> Outside of the extremely rare occasions that I mentioned above, I've never seen or heard this happen. If you have some stories to share, I'm all ears!

<comment><USER31> Look at commit email domains some time. Grep for @apple.com in popular projects. I don't have the firefox repository on hand but I would wager they're in there too.

<comment><USER32> Only things from @apple.com in mozilla-central are a few commits from the auto-syncing of web-platform-tests ( [https://github.com/w3c/web-platform- tests](https://github.com/w3c/web-platform-tests) ), and a few patches from code shared with WebKit where patches have been copied over. So, uh, no direct contributions.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER33> > _[This] function, which returns true if the current app matches the > specified bundle ID and is linked on or prior to the macOS version. Thus, > older versions of the app would have the fix applied, while newer versions > built with a newer SDK would not._

This it notable. It means Apple is ensuring backwards compatibility. Even if an updated version of your app (as detected by what OS it linked against) fixes things, these patches are still around for older versions of the app people may still be running.

Backwards compatibility never ages out...

<comment><USER34> I agree that there's a sound reason for this, but I can't help but think that API versioning would be the more correct way to do it. This is how you pile up unnecessary complexity.

<comment><USER35> I'd agree, except what Apple is doing here is orthogonal to backwards compatibility. They're fixing buggy apps, some of which are buggy because they rely on undocumented behavior.

<comment><USER36> If it worked yesterday and after an OS update it still works how is that not backwards compatibility?

Does it matter to a user if the change was due to some "buggy apps"? If it works, it works.

</comment></comment></comment></comment><comment><USER37> As noted elsewhere in the thread, Microsoft does this as well, and Opera used to do this for broken high-profile websites:

[https://www.opera.com/docs/browserjs/](https://www.opera.com/docs/browserjs/)

 _Edit:_ Even Chrome and Safari used to do it: [https://dev.opera.com/blog/opera-s-site- patching/](https://dev.opera.com/blog/opera-s-site-patching/)

</comment><comment><USER38> This is an industry standard practice across many different areas. You know those "game ready" video card drivers you download? Inside the driver there's a big lookup table of executable names tied to tuned parameters for the video pipeline. The APIs that are used (DirectX, OpenGL, etc.) don't allow sufficient tuning of the behavior of GPUs, so instead there's a sort of meta layer of programming which gets done by the graphics card makers.

</comment><comment><USER19> I work on some Mac applications that, at times, try to exceed what MacOS applications are capable of doing.

They almost always break between MacOS releases. Usually the cause is that Apple improved various security restrictions in Gatekeeper. What tends to happen is that older builds work fine, but any new builds don't work well.

But, what's interesting is that the page at [https://worthdoingbadly.com/assets/blog/appkitcompat/appkit_...](https://worthdoingbadly.com/assets/blog/appkitcompat/appkit_processed.html) doesn't list any bundle hashes. I always assumed that Apple's hacks for backwards compatibility were tied to the bundle hash, and not the specific application.

<comment><USER39> Sounds like what you're talking about is what's called a "linked-on-or-after" check. That's where they'll see what version of the SDK an app was built against, and enable or disable specific features or bugfixes. Obviously that could be used in conjunction with your app's bundle id.

</comment></comment><comment><USER40> I don't understand this pseudo code from the article: if __CFAppVersionCheckLessThan("com.microsoft.Powerpoint", CFSystemVersionYosemite) {

Why are they comparing an app version to an OS version?

<comment> crooked-v It's comparing what macOS version the app is linked against, not the app's own version number.

</comment></comment><comment><USER41> "I guess Apple's using the compatibility system to patch other things/change behaviour for specific system apps."

Sometimes I do think software is doomed - like when a teammate of mine had to manually edit the bundled and minified javascript files right before release, because the bundler-crawler frankenstein code would've taken another eight hours to finish.

</comment><comment><USER42> Makes me very happy to see FOSS software like Blender in the list and not just the big commercial applications as I had expected.

<comment><USER43> Maybe they fix apps whose complaints are louder than average.

Putting an effort to make people believe the upgrading on macOS is smooth is important to avoid version spread like on other OS's.

</comment></comment><comment><USER44> When I was at Apple in the mid-90's with access to the (obviously pre-NeXT) MacOS source code, I was amazed at how many of these version checks were in the code; there were always a lot of Microsoft app/version checks in there.

</comment><comment><USER45> Interesting. I wonder how much this lookup check adds to _every_ app's load time?

I may have missed it in the article, but is the lookup run only upon first time the app is executed, or on every single run instance?

<comment><USER46> > I wonder how much this lookup check adds to every app's load time?

Based on the IDA disassembly, not much. A few extra CPU instructions has minimal impact generally.

> but is the lookup run only upon first time the app is executed, or on every > single run instance?

It's done every time the function in question is executed from what I can tell.

<comment><USER3> _CFAppVersionCheckLessThan is called every time, yes, but the result of the check is cached as far as I can tell.

</comment></comment></comment><comment><USER47> Well, they can remove those patches for AOL Instant Messenger now, eh?

<comment><USER48> Why? It's one of the better group chat apps out there these days.

<comment><USER49> AIM service shutdown in December.

</comment></comment></comment><comment><USER50> This is really fucked up: are the app developers made aware of those? (likely not) are they going to experience some "strange" behavior, not like anybody else? if someone at Apple gets aware of a "problem", why not contact the app developers to help fix?

It also means that if some other developers want to make an app with the same kind of feature/behavior, they can't?

Some app developers also use special bundle IDs for testing...

I only see "no-go" reasons for such a thing, not a single valid or positive one!

<comment><USER51> Yes, it's common for Apple to report a bug against the app; in fact in many cases the bug has already been fixed in the latest version! But that doesn't help users who are using old versions.

Most app developers aren't going to spend resources putting out a dot release for years-old versions of their app. But users use those apps every day.

Check-fixed behavior is not a "feature," it's some sub-optimal behavior applied to work around serious bugs. An example is lying to the app about the OS version, to prevent the app from breaking. No developer wants to opt-into such behavior.

Note that check-fixes are tied to an SDK version, so when the developer switches to the newest SDK, they'll see the normal behavior.

</comment></comment><comment><USER52> Very interesting article, very misleading title.

</comment><comment><USER53> > Apple gets a bad reputation for their supposed lack of backwards > compatibility. Nothing is further from the truth.

Yeah, if you have an app that is used by millions of people, that is.

</comment><comment><USER54> So what is the reasoning behind Apple's constant breaking changes?

<comment><USER54> I'm surprised by the downvotes. This was an honest question since Microsoft has been able to move on for years without so many changes.

</comment></comment><comment><USER55> 1) (optional) OS vendor release an OS with an API quirk or bug

2) App vendor find out about the bug/issue and works around it, OR uses the API in a weird way that "works" but is non-compliant (see SimCity's use after free)

3) OS fixes the issue but then app breaks

4) Goto 1

</comment><comment><USER56> If only they put as much care into making sure their new laptop keyboards did't start failing after 2 months, I might still consider spending 2-4 times as much for their hardware..</comment>


Picosecond Protein Watching - <AUTHOR> http://pipeline.corante.com/archives/2012/11/08/picosecond_protein_watching.php

<comment><USER2> There are a good number of pico-second resolved X-ray crystallography papers published. Schotte, the author here, published her first in 2003 on Myoglobin. Many others have used this since the early 2000s. Other protein watching techniques such as NMR have been exploited for small time resolution, as well.

The frontier to be talked about is single molecule resolution. Equilibrium measurements, like X-ray crystallography, are still incapable of picking up states of the protein with very low populations, which are often relevant to conformational change.

It can be a bit of misnomer, as well. Time resolution of often means using a singular value decomposition to pull out populated states from the data. As a result, the pictures isn't exactly time linear.

</comment><comment><USER3> interesting. my education is as a biochemist, and my interest was in protein dynamics. i knew the x-ray guys were trying to get to this, and it was only a matter of time before they could image and compute fast enough. i had expected the NMR guys to get there first, however.

<comment><USER4> My NMR buddy is gonna be pissed :)

Although to be fair, this appears to be a very special case, where they can control the motion of the protein with a pulse of light. It also doesn't appear to measure very small/fast fluctuations of the protein in normal conformations.

</comment></comment><comment><USER5> This is going to be incredibly big for the protein structure predictors as well. Most of the best models incorporate bond-breaking and conformational switching moves as described in the function of this protein, but the vast combinatorial possibilities make it hard to resolve what the folding paths are to the global minimum and which are "unnatural" and leave you sitting in a local minima. Tweaking their models with real-world input from this type of imaging and more sophisticated statistics about the frequency of moves will work wonders for their automated efforts.

</comment><comment><USER6> Won't the protein absorbing x-rays affect its reaction?</comment>


CMake silently disregards the C preprocessor flags environment variable (2012) - <AUTHOR> http://www.cmake.org/Bug/view.php?id=12928

<comment><USER2> Well, it's concerning that this is used to pass security related flags (-D_FORTIFY_SOURCE,) and it appears to have been open since 2012. I didn't think use of CPPFLAGS was that obscure, though I guess it has an unfortunately confusing name.

</comment><comment><USER3> I think that open-source projects need to take these questions of usability more seriously. There seems to be an unspoken but pervasive attitude that features should not be added for convenience or to guide inexperienced users when they make a mistake. To go on a tangent, I think this is why Linux desktop environments still lag behind in usability; Windows and Mac chose their fate a long time ago.

<comment><USER4> The attitude I would find most helpful would be one of "sane defaults". It should be possible for beginning users to get up and running doing things with the most minimal amount of configuration possible. Then as the user learns more they can replace bits of the default piecewise with config files that only overwrite the specified attributes.

</comment></comment><comment><USER5> Why _do_ people use .cpp for files and yet CXXFLAGS for makefiles, anyway? (also see .cc, but almost never .cxx)

<comment><USER6> CPP in CPPFLAGS means "C PreProcessor", and pre-dates C++.

This collision is why CXXFLAGS was chosen for C++ compile-time flags.

('+' being an inconvenient literal to use in a shell environment.)

The .cpp extension comes from platforms where CPPFLAGS didn't exist, i.e. not UNIX. I think .cc has always been preferred on UNIX platforms, though .C used to be common as well.

</comment></comment><comment><USER7> Sounds like smth quite in the spirit of CMake, not surprised a tiniest bit (and not humorous either).

</comment><comment><AUTHOR> That means most projects using CMake get built without CPPFLAGS in compiler options.

<comment><USER8> Which usually works, but there are some cross compiling and other options that need it (actually largefile options on 32 bit setups that need it like glibc, alas that hasnt died yet).</comment></comment>


Microsoft ask for Internet Explorer to be removed from Spoon Browser Sandbox - <AUTHOR> http://spoon.net/browsers/

<comment><USER2> IE usage recently dropped below Chrome usage on Mibbit (Including our widget which is deployed on various non-techy websites).

      Firefox 55.1%
      Chrome 20.7%
      IE 15.2%
      Other 4.4%
      Opera 3.0%
      Safari 1.6%

The time when you _have_ to support IE, for many, is coming to an end.

On a related note, I got a phone call from Microsoft adCenter the other day, asking why I hadn't spent any money with them for a year (Different website I run which needs big ad spend).

I said "Last time I tried the interface in Chrome, it didn't work".

She replied "Ah. Chrome is Google and so it's not compatible".

MS never cease to amaze me.

<comment><USER3> > for many

Yes, for many sites with a technical audience. But for sites with an older, less technically sophisticated userbase, IE still has the vast majority over other browsers.

I hear what you're saying about the widget. But is that downloads? In which case: selection bias. What do the stats look like as far as impressions go on the non-techy sites?

<comment><USER4> Here are stats for the University I work at. It's still not a representative sample but does show a different picture.

(Current Period):

      IE      35.01%
      Firefox 33.32%
      Safari  15.68%
      Chrome  14.56%

(Current Period - 1 Year):

      IE      40.61%
      Firefox 38.79%
      Safari  12.92%
      Chrome  4.93%

<comment> mike-cardwell What country? I suspect figures in Europe are very different from those in the US. European versions of Windows are now required to offer a selection of browsers at install time.

<comment><USER4> US

</comment></comment></comment></comment></comment><comment><USER5> This is so incredibly shortsighted it hurts. Why on earth would you take away resources that help people work around your product's suckiness? Maybe they should just prohibit optimizing for their browser in general, then maybe people will finally stop using it alltogether once enough pages look totally destroyed because nobody can check against it...

</comment><comment><USER6> Looks like someone accidentally let MSFT Legal out of the kennel again. That said Spoon looks pretty damn ropey from a legal perspective, there's very, very little information but I wonder if the developers of things like World of Goo know that they're software is being effectively given away or at least rented for free.

</comment><comment><USER7> Snaky comments aside, I would guess that this has something to do with Windows/Internet-Explorer licenses. Its totally not cool, but let us give them the benefit of doubt until it turns out that they have malicious intentions.

[As an aside I wonder how many people actually use Spoon for doing cross- browser testing of their websites. IIRC Spoon Browsers cannot access websites in the local Intranet.]

<comment><USER8> Their intentions don't have to be malicious. Even if Hanlon's Razor applies, the mere stupidity of this move is enough to decry it.

</comment></comment><comment><AUTHOR> We can only hope that they are working on providing their own cloud-based service now that developers are going to have to find ways to easily and reliably test in IE6, IE7, IE8, and IE9.

<comment><USER9> Well, if it helps, you can change the mode in IE9 beta to have it run/render as if it were 6,7,8.

Actually, I don't recall 6 being included...

<comment><USER10> I can't find the article now, but I remember reading that the IE7 mode in IE8 had a ton of little gotchas. They were pretty much all the type of things that weren't a big deal on their own, but cumulatively it mad testing for IE7 on IE8 totally worthless. I think the tests would be unreliable, plus the amount of minutia you would have to mentally track about what is emulated properly and what is not was huge. My feeling after reading this article was that the simplest route, unfortunately is to have virtual Machines with the different browsers on them.

<comment><USER11> Basically to provide 100% pixel perfect on IE(6,7,8,9) suupport:

IE versions can't be installed side-by-side (and the un/install process on Windows is very inefficient). So you have to have to have at least 4 VMs/boot partitions (at least 1 of which must be running XP), each loaded with a different version of IE. Each with a different version of debug tools.

And unless you force (strict mode) on IE8(& 9?), test IE8 in IE7 mode, IE8 Compatibility mode, and IE8 Strict mode....

Fortunately my employer dropped IE6 support 2 years ago. Plus, I find that usually just testing for IE7 in IE8's IE7 mode, and forcing IE8 to render pages in IE8 strict mode, is generally sufficient 95% of the time.

</comment></comment></comment></comment><comment><USER12> Till Spoon supports running on platforms other than Windows, this is somewhat a moot issue for many of us.

</comment><comment> mike-cardwell Seeing as people are talking about browser market share I thought I'd pull up the analytics for exim.org to see what it's like there:

Firefox: 54%

Chrome: 18%

IE: 13%

Opera: 6%

Safari: 5%

Of course, exim.org is a technical website so the figures are bound to be different to the average website.

</comment><comment><USER13> My interpretation of this is that Microsoft realizes that developers are leaving their platform pretty rapidly. As more developers switch to OS X or Linux as their main development platform, the whole Windows ecosystem will suffer, not just web browser support for Microsoft's awful browsers.

Forcing developers to use Windows while IE still has enough clout might be one of their strategies to stem the loss of developers migrating to other systems.

Or perhaps I'm reading too much into it.

<comment><USER14> Think you probably are - last time I used spoon you still had to be using Windows; it just meant you could run IE6, 7 and 8 at the same time.

<comment><USER13> Oh, good point :-)

I thought the way spoon worked was similar to those services that give you snapshots of your site in different browsers.

</comment></comment></comment><comment><USER15> Does anyone know of any alternatives for IE?

<comment><AUTHOR> IE Collection is meant to be a good alternative - <http://bit.ly/d992Bn>

<comment><USER16> I've always been fond of IETester. <http://www.my- debugbar.com/wiki/IETester/HomePage>

<comment><USER17> I think there is a caveat with IETester: It seems to use the currently installed IE's javascript engine not matter what rendering engine it uses, so testing mileage may vary.

</comment></comment></comment></comment><comment><USER18> why on earth?

<comment><USER19> They must think this will allow them to sell 20 more Windows licenses a year...

<comment><USER20> Yeah, people are going to get more Windows licenses, but they won't necessarily be buying them. If that's their aim it may backfire.</comment></comment></comment>


Churchill's Canvases - <AUTHOR> https://www.the-american-interest.com/2019/01/15/churchills-canvases/ <comment><USER2> Both Churchill and Hitler were painters. I wonder if that common ground ever was a factor in diplomatic efforts between the two of them during their era.</comment>


This DX7 Cartridge Does Not Exist - <AUTHOR> https://www.thisdx7cartdoesnotexist.com/ <comment><USER2> First of all, fantastic tool.

Second of all, to folks that are trying to figure out how to give this a go: Open up your favorite DAW (try out Reaper[1] if you don't have one yet), download an install the fantastic open source DX7 emulator plugin Dexed VST plugin [2] and have fun.

In my opinion, FM synthesis is one of the finest things in life I've ever experienced. I never understood the whole culture around an emotional attachment to one's guitar before I realized how closely I could bond with my FM synthesis instruments. It was about five years ago when it started to feel a bit more like an extension of my brain and less like a tool. Now, I've always been an FM8 person myself because of the envelopes, but obviously the DX7 shaped synthesizers have the superior library.

I'm always overjoyed to see projects that get more folks into the joy of music with FM synthesis.

[1] [https://www.reaper.fm/](https://www.reaper.fm/)

[2] [https://asb2m10.github.io/dexed/](https://asb2m10.github.io/dexed/)

<comment><USER3> Any instructions for Linux? Dexed won't run there.

<comment><USER4> It's possible to build it for Linux from source:

[https://github.com/asb2m10/dexed/wiki/Linux- Builds](https://github.com/asb2m10/dexed/wiki/Linux-Builds)

</comment></comment></comment><comment><USER5> Can someone give me a short explanation as to what this is and why it is significant?

It looks quite interesting. I am basically looking for the ELI5 because I have never heard of a DX7 before and I don't know what the file that I was prompted to download was about.

<comment><USER6> It appears to generate ROM (cartridge) images, which I'm guessing are sound patches, for a vintage Yamaha FM synthesizer -- A model which was extremely popular and ubiquitous a few decades ago.

[https://en.wikipedia.org/wiki/Yamaha_DX7](https://en.wikipedia.org/wiki/Yamaha_DX7)

<comment><USER7> The file format that it downloads (.syx) is a MIDI sysex or system-exclusive message file ([https://www.midi.org/specifications- old/item/table-4-univers...](https://www.midi.org/specifications- old/item/table-4-universal-system-exclusive-messages)). These are basically scripts of MIDI instructions that exist outside the regular note on-off messages, and can be used for a variety of things, in this case programming a patch in the DX7's synthesis engine.

</comment></comment></comment><comment><USER8> This is very cool, well done!

I wonder how far we are away from the following:

1\. Being able to use a GAN to be able to give a synth an input sound (i.e. a reece sound from a dnb track) and have it generate a patch that matches it.

2\. Being able to do 1 but apply it to a whole Ableton project. The interesting thing about Ableton is that they're actually XML files under the covers.

Even if you couldn't get close, it would be fascinating to see how an AI would design synth patches for subtractive synths.

<comment><USER9> There is a long tradition of using AI and AI-ish techniques to try to generate FM synthesis patches, for example [1] genetic algorithms (1993) to [2] neural networks (2017). See the "previous work" section in the latter paper for more references.

Disclosure: I wrote the original sound engine in Dexed. I love seeing stuff like this!

[1]: [https://www.jstor.org/stable/3680541?seq=1](https://www.jstor.org/stable/3680541?seq=1) [2]: [http://research.gold.ac.uk/22516/1/myk_lf_vsti_programming.p...](http://research.gold.ac.uk/22516/1/myk_lf_vsti_programming.pdf)

<comment><USER10> Hey dexed is awesome! I was the coauthor for [2], it for was my 3rd year undergraduate dissertation. A lot of the work went into creating a Python VST host capable of generating huge datasets of random patches.

I'm looking at some of the fancy new ML tricks that have come out since that paper was wrote and have been thinking there would be significant improvements over the LSTM we used.

<comment><USER9> Nice! I imagine with the advances in ML it would be possible to do really impressive things. I hope you or someone else takes this up.

Also, this is really a reason to love Hacker News. Sometimes I question why I spend so much time here, this is not one of those times :)

</comment></comment></comment></comment><comment><USER11> I have KQ Dixie on this iPad Pro that I'm presently on. The sysex files generated by this website opened up directly into it, and it worked brilliantly. This is so cool. There's a lot of duds, but it also generates some very usable patches.

I actually have a DX7 sitting on my desk at work, although I only use it as a MIDI keyboard because I love the keybed. Dexed or Arturia is so much easier to program, and 100% the same audio, so I have no reason to mess around programming the real thing. When I did play it directly, I programmed it in Dexed anyway.

<comment><USER12> I've owned multiple DX-7s (only first gen... I've always wanted to buy a DX-7IIfd). While I liked the feel of the keys, I couldn't get passed the MIDI implementation not sending the full 0-127 velocity. (Yamaha implemented a 0 to 100 range because the MIDI spec wasn't complete at the time of production). When I'm actually using it as just a keyboard to play, it doesn't seem to matter... it's only when I'm using a different sound source.

<comment><USER13> You can patch that if you want, the ROM image is available and there are reasonably accurate disassemblies, enough to figure out where that bit of code lives so you can scale it. You won't be able to fix it at the source (the DX7 contains _two_ processors, the other one is mask programmable), but you can simply scale the 0...100 values to become 0...127.

</comment></comment></comment><comment><USER14> Just loaded mine into my Arturia DX7 VST, and its rad. Threw some juicy reverb after it, and found a couple patches in my pack that will defintely be putting into a track.

</comment><comment><USER15> Years ago I had a TX81Z synthesizer unit. It was a rack mount unit (not a keyboard synthesizer; you had to use it with a midi keyboard). It was also an FM synthesizer with a fundamental difference; the DX7 used sine waves modulating each other to produce the sounds, and the TX81Z let you do the frequency modulation with sine waves, or triangle waves, or square waves, or pulse waves. You basically had an order of magnitude more flexibility in creating sounds, and an order of magnitude more difficulty. Some people were able to create some really interesting patches, but I never got good enough to create anything remotely interesting.

<comment><USER16> The TX81Z only has 4 operators, versus 6 on the DX7, but, on the other hand, yes, not just sine waves.

Also, it had the "LatelyBass" preset, used on a huge number of records in the 80s and 90s.

</comment></comment><comment><USER17> I downloaded a .syx and loaded it into Dexed. About half the patches don't make any sound, but the ones that remain are pretty good. Various classic FM sounds in the Sonic the Hedgehog vein.

</comment><comment><USER18> Reminds me of the Yanaha CX5 MSX computer [https://www.msx.org/wiki/Yamaha_CX5](https://www.msx.org/wiki/Yamaha_CX5)

</comment><comment><USER13> Very neat. I refurbish/repair DX7's as a hobby, and it is always surprising to me how much life there is still left in that synth. There is a whole eco- system around them and lots of people still want the actual thing to play on. They're also built like tanks which is one reason they are still so much in use today.

<comment><USER11> Just curious, since you mentioned this: where do you get your up-stop felt?

<comment><USER13> Piano restauration parts supplier in Amsterdam.

</comment></comment></comment><comment><USER19> This is ultimate vaporwave thing.

It needs just two things:

1) some sanity checking on presets (to drop not working sounds) 2) javascript player on the page (there is web port of DEXED[1])

[1] - [https://www.webaudiomodules.org/wamsynths/dexed](https://www.webaudiomodules.org/wamsynths/dexed)

</comment><comment><USER20> I sorta wonder if this can be generalized to, say, some number of oscillators (i.e. if there's three in the synth then extra three in the model are considered disabled and we have a subspace of parameters), and to a bunch of common parameters like wave shapes, ADSR, the algo, the LFO. Because I noticed DX7 patches available on the web, but my particular DAW ain't got six oscillators and I can't even imagine what to do with that many of them.

(Though personally I don't believe that we should accelerate the exhaustive search on the musical space, but the geek in me can't help pondering about this.)

</comment><comment><USER16> I really want to like Dexed (I love FM synthesis). But (I'm using it on a Mac, if that makes any difference):

• After clicking on a knob, I should then be able to use the up and down arrow keys to move the value up and down.

• I should be able to type in the numeric value I want a selected parameter to be.

If the interface had these two features, it would be perfect. Without them, for me, it is unusable for programming sounds.

</comment><comment><USER21> Well, I have to say:

(1) This looks interesting. I had no idea any of this existed.

(2) For the level of awesome, this is the worst-documented ecosystem I've stepped into in a long while. I hope some random user volunteers to make really nice documentation at some point. This could go from awesome to a lot awesomer.

I looked for MIDI synthesizer a while back, and never ran into dexed. I suspect I'll have a lot of fun with this at some point.

<comment><USER22> For (2), yea definitely threw this all together a little too quickly. I have updated the README in [https://github.com/Nintorac/NeuralDX7](https://github.com/Nintorac/NeuralDX7) to give a little explanation of the specific code used for this site.

Hope that helps and feel free to get in contact email@example.com or create an issue if I can help to make anything clearer

<comment><USER21> Nah.

(1) For open source, out early is better than out later. v0 (or v1 or where ever you start numbering) shouldn't be perfect. If it's perfect, you're sharing too late.

(2) All this is volunteer work and a gift to the community. It's a fallacy to think the person who writes the code is also responsible for doing everything else. Some people code well. Others write well. Others do both well. That's okay.

(3) My comment was on the dexed ecosystem; not just on this piece

(4) All that said, what would be awesome is if

\- There were sample audio files we could listen to. Ideally, these would be for the generated patches, but even if there was just a half-dozen example WAV or MP3 files.

\- If the README file on github had a link to the web page, or at the very least, if the current text (thisdx7cartdoesnotexit.com) said "exist" at the end instead of "exit"

</comment></comment></comment><comment><USER23> Awesome! I tried to do this for my final year project back in 2018 but failed miserably. To the author: well done, this is really cool!

</comment><comment> t-writescode It .. asks me to download something when I click generate.

Is that supposed to happen?

Running: Firefox: 76.0.1 (64 bit)

I thought it was going to be a picture of the cartridge.

<comment><USER24> Not a picture, it's an actual cartridge ROM image for use with a DX7 synthesizer!

</comment></comment><comment><USER25> Cool idea ! Will definitely test the results , thanks a lot ! Here's something similar : [https://u-he.com/products/protoverb/](https://u-he.com/products/protoverb/)

</comment><comment><USER26> Really works well. Downloaded the SysEx imported into NI's FM8 and some of the sounds are extremely usable as the basis for some sound design.

You milage may vary if you are after some traditional sounds though - I am definitely not.

</comment><comment><USER27> This is so cool. I recently got myself a Reface DX to recapture the feel of the original DX7 and have Dexed on my machines (including the iPad), so will be having some fun over the next few evenings.

</comment><comment><USER28> My dad bought a DX7 when I was a kid. This sure bring back some good memories!

</comment><comment><USER29> wow really nice! will try it later. that topic made me join to do my first comment on HN lol. I wonder if there are many music producers around here? would be nice to exchange some ideas :)

</comment><comment><USER30> absolutely love when hn has audio related content. Thank you for sharing this, I will use this with dexed next time I'm horsing around with sound design.

</comment><comment><USER31> Really really cool. Can't wait to try this out.

</comment><comment><USER32> 404

</comment><comment><USER33> > _Do you want to allow downloads on "www.thisdx7cartdoesnotexist.com"?_

Nope.

</comment><comment><USER34> I had no idea what a DX7 cartridge was, but out of curiosity I clicked the "Click here to generate" link. It immediately downloaded a file.

I'm sure you have no malicious intent here, but my immediate reaction was that it's a virus or something bad. I immediately deleted the file. The experience felt like one of those scammy popups that initiates a download.

You should really put a label or something to indicate to the user that clicking the link is going to download something.

<comment><USER35> I think people are talking about "Click" differently.

\- There is a click on the link on this page that leads to the webpage. Nothing is downloaded at this time.

\- There is a click on the target webpage "Click to generate cartridge". Those who know what DX7 is, who are presumably a target audience, would understand this will generate a file.

For those who do not know what DX7 is or what's happening, well... why are you clicking in the first place - if you have no idea what'll happen, a file is a legitimate possibility;) - but I think mostly it'll differ whether they have "Always ask me where to download" (in which case it'll prompt for location), or "Always download in default folder", in which case yes indeed it'll download a file.

But at that point you've already clicked two times voluntarily on a strange page whose provenance or purpose you don't know, AND you have enabled "Don't ask me for downloads", AND you didn't bother to scroll down two millimeters for explanation but just clicked on first thing that said click me, soooooo... at _some_ point it's no longer author's responsibility and the cries lose their credibility ¯\\_(ツ)_/¯

<comment><USER34> "But at that point you've already clicked two times voluntarily on a strange page whose provenance or purpose you don't know"

How many times have you clicked on an HN submission that you already knew 100% about? This site is for people to showcase their projects, of course curious visitors are expected to poke around.

This app looked like a single page - it's not at all obvious it's even possible to scroll down. It resizes to the browser window so the FAQ is always hidden unless you scroll. This is quite obviously based off "this face does not exist", so its perfectly reasonable to expect it to play something in the browser.</comment></comment></comment>


Mobile App Hackers Wanted - <AUTHOR> http://ackuna.com/developers/home

<comment><USER2> you might try show:</comment>


CIA Chief: We'll Spy on You Through Your Dishwasher - <AUTHOR> http://www.wired.com/dangerroom/2012/03/petraeus-tv-remote/ <comment><USER2> That no-privacy-from-the-government future that Richard Stallman has been warning us about is finally starting to become reality. Only open source software and an encrypt-everything mentality will probably protect us.

<comment><USER3> Ubuntu is mostly open source/free software. Ubuntu integrates Amazon search as part of its local search, and that code is open source. (I'll assume also that it uses encryption; if it doesn't, it could easily be changed with no affect on my logic.) Stallman says that Ubuntu 12.10 is spyware.

Ergo, "open source and an encrypt-everything mentality" is not sufficient to protect us.

People can use fully secure software and encrypted connections to talk with friends via Facebook ... which stores the data and can reveal it to unexpected third parties.

In both case, people just don't care.

What will "protect us" is to convince people that these are things to worry about, with repercussions to the CIA or others who should try.

BTW, an encrypt-everything mentality can make things worse, depending on where the encryption occurs. If you see traffic between your web browser and a server somewhere, how can you verify that it's sending only the data that you expect it to carry? Perhaps a security hole has been exploited, and it's helping someone spy on you.

If all of the data in encrypted in the browser process, then it's hard for you to verify the data traffic going over the network, because it's encrypted. It would be better if you could insert your own inspectors in the data stream.

This can be done with a web browser via a proxy, where the proxy handles the encryption. Few people do that. Do you? How do you know HN isn't spying on you right now through your browser?</comment></comment>


How can an average joe publish a scientific breakthrough?  - <AUTHOR> Say I am an average joe and I made a breakthrough scientific discovery. How do I publish the work so that I am taken seriously, and ensure I get proper credit for it? <comment><USER2> First, said average joe must know the field, since it's otherwise difficult to know that something is a breakthrough - it could have been considered and rejected some decades previous.

Second, use a site like Google Scholar to find similar work in the area, or go to the library and do the same. This gives average joe an idea of which journals are relevant to the field.

Third, pick an appropriate journal, go to its web site, and follow its instructions to the authors when writing the paper. It's a good idea, though not required, to read some of the recent publications in that journal to get a sense of its style.

Another concern here is that some papers require a publication fee, and others don't. Some of the ones which require a fee are also disreputable, and will publish essentially anything in order to get the fee. See [http://www.biosciencewriters.com/Selecting-a-Target- Journal-...](http://www.biosciencewriters.com/Selecting-a-Target-Journal-for- Your-Scientific-Manuscript.aspx) for more details about how to select a journal.

Fourth, send in the paper, or as that previous link suggests, send in the abstract and ask the editor if the journal is interested in a paper of that sort. The paper (or abstract) submission might be rejected by the editor or reviewers, in which case it's a matter of picking another journal or improving the paper based on the comments. Or it might be accepted with some changes needed, or it might be accepted outright. In which the paper is published.

There are many resources on "how to write a scientific paper", such as [http://www.phys.unsw.edu.au/~jw/paper.html](http://www.phys.unsw.edu.au/~jw/paper.html) and even a book with the title "How to Write and Publish a Scientific Paper", which you can get from your library either directly or through InterLibrary Loan.

To increase the chances of recognition, average joe could also do a good job of making the paper readable and reproducible, with details that are cognizant of the history of the field and the reasons why the new discovery should be considered "breakthrough" rather than "novel." Said joe could also attend relevant meetings and talk with others who are interested in the topic, and even present that information.

<comment><USER3> Pretty much that translates to 'don't be an average joe; study to be an actual scientist'? The emphasis on putting discoveries in the correct orthodox format is unsettling; would a real discovery be ignored if the report was mis- formatted? Something is wrong then.

<comment><USER2> I don't understand your comment. Nothing I said requires someone to "study to be an actual scientist" nor did I emphasize an orthodox style. How did you infer that? For that matter, how do you define "actual scientist" any different from "average joe who makes a breakthrough discovery"?

There is certainly a required style - a paper needs an abstract, it needs a body, and it needs a references section. This is because it fits into a larger system of use. People read the abstract to get a sense of if the paper is relevant to their interests. If so, then they might spend the money to get the rest of the paper, or spend the time needed to fully understand it. People use the references to get a better sense of the background required to understand the paper. Only people who fiercely believe they are exceptional (ie, not an average joe) might think they don't need to include this information.

Another part of the orthodoxy is that it needs to be written in the language of the journal. Angewandte Chemie only accepts papers in German, so if you submit a paper in Malay then it's not going to be accepted no matter how good it is. It also needs to be relevant to the interests of the journal - even if it's in German, Angewandte Chemie won't publish a paper about low-energy neutrino detection.

The "instructions to the author" describe these sorts of points. If that is too much orthodoxy for your hypothetical average joe, then joe will have a hard time doing anything, which makes joe decidedly not average.

On the other hand, editors will usually bend over backwards to get a seriously ground-breaking piece published. They just have to be able to understand that it's 1) ground-breaking, 2) relevant, and 3) likely to be true. Joe's first step is to convince the editor of that. If no editor can be convinced, then it's unlikely that other, non-editors will be convinced.

You mentioned "mis-formatting" as a possible hang-up. To start, this means you haven't read many papers, because I find mis-formattings all the time.

Remember, editors in nearly all cases are working joes who volunteer their time. As the UNSW link points out "Even sending the [manuscript] back to you, unread, with a covering note saying "Read the Instructions to authors" takes time." \- time that the editor would rather spend doing research. The problem is that editors get a lot of crank submissions and a lot of poorly done research. These are disproportionately poorly formatted. Editors are human, and if they see something that looks nothing like a scientific paper, it's much more likely to trigger the "crank" flag than to be seen as a breakthrough paper.

There's a balance at work here. A novelist who just wrote the next Great American Novel, but wrote it using a leaky ball-point pen on tissue paper, making the result difficult to decipher, will find it harder to publish. Xkcd #483 points out that the probability of new words created by the author is inversely proportionally to the probability of the book being good. And so on, and so on, and so on.

I think one of the points of confusion here is that "ground-breaking" is a very broad term, almost to the point of uselessness. _Every single published scientific paper_ is supposed to break new ground. Some find a new sandbox, others a back yard, others an island, and a very few find a new continent. Without more information about your hypothetical case, it's impossible if this is something like "discovered antigravity" or "found a new intermediate of acetylene catalysis on the Platinum(100) surface", but odds are that it's not something like the first, so the requirement for convincing people that it's actually ground-breaking is higher.

For the record, scientists are average joes in just about every measure, except that they can put some extra letters before or after their name. Don't get hung up by thinking they are special in any way. Also, editors have no clue on the background of a new author, and I've seen many papers where the author has no institutional affiliation, so it's not like they can tell if someone is/isn't a scientist. "By your words are ye known", to misquote Matthew. To directly quote George Lundberg, editor of JAMA, after publishing a paper which included Emily Rosa, a 9 year old, as co-author: "Age doesn't matter. It's good science that matters, and this is good science".

<comment><USER3> My point was the one you just made - "Editors are human, and if they see something that looks nothing like a scientific paper, it's much more likely to trigger the "crank" flag than to be seen as a breakthrough paper."

The format is the message to some degree. Lazy editors help perpetuate this as you suggest.

<comment><USER2> It's been 50 years since McLuhan's "The medium is the message". It's not really an aspect of laziness, but intrinsic to all communications.

If you are an editor and you receive a 100 page treatise which starts out with 50 pages on the numerology of the Great Seal of the US, 25 pages on the quality of the author's boogers, and 24 pages tracking the lineage of David Hasselhoff back to Adam, then are you really "lazy" if you missed the elegant 1 page proof of Fermat's Last Theorem on page 78?

Odds are most editors would reject that paper after reading the first page or two and leafing through the rest to double-check that it was more of the same dreck. Yes, I would place the fault more on the author than the editor for this case. Wouldn't you?

<comment><USER3> Strawman. Instead suppose you received the letter Tomas Hardy received from a crank called Ramanujan a century ago. Today mightn't it be dismissed out of hand? And missed one of the stellar minds of the millennia.

</comment></comment></comment></comment></comment></comment><comment><USER4> A couple of points:

1\. Even experienced academics / researchers have difficulty in getting published. Especially if their discovery contradicts any widely accepted theories.

2\. How do you know that yours is a breakthrough discovery? Have you read up on all the publications in the relevant field(s)?

3\. As a general rule, anything you write for publication needs to cite the relevant existing knowledge and then show how your contribution builds upon that, extends it, etc.

I assume that announcing your discovery is time-critical. Then I would suggest that you setup a website, that you own and control. Publish the material on that site. Doing so establishes that time of release and the facts. Then you could push your material to [http://arxiv.org](http://arxiv.org) \- that might require some seeking out of connections, but you have protected yourself by publishing on your website. Finally, submit to Hacker News, Reddit, etc so that the "news" gets picked up.

If your discovery is a breakthrough you will generate some interest. Of course, be prepared for the trolls and all those who are protecting the status-quo.

<comment><USER2> Hmm. I've seen that it's pretty easy to get published. What's difficult for experienced academics / researchers is that they want to get published in journals with a high prestige rate. This is used as a proxy for one's "impact" on the field, with effects on one's standing in a department, pay grade, career advancement, etc.

Other than that quibble, I agree with your points.

<comment><USER4> As you say in your reply to the question, there are many journals who will publish almost anything just to get paid. We have all heard about the gibberish papers that get publish in Nature, etc.

Even for the average joe, publishing their findings in such a journal will very likely trigger the "crank" flag and thus erode any credibility.

<comment><USER2> You're right. I was thinking more about priority, and forgot the original question also included "taken seriously."

</comment></comment></comment></comment><comment><USER5> I think Schneier's "Memo to the Amateur Cipher Designer" ([https://www.schneier.com/crypto- gram-9810.html#cipherdesign](https://www.schneier.com/crypto- gram-9810.html#cipherdesign)) is relevant to most fields.

In it he forcefully makes the case that unless you really understand all the science at hand you can't possibly expect that you've actually invented anything worthwhile. He also lays out how you can make a credible case for your breakthrough -- it's hard, but if you do it clearly you'll be able to get someone's attention.

</comment><comment><USER6> Yes.

Example: "A scientific experiment performed by a high school student, later published in The Journal of Medical Toxicology, suggested that a domestic electric iron at its hottest setting (at least 400 °F (204 °C)) used for at least 5 minutes should destroy all anthrax spores in a common postal envelope". - From wikipedia. Source contained within the article.

Now did this student probably have help with a formal publication? Most likely. But the answer to your question is yes.

</comment><comment><USER7> The same way all scientists do.

Except when you submit to the journal just put "No affiliation" in the institution field.

<comment><USER4> Helps to select journals that do double-blind reviews. Eliminates possible bias against non-affiliated submissions.

</comment></comment><comment><USER8> A trick Tim Ferriss (4HWW) employed was to befriend very specific bloggers and targeted authors who frequently wrote about aligned subject matter. He would very causally offer to share tidbits of what he was working on, sensing it would pique their interests. Steadily he was able to build buzz and street- cred via a non-traditional route. Quite brilliant strategy actually.

<comment><USER4> Your idea can be equally applied to academics. As suggested elsewhere in the replies, you could identify academics who are already working in the relevant field by doing a bit of background reading. Then use carefully use the Tim Ferriss trick.

Academic institutions are, generally, keen to be seen to be collaborating with industry. So if said joe can work that angle there might even be collaborative research grants available to the cooperating institution.

As mentioned in my reply, it might be prudent to establish priority by self- publishing on average-joe.com and a reputable internet scientific archive like ArXiv. Doing so mitigates the risk of somebody else claiming the discovery as their own.

</comment></comment><comment><USER9> You could also start by contacting a professor that does research in the field. Not all of them would be interested in helping, but I think my advisor would entertain the idea if someone off the street approached him with something interesting. Having a second author that is respected can go a long way to getting a paper published and recognized by a wider audience.

</comment><comment><USER10> In a respected academic journal in the field.</comment>


Predator Object Tracking Algorithm - <AUTHOR> http://www.gottabemobile.com/2011/04/01/predator-object-tracking-algorithm-the-future-of-computer-interface/ <comment><USER3> The key thing seems not to be the specific algorithm, but the idea of using images obtained during performance for training - an algorithm that can do that. An early prototype algorithm, with lots of room for tweaking - and there are likely radically different learning algorithms, as yet untried or undiscovered, that work better. It seems that in the past, performance images has been religiously separated from training image.

It reminds me of early approaches for robot walking, which tried to plan everything out, and more recent approaches of incorporating feedback - <USER2> turned out to be much simpler and work better. Sort of waterfall vs. agile.

It seems a tad unreliable (his "mouse pointer" was lost a few times while still on screen), but this is still a prototype. It's really impressive how the panda was tracked in 360 orientations - probably helped by the distinctive colouring.

New input devices (this, kinect, multi-touch) and applications that can really use them, may be a main source of disruptive innovation in computers for the next decade or two.

<comment><USER4> The tracking was incredibly good. The first seconds of each example are a little off because the algorithm doesn't have ANY training data to work with. It's 100% ad-hoc.

The tracking improved during the mouse pointer example (which I found incredibly impressive). The point he was making during that example was that it learns the different scales/rotations of objects on the fly and tracking improves automatically.

<comment><USER3> Before commenting, I viewed it a second time, pausing it several times (it's at 1:20, if you'd like to confirm the following). After about 10 seconds of training data (500 frames), he starts to draw with it. It loses tracking four times (not counting the two times his hand goes off-screen), and it's not obvious to me why - there don't seem to be major rotations or changes of his finger placement. In practical use, that would be annoying.

btw: my comment originally included praise for his work - but I thought his merit was obvious and that it distracted from my comment's point, so I deleted it. Instead, I'll just note that the first telephone also had lots of room for improvement - practically, the first of anything does. The cool thing was the idea of the telephone, and then _making it real_. How good it was is irrelevant compared with that it became real. It doesn't take away from the immense task of doing something that had not been done before or even imagined. Quality is not as crucial, because once you have the basic thing, it's (relatively) easy to iterate to improve it. I think having the idea and making it real deserves far _far_ greater admiration than the quality of the prototype algorithm and implementation. Just as with the telephone.

</comment></comment></comment><comment><USER5> This is massively ground breaking. You'll get it if you've used motion tracking on several game interfaces and had to make perfectly white backgrounds with bright lights to make it work. This is incredibly accurate - really game changing stuff.

<comment><USER6> >This is massively ground breaking.

Sounds like you're used to bad algorithms. I think there is a serious disconnect between the state of the art in computer vision and what's used in industry.

The demo was cool, but the techniques are not _that_ revolutionary. From a cursory glance through the papers, it is basically AdaBoost (for detection) and Lucas-Kanade (for tracking), with a few extensions.

Not to discount the guy's work at all, it's very cool and does a good job of pulling together existing algorithms. But not groundbreaking in the sense of, say, Viola-Jones was for object detection.

<comment><USER7> Spot on.

There's a lot of current work going on that effectively splits computer vision into multiple parallel tasks for better results but uses previously well known techniques (PTAM is another good example).

As an aside, I read through the paper and it doesn't look like this could track, say, your index finger separately from other fingers if, for a moment, your hand was occluded. This pretty much bars using this exclusively in a Minority Report style interface (you would need hand pose tracking like the stuff Kinect does). Though, I'm just re-iterating your point that this isn't the second coming of computer vision.

That being said, there are some really good ideas here.

<comment><USER8> I don't understand why everyone seems to have such a hardon for Minority Report-style systems. Gorilla arm pretty much rules that out from the start, and a tablet is more natural anyway.

A trackpad with a separate screen would be optimal (so you don't have to look at your hands).

<comment><USER9> Gorilla arm would prevent people from using that kind of system to replace mouse and keyboard, but I don't see why it could not work for some applications. I can think of several use cases where I would like a UI that does not require me to touch the hardware (think cooking or watching videos in the bath tub).

</comment></comment></comment></comment></comment><comment><USER10> As this doesn't seem like an April fools joke (some of the papers were published last year :-)) its interesting to think about it in the context of what it might change. That being said I don't doubt for a minute that the university has locked up as much of the technology as possible in patents but that is another story. We can speculate about what it will be like in 20 years when people can do this without infringing :-)

Clearly it could be applied immediately to robotic manufacturing. Tracking parts, understanding their orientation, and manipulating them all get easier when its 'cheap' to add additional tracking sensors.

Three systems sharing data (front, side, top) would give some very good expressive options for motion based UIs or control.

Depending on how well the computational load can be reduced to hardware small systems could provide for head mounted tracking systems. (see CMUCam [1] for small)

The training aspect seems to be a weak link, in that some applications would need to have the camera 'discover' what to track and then track it.

A number of very expensive object tracking systems used by law enforcement and the military might get a bit cheaper.

Photographers might get a mode where they can specify 'take the picture when this thing is centered in the frame' for sports and other high speed activities.

Very nice piece of work.

[1] <http://www.cs.cmu.edu/~cmucam/>

<comment><USER11> _Depending on how well the computational load can be reduced to hardware small systems could provide for head mounted tracking systems_

He's clearly developing it on his laptop with a shitty webcam. That's why this is amazing. Screw robotic manufacturing, this is for my phone.

<comment><USER7> Phone != Laptop.

It says he's running on a "Intel Core 2 Duo CPU 2.4 GHz, 2 GB RAM" according to his website. As a good rule of thumb, computer vision runs about an order of magnitude slower (10x) on a phone (like an iPhone) than on a desktop/laptop.

Also - a crappy webcam actually makes things computationally easier because there's less data to deal with. In a lot of computer vision algorithms the first step is to take input and resize it to something that can be computed on in a reasonable time frame.

<comment><USER11> _It says he's running on a "Intel Core 2 Duo CPU 2.4 GHz, 2 GB RAM" according to his website_

I bet he isn't using the GPU though.

 _Also - a crappy webcam actually makes things computationally easier because there's less data to deal with_

Perhaps, but lens distortion, motion blur and a rolling shutter don't make things easier.

Anyway, the inventor himself claims a phone implementation is feasible.

<comment><USER7> Yep, I'm sure he isn't. I don't doubt that you could optimize this algorithm to run on a phone but that takes an insane amount of effort and expertise and is a feat in and of itself. The word lens guys, for example, spent about a year porting from an optimized C implementation on i386 to ARM for the iPhone - they even initially used the GPU but decided that the overhead of shuffling data between buffers wasn't worth the advantage gained by the iPhone's measly GPU (which only had 2 fragment shaders at the time I think).

Also, completely agree on how camera blur would worsen the accuracy of said algorithm, I was trying to point out that it would run faster on a lower quality camera (with the caveat that it might not work nearly as well).

</comment></comment></comment></comment></comment><comment><USER12> Interesting that TFA mentions "Minority Report-like interfaces" several times when: 1.) The Minority Report interface is the canonical example of a UI that is very impressive visually, and is beautifully mediagenic; but is hideously fatiguing and impractical in a real world scenario. (Hold your hand out at arm's length. Okay, now hold that pose for eight hours.) 2.) The MR UI has actually been commercialized, and has entirely failed to take the world by storm.

Also, computer vision demos are trivially easy to fake, and it's even easier to make an impressive demo _video_. You can have the guy who invented it spend a couple hours in front of the camera trying it over and over, then edit it down to three minutes of the system working perfectly. It wouldn't be nearly as impressive when you have an untrained user trying it live, in the field.

</comment><comment><USER13> From his webpage at Surrey: "We have received hundreds of emails asking for the source code ranging from practitioners, students, researchers up to top companies. The range of proposed projects is exciting and it shows that TLD is ready to push the current technology forward. This shows that we have created something "bigger" than originally expected and therefore we are going to postpone the release of our source code until announced otherwise. Thank you for understanding."

Also, the message where he states the source code is under GPL 2.0 dissapeared. Seems that he chose to leave Richard Stallman empty handed and go to the dark side.

<comment><USER14> Did anybody get a GPLv2'd copy?

<comment><USER13> Here you go: <http://news.ycombinator.com/item?id=2411459>

</comment></comment></comment><comment><USER15> _With something like this we could have truly "Minority Report" style human- computer interface._

Actually, the guy who invented the Minority Report interface commercialized it and has been selling it for years. Product website: <http://oblong.com> Edit better video: [http://www.ted.com/talks/john_underkoffler_drive_3d_data_wit...](http://www.ted.com/talks/john_underkoffler_drive_3d_data_with_a_gesture.html)

<comment><USER11> Predator doesn't need gloves

<comment><USER15> Well, he mentioned a "Minority Report"-style interface, and there it is. At least they could use cooler gloves: [http://singularityhub.com/2010/05/28/mits-ridiculously- color...](http://singularityhub.com/2010/05/28/mits-ridiculously-colorful- glove-is-the-latest-hand-tracking-interfacevideo/) :)

</comment></comment></comment><comment><USER6> Technical details here, with links to relevant papers at the bottom. <http://info.ee.surrey.ac.uk/Personal/Z.Kalal/tld.html>

<comment><USER16> Unfortunately you cannot download the source code, the link is disabled. And the GPL license he says he is using requires that the source code must be available for download without any restrictions like "send me an email" or "create an acount".

Edit: I sent him an email :)

<comment><USER17> He's licensing the code to _you_ under the GPL. He's free to use his own code however he likes.

<comment><USER18> ...and you're free to redistribute it!

<comment><USER17> Consider it done.

<comment><USER18> Done? Done where?

</comment></comment></comment></comment></comment></comment><comment><USER19> Ok so the fact that he has produced this himself, using off-the-shelf commodity laptops etc is really great.

But this technology doesn't seem new to me - technology already exists for surveillance cameras in police and military helicopters to track an object like a car and keep it in vision as the helicopter turns and maneuvers.

Likewise, facial recognition - both statically and within a video stream - isn't new either.

Not taking anything away from the guy, but just wondering what it is I'm not getting that is new/amazing with this particular implementation?

</comment><comment><USER20> The face recognition part was _too_ good for not picking up the face of other people. Or was it detecting just the _most_ similar face?

But facial recognition aside, the uses are endless. If it can be brought to the same level Kinect drivers are at, but with _finger tracking_ and _no custom hardware_ , this could change everything.

</comment><comment><USER21> Bah! I was hoping to download the source (from here: <http://info.ee.surrey.ac.uk/Personal/Z.Kalal/tld.html>) and check out his algorithm, but he requires you to email him with his project. If anyone knows how the algorithm works, or where it is described in detail, I'd love to read that!

Absolutely amazing stuff!

<comment><USER13> What if you just... email him and ask for it?

<comment><USER21> Don't really have a project, just curiousity...

<comment><USER22> I certainly intend to drop him an email and see if he's willing to share his stuff with an interested compsci undergrad. It's always worth asking - he's probably just doing it for metrics.

<comment><USER23> Let us know what happens please, I'm also interested.

</comment></comment></comment></comment></comment><comment><USER24> Every time something like this comes out, I feel us taking a step away from "video camera mounted on a robot where the eyes should be" and a step toward real perception. I always wonder though, if a computer can one day recognize all different types of hands, could it draw a new one?

<comment><USER23> To answer your question you can watch this presentation by Prof Hinton: <http://www.youtube.com/watch?v=AyzOUbkUf3M>

He shows how he trained a restricted bolzmann machine to recognize handwritten numbers and how he can run it in reverse as a generative model, in effect the machine 'dreams' about all kinds of numbers that it's not been trained on but nonetheless makes up properly formed legible digits.

</comment></comment><comment><USER25> World becoming a better place with such code available for public to be built up on and not only to military in homing heads. I guess it is one point for "Make something free that was initially available for pay?" Just like "plenty of fish" doing... <http://www.vti.mod.gov.rs/vti/lab/e-tv.htm>

</comment><comment><USER26> _> Can Predator be used to stabilize and navigate a Quadcopter?_

 _> That is not straightforward._

anyone know why not?

<comment><USER11> Probably because this is just 2D tracking rather than 3D mapping. But tracking can be applied to mapping, for example: <http://www.robots.ox.ac.uk/~gk/PTAM/>

So the question is, can predator be used to improve mapping? AFAIK, that would require a) automatically selecting trackable objects and b) tracking many of them simultaneously. That PTAM technique tracks thousands, but with tracking this reliable, you might get by with much less.

So, more work is required to apply it to mapping, but I have to imagine it could be done. And seeing how well predator adapts to changes in scale, orientation, and visibility, I suspect it could improve mapping considerably.

<comment><USER27> "AFAIK, that would require a) automatically selecting trackable objects and b) tracking many of them simultaneously."

I'm not really sure I understood you, but this two problems are already solved. Hugin[1] for example has automatic control point generation for photo stitching. Were you talking about something else?

[1]<http://hugin.sourceforge.net/releases/2010.4.0/en.shtml>

<comment><USER11> Yeah, there are many ways to detect features but I haven't read the paper yet and I don't know what kind of features it wants and if there are any problems with choosing them automatically. Like, can it group features into distinct objects without a human pointing them out?

</comment></comment></comment></comment><comment><USER28> The video where system tracks Roy from IT Crowd sucking his fingers is epic:) <http://www.youtube.com/user/ekalic2#p/u/2/tKXX3A2WIjs>

</comment><comment><USER29> It must be shown what to track. That is, you (or some other external system) define the "object" to be tracked by clicking on a bounding box.

A good addition would be an algorithm that automatically delineated "objects" in the visual field, then passed them to Predator.

Which raises another question: how many "objects" can Predator simultaneously track (with given horsepower)?

</comment><comment><AUTHOR> Here is the code: <https://github.com/abelsson/TLD>

</comment><comment><USER30> Wow, this is pretty amazing stuff. I sincerely hope this guy makes a pile of money off this.

</comment><comment><USER31> This looks impressive. I've written tracking systems previously, so can appreciate that it's not an easy problem to solve.

</comment><comment><USER32> Extremely impressive. Can't wait to see how this is applied to everyday problems. Kudo's to this gentleman.

</comment><comment><USER33> This looks awesome! I want to build this into apps for iPad 2.

</comment><comment><USER34> Uhhh... 'Predator?' What's his next project, SkyNet Resource Planning? This seems like an April fools to me. I mean I'm sure he's done work in the area... but the article is dated April 1 and the previous literature didn't mention 'Predator.' I could be wrong, but it seems too advanced, and scary.

<comment><USER34> So nobody else found it suspicious that the source code was promised but not actually available. And now not even promised.</comment></comment>