Show HN: Fluor a macOS app to switch Fn keys depending on active application - <AUTHOR> https://github.com/Pyroh/Fluor <comment><USER2> I may add that changing to fn keys depending on the current app can be set in the keyboard settings of MacOS as well.

<comment><USER3> That's interesting. How?

<comment><USER4> Not certain, but the built in setting may only be for Macs with the Touch Bar, where it's available under System Preferences -> Keyboard -> Shortcuts and choosing the "Function Keys" category.

<comment><USER5> It's not possible unless the app has it enabled.

[http://appleinsider.com/articles/16/11/22/how-to- customize-t...](http://appleinsider.com/articles/16/11/22/how-to-customize- the-macbook-pro-touch-bar-in-compatible-apps)

</comment></comment></comment></comment><comment><USER6> It doesn't work with the Kinesis Freestyle2 keyboard, in case you were wondering. Damn, what the fuck did Kinesis do with this thing...? I haven't found any software able to manage the Fn key on this keyboard.

<comment><USER7> The Pause/Break key on the Kinesis Advantage (acting in macOS as F15) raises the brightness for me, but the Scroll lock key (which is supposed to lower brightness / act as F14) doesn't (it seems to act as Tab instead

Edit: This seems to be because those are mapped to F14/F15 respectively in macOS by default. Apparently an non-Apple external keyboard cannot send Apples media keys, so unless your keyboard has its own media keys it will not work.

The Kinesis Advantage supports enabling media keys by pressing =n (see [http://superuser.com/a/403765](http://superuser.com/a/403765))

<comment><USER6> The Freestyle 2 for Mac has working multimedia keys, which double as F keys when you press Fn - basically to mirror standard Apple keyboards. Unfortunately there must be some internal hacking involved, because the Kinesis does not respect the System Preference for swapping multimedia with F keys; I was hoping to work around that with some app, but nothing seems able to intercept most of its multimedia keys on Sierra. Tonight I'll try with khd [1], if I can figure out how it's supposed to work...

[1] [https://github.com/koekeishiya/khd](https://github.com/koekeishiya/khd)

</comment></comment></comment><comment><USER8> Palua (which I use for years) offers the same but it's not free (1 Dollar). Currently I cannot find it in German Appstore. This one is "only" open source and free, so it's great! :)

<comment> yoz-y It is no longer in the french store either, it seems that it has been discontinued.

<comment><USER8> Interesting. I bookmarked Fluor now for future usage. My Palua still works nowadays.

</comment></comment></comment><comment><USER9> I've been using a hacked up solution to do this using ControlPlane (to detect the foreground application) and fntoggle ([https://github.com/nelsonjchen/fntoggle](https://github.com/nelsonjchen/fntoggle)) for a while.

It's mostly for use with IntelliJ's IDEs, but it's been a real productivity boost for me. Will definitely be checking this out as a replacement.

</comment><comment><USER10> This is wonderful.

If you're looking for more customization, there's always Karabiner (or Karabiner Elements for the latest version of macOS), but that is a hefty piece of software. This is great for when I do not need that level of configuration. Well done.

</comment><comment><USER11> I like the idea - but for almost all single-use tools like this, I find Hammerspoon can do it with a few lines of Lua: [http://www.hammerspoon.org/](http://www.hammerspoon.org/)

<comment><USER12> I actually specifically use this tool because I have been unable to do this through Hammerspoon without resorting to AppleScript GUI scripting of the preferences pane. This is much more elegant, though I would definitely love it if this functionality were manageable through Lua scripts.

</comment></comment><comment><USER13> I really like this idea but it doesnt work with the touchbar.

<comment><USER4> For machines with the Touch Bar, this can be achieved using System Preferences -> Keyboard -> Shortcuts and choosing "Function Keys" from the list of categories. You can then specify apps that should show function keys instead of app controls by default. (i.e. inverts the behaviour of the fn key in the listed apps.)

<comment><USER13> Thanks!

Thats exactly was I was looking for.

</comment></comment></comment><comment><USER14> Awesome, I've wanted this for a long time. Does it only work on macOS or also earlier versions (Yosemite?)

<comment><USER15> OSX 10.11 or later.

</comment></comment><comment><USER16> Love it. Use it. Thank you.

</comment><comment><USER17> Awesome, thank you :)

</comment><comment><USER18> Just what I was looking for. Thanks!!!

</comment><comment><USER19> You can do the same in macos settings.

</comment><comment><USER20> > Fluor is released under the MIT license. See LICENSE for details.

> Some of fntoggle's code was used. As its author wrote it could be released > under the GPL2 license.

Then Fluor also needs to be released under a GPL license, doesn't it? See [https://www.tldrlegal.com/l/gpl2](https://www.tldrlegal.com/l/gpl2)

<comment><USER21> Yes. Fluor author can provide code that they have written under a dual license of both MIT and GPLv2, but users need to be able to get the code under GPLv2 in order full fill the conditions (and to get things like the patent grant).

</comment></comment><comment><USER22> Can't you already do this without a 3rd party app?

[http://i.imgur.com/khCkMNf.jpg](http://i.imgur.com/khCkMNf.jpg)

edit: Oh, this app isn't about the Touch Bar! It's about toggling the functionality of the regular function keys between F1, F2, etc... and their media/shortcut labels.</comment>


New York's Wealthiest Cut Losses as Manhattan Real Estate Falters - <AUTHOR> https://www.wsj.com/articles/new-yorks-wealthiest-cut-losses-as-manhattan-real-estate-falters-1543508960 <comment><USER2> As far as I can remember -- my entire adult life -- I've heard about this great real estate bubble in the big cities. Every year I hear NYC and SF are about to crash because the growth is not sustainable.

I assume this myth has been around much longer. Perhaps people know what was being said or written in 90s, 80s, 70s and 60s.

But in spite of all this, in spite of temporary slow downs and slight blips, the broader market just becomes more and more expensive. Numbers that seem to make no sense, or seemed absurd even 5 years ago get blown past.

I don't know what the reason is, but I would love to read a truly satisfactory explanation for this.

<comment><USER3> Texas does not have state income tax but has high property tax (rightly in my opinion)[1]. 1.973% in Austin,TX

California has high state income tax but low property taxes.[2]. 0.625% in SF

The worst is New York. NY has high state income tax and high property taxes[3]. 1.925% in nyc. That is insane. I just don't get how people put up with this and where all that money is going to

[1] [https://smartasset.com/taxes/texas-property-tax- calculator#I...](https://smartasset.com/taxes/texas-property-tax- calculator#IZMmjqscrb) [2] [https://smartasset.com/taxes/california-property- tax-calcula...](https://smartasset.com/taxes/california-property-tax- calculator) [3] [https://smartasset.com/taxes/new-york-property-tax- calculato...](https://smartasset.com/taxes/new-york-property-tax-calculator)

<comment><USER4> >I just don't get how people put up with this

They don't. In the past couple of years staples of the Northeast such as Wawa and Yuengling can be found in places as far away as Florida. The reason for this is because of the number of people leaving the Northeast due to the fiscal pressures that you describe.

Also, NJ is just as bad as NY when it comes to taxes. My parents live in Central Jersey, and their property taxes are insane.

</comment></comment></comment><comment><USER5> I moved to Manhattan 10 years ago and it's been really sad to watch the decline, both in commercial and residential, more and more full city blocks of store fronts sit empty, and friends who have bought homes are experiencing a depreciation in their investments. Wealthy folks from outside the US have or had a "cottage" in Manhattan, but people are trying to sell their 2nd or 3rd houses, and people are not buying a 2rd or 3rd house. My biggest concern, however, is if the changes in weather and environment are going to impact this Island.

<comment><USER6> NYC landlords need to stop waiting for the big pay day and start dropping prices.

And that appears to be what's happening. Commercial landlords apparently are still waiting, hence the empty storefronts, but it seems the residential landlords have finally realized the market needs to correct.

<comment><USER5> I was speaking to the owner of the building I work in (335 Madison) about this, he said because so much is owned by families and paid off, (his included) they can afford to leave them empty vs lower the rent, therefore lowering the property values that are leveraged.

<comment><USER7> Curious - what's the property tax rate? Is there a tax if it's not occupied?

<comment><USER8> We do not have a vacancy tax, no. There is lots of discussion locally about adding one in some form, for both residential and commercial properties.

</comment></comment></comment></comment></comment><comment><USER9> The high end of the NYC real estate market was always just effectively made up big numbers. $15 million home, $25 million home. It's hard to objectively assign real values to such places. Frankly though if you can't afford to blow a few million on the speculative ultra high end market then you have no business owning such properties.

While all NYC area real estate is pricy, outside the ultra high end stuff the market isn't seeing such fluctuations.

<comment><USER10> Except that in the article it said that even the sub-million dollar homes were being pushed down by the same forces.

Tax law changes, higher interest rates, and currency controls on foreign buyers means it costs more in real wealth to buy a home, so the prices shrink to match. (or they don't shrink and the houses just stay on the market)

<comment><USER2> I thought the article said the sub-million market was pushed down by different forces.

Below million market was pushed down by interest rates.

The over million market was pushed down by capital controls on foreign buyers and tax law changes.

This seems to support what the OP was saying.

</comment></comment></comment><comment><USER11> This is good news for the vast majority of people in NYC. The same thing is happening in Seattle where I live, and I'm thrilled.

<comment><USER12> It's a poor headline as it's not just the wealthiest:

> But agents said the slowdown extends beyond new condos, hitting every > segment of the market. While the cooling is more significant at the high- > end, smaller units also are affected. In the third quarter, the median price > for a one-bedroom Manhattan home was $815,000, down 4% from the same period > in 2017. The volume of sales fell 12.7%.

> "What's most significant about 2018 is that even the sub-$1 million market > is slowing because of rising mortgage rates," said appraiser Jonathan > Miller. Rates for a 30-year mortgage averaged 4.81% in late November, up > nearly a full percentage point from the beginning of the year, according to > Fannie Mae and Freddie Mac.

Higher interest rates and lack of SALT deduction are a big double whammy for the non uber-wealthy (who can afford to move to optimize taxes).

<comment><USER13> Being able to pay (or be qualified to get a mortgage to pay) $815k for a home kind of makes you 'wealthy', no?

<comment><USER12> It probably would in Buffalo, but not in Manhattan. The median home price in Manhattan is nearly $1.3m:

[https://www.zillow.com/manhattan-new-york-ny/home- values/](https://www.zillow.com/manhattan-new-york-ny/home-values/)

<comment><USER14> Fortunately there is an endless supply of dreamers from bumbaf*ck that will be impressed by your modicum of six-figure stability in Manhattan. At least a few weeks after they've realized the hopelessness of Carrie Bradshaw fantasy and understand the value of a 400 sq. ft. walkup.

</comment></comment></comment></comment></comment><comment><USER15> I think Manhattan real estate is overpriced. The price should be lowered.

And about "high-end dominated markets." I think it's true that there is simply not enough of billionaires and Saudi sheikhs to fill 10 million bucks apartment buildings, and there are simply too many places in the world competing for billionaire level clientele. People developing such projects are too optimistic, and omit that they will never make money on them because there are too many ifs in their plans. Simple demand/supply math is not on their side, and they lack any unique advantages to lure away wealthy buyers from other places.

From all above, I conclude that high-end real estate is a very, very, very risky business.

News coverage, and popular public stereotypes also play a role there. In case of Shenzhen for example, the press is happy to report that average price continues its surreal non-stop growth, while completely forgetting to mention that the _median_ price was going down for at least 5 years. The high-end of the market is being dominated by big name speculators, and low-end with "moms and pops investors."

<comment><USER16> > I think Manhattan real estate is overpriced. The price should be lowered.

NYC isn't a centrally managed economy. Things are worth precisely what people are willing to pay for them. There's no way to force prices down.

And you thinking it's overpriced doesn't matter when others are willing to pay those prices. Clearly that means that price is accurate, you're just not willing to pay it.

<comment><USER17> I think you may be confusing what people are "willing" to pay and what people are "forced" to pay. We do not operate in "free market"

</comment></comment></comment><comment><USER18> There's been a predicted glut of luxury apartment condos for years now, as all the new luxury buildings on the 50s start coming online.

Add in increased Chinese export vigilence, tariff wars, slowing economy, and the tax overhaul that targeted blue states, and of course the multi-multi- millionaire apartments and condos are taking a hit.

The thing is, and this article leaves out, is that that luxury apartment glut was originally expected to last 3-5 years. Then rising population rates and etc were supposed to take over again.

So your sub-million dollar condos might take a hit for the next few years, but barring another economic recession or crash, its probably just temporary (read, possibly a good time to buy).

For truly high $ places, where all the other things on the list of causes above will have much more effect, it might be worth sitting out for a while.

<comment><USER19> I don't know about NYC, but in SF, $1M is a very reasonable price for a condo for a non-1%er. If you and your partner are both in tech and want to get a two bedroom, for instance.

I definitely wouldn't put the threshold for uber-rich money parking or buying a pied a terre at $1M

</comment></comment><comment><USER20> [https://outline.com/v4EbyE](https://outline.com/v4EbyE)

</comment><comment><USER21> I don't see why this is not obvious to most people.

The rich get outsized benefit of compounding, outsized benefit of money managers saving their losses in every bust, outsized benefit of buying assets at rock bottom prices and then outsized benefit of compounding again.

Every single cycle, the rich get richer because of their resources.

How is this not obvious? The problem is not wages. The problem is richness from speculation.

</comment><comment><USER22> Any way to get around the paywall?

<comment><USER23> Paying.

<comment><USER24> Or not paying... [https://outline.com/v4EbyE](https://outline.com/v4EbyE)</comment></comment></comment>


Embarcadero Bridges Gap From Desktop to Mobile - supports iOS in C++Builder XE5 - <AUTHOR> http://www.marketwired.com/press-release/embarcadero-bridges-gap-from-desktop-mobile-with-new-ios-support-cbuilder-xe5-1861218.htm

<comment><USER2> According Embarcadero's website Delphi XE5 offers all the same plus Android support: [http://www.embarcadero.com/products/delphi](http://www.embarcadero.com/products/delphi), [http://www.embarcadero.com/products/cbuilder](http://www.embarcadero.com/products/cbuilder). If they're targeting mobile developers I wonder why Embarcadero hasn't released a cheap "indie" version of Delphi yet. Last I checked it had much better compile times than C++Builder and the language itself could easily be marketed as a "friendlier C++". Meanwhile, outside of some larger companies where it's entrenched Delphi's popularity is waning.

Edit: Now that I've looked at their online store through a US proxy I see that they have: [https://store.embarcadero.com/542/catalog/product.s3703/lang...](https://store.embarcadero.com/542/catalog/product.s3703/language.en/currency.USD/). Not that the conditions are very good:

> _If you're an individual you may use the Starter Edition to create apps for > your own use and apps that you can sell until your revenues reach $1,000 per > year. If you're a small company or organization without revenue (or up to > $1,000 per year in revenue), you can also use the Starter Edition. Once your > company 's total revenue reaches US $1,000, or your team expands to more > than 5 developers, move up to the Professional edition with an unrestricted > commercial license._

The upgrade from Starter to Professional costs $899.00.

<comment><USER3> I used to love Borland tools.

Having learned Turbo Pascal before C, I never liked C, given the capabilities of Turbo Pascal.

Type safety, blazing compile times, modules, system level programming, objects.

Management killed Borland products thanks to their continuous change of brand, lack of investment on Kylix and Anders going to Microsoft.

Most customers became reluctant to keep investing on their tooling.

<comment><USER2> What you're saying rings true to me. I also learned Borland/Turbo/Object Pascal first (perhaps somewhat unusually, I went from Borland Pascal to C++ to Delphi when learning to program as a kid). Although I can't say I never liked C there are many things about Object Pascal I found superior that I miss in C, especially the built-in string type (for those who haven't used it, in C-land it can be compared to bstrings but it's handled completely transparently).

If you wanted to use Object Pascal today and not have to rely on Embarcadero for the continued support of your tools you could use Free Pascal and Lazarus, which are both free software (GPL-licensed). Unfortunately, there's bit of a stigma against using any variant of Pascal these days (to which, no doubt, the many crappy CRUD apps written in Delphi and Borland's management of their product have both contributed), so it's not a good choice for new projects, especially free and open source. I wonder if Nimrod could be the comeback of type-safe compiled languages that don't target the JVM.

<comment><USER4> Nimrod does indeed look very much inspired by Object Pascal (it even uses the classic Borland "T" and "P" prefixes for types and pointers, respectively, something I honestly never liked).

Object Pascal was a fine language, but I don't see the point of using it today, not without removing a lot of the historical Pascal warts (begin/end, the weird semicolon rules, somewhat poor integration with C, etc.), and then you pretty much end up with Java.

<comment><USER3> Actualy C# I would say. ;)

<comment><USER4> Indeed! C# seems like the bastard child of Java and Delphi.

To be honest, I don't think I could ever go back to a language where method names started with an upper case letter. What were we thinking!

</comment></comment></comment></comment></comment></comment><comment><USER5> I used to use Borland's products in a job. They used C++ Builder 6 and migrated their code to the later compiler, Codegear 2007 and it was truly dire (6 was alright). It was exceptionally buggy, the linker continually crashed, and the help system took 14 hours to install (not an exaggeration). The VCL had difficulty with manifests and proper theming on XP and above I think (particularly tab pages) and it desperately needed fixing / replacing. The company tested the version after 2007 and it would compile illegal C++.

I think after they spent years developing C++ Architect and then chucking it in the bin, many of the developers jumped ship and Borland was left with few developers, a shell of its former self. They also had stupid products like their PHP IDE (I wonder how many they actually sold???) and as far as I know the company I used to work for is still making software using the creaking aging VCL! A large code base to rewrite is no fun!

A shame for Borland (or whatever they are called these days) but I am not inclined to buy this software.

</comment><comment><USER6> Embarcadero C++Builder is the successor to Borland's Turbo C. It has changed names several times, having been marketed under the brands Borland, Inprise, CodeGear, and Embarcadero.

<comment><USER7> Makes me wonder if they should not bring the old Borland name (or even Turbo). That'll resonate at least with a lot more older developers (that might be managers now).

I stared with programming with TURBO.COM (Turbo Pascal 3.0) - it was 33kb DOS executable and had built-in editor - fit on a diskette, and there was space for other things.

I skipped version 4 (Turbo/Borland Pascal) and had most fun with 5.0 and 5.5, then 6.0 was solid, and later it was the last time I've used Borland products - the first Delphi and that was it.

Turbo Vision (Borland's GUI for Text Mode - e.g. DOS) was very advanced. I've briefly tried OWL (C/C++ I think) - but had to move onto other things.

Then Delphi was very easy to build interfaces, and later when Microsoft snatched Anders Hejlsberg it kind of resurfaced in Microsoft's products. For example MFC's GUI editing was much worse (and still is) than whatever Delphi had 15 or more years ago (my opinion, I know too many MFC fans out there, and surely they still love it).

<comment><USER8> The Borland name was bought by Microfocus after Borland sold the developer tools division to Embarcadero.

</comment></comment></comment><comment><USER9> The biggest issue C++Builder has for me is that it is pretty damn expensive considering Xcode is included as part of OS X. The Professional version is £850 and still requires the extra purchase of the Mobile Add-on pack which is an extra £423! That makes the total cost £1273!! I would rather _pay less_ and buy a Macbook Air which comes with Xcode.

<comment><USER3> If it is just you, it might be expensive, but it is pretty cheap for big companies, when you compare it with other commercial frameworks or compilers.

<comment><USER9> Yeah I am talking about individuals. I guess I am not their target customer though. Obviously to big companies a few thousand is nothing (especially when you look at >$10k for MSDN Ultimate) but Embarcadero have zero products aimed towards the individual developer (not even the Starter Edition is worth it as it is so limited for the price).

<comment><USER3> > Embarcadero have zero products aimed towards the individual developer

I think that is a sign of what the company has become, after being about to close so many times.

I bet it lives mostly from enterprise legacy contracts nowadays.

<comment><USER9> Yeah I can't remember the last place I saw running any Borland/Embarcadero software with the exception of some _really_ old stuff still compiled with C++Builder6. That place was also running Visual Studio 6 for some stuff too :) Ahh the memories.

<comment><USER10> I work in C++Builder 6 still (small company). I'm trying to get things ported to Qt.

<comment><USER9> What OS are you running it on out of interest? Does it still run on modern platforms?

<comment><USER10> It runs on Windows 7.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> here's what most cross-platform library vendors never get: it's actually easier, and ultimately faster, to learn each environment's native API, then learn one cross-platform API and all of the idiosyncrasies on each platform it supports. Inevitably, there will be some aspect of the native platform that doesn't work correctly within the x-platform sdk and then you have to hack around it.

<comment><USER3> The first time I got to learn that was when I had to maintain a server application across the commercial UNIXes of the 90's.

POSIX was not as portable as they advertised.</comment></comment>


Google's link tracking causing problems? - <AUTHOR> I'm currently in Australia on a slow(ish) link, and I've noticed the following problem.  I search for a term on Google, get several results that look interesting, and click on several, opening them in new tabs.
They fail to open, spinning their wheels for possibly minutes.
I copy the URL, remove everything except the destination section of it, paste it into the browser location bar, and bingo, near instant loading of the page, while the google tabs continue to spin their wheels.
Does this happen to anyone else?  Does anyone recognise this behaviour? <comment><USER2> With the tiniest possible anecdotal data, I _might_ also be seeing this. Had a customer say the site was loading fine when clicking links to it from emails, but sometimes if they search for it google and clicked the link -- it would just spin on a white page. Have not been able to track it down, but the symptoms match at least.

</comment><comment><USER3> If I were experiencing this sort of issue in the US, I would expect it to be something with the ISP/hotspot like injecting advertising or MTM'ing an HTTPS connection or other foolishness. My workaround is to always tether using my phone away from my home or other "known good" network.

Might want to put "Ask HN:" in the title?

<comment><USER4> If it's ISP injecting stuff, then there is a handy site [1] that would check for these.

If you don't speak Russian, then just wait for the countdown to finish, then it would be either a green V meaning no injection, or something red and the description of the injected stuff.

[1] [https://lleo.me/dnevnik/2015/02/20.html](https://lleo.me/dnevnik/2015/02/20.html)</comment></comment>


Looking to learn assembler programming, any advice? - <AUTHOR> Hi everyone, I've been a hobby programmer for several years now with experience in various high-level languages (Java, Python, Lisp, a little C/C++). Recently I've been toying with the idea of learning some x86 assembler programming. I know it isn't really much used anymore, but I would like to learn it for the sake of getting to know my computer better.<p>Unfortunately, I have no clue where to start. Any advice on possible directions to pursue would be much appreciated. Books, tutorials, software to install (I'm running Linux), other hints... Thanks in advance :-) <comment><USER2> This recent thread might have some resources: [https://news.ycombinator.com/item?id=12397423](https://news.ycombinator.com/item?id=12397423)

<comment><AUTHOR> Thanks, I'll have a look into it.</comment></comment>


Netflix: Changes to the Public API Program - <AUTHOR> http://www.streamingsoon.com/

<comment><USER2> From the horse's mouth: [http://developer.netflix.com/blog/read/Changes_to_the_Public...](http://developer.netflix.com/blog/read/Changes_to_the_Public_API_Program)</comment>


Ask HN: Microsoft Computer Vision API or Google Cloud Vision API? - <AUTHOR> Hi HN community!
I am trying to decide on Microsoft's CV offering vs . Google's CV offering for my B2B startup. Any recommendations from people who have tried both??
Background - We are trying to use images of models uploaded by agencies and deriving labels & image properties. Face detection is something that is an added bonus if possible. <comment><USER2> [http://www.clarifai.com/](http://www.clarifai.com/)

Pricing is more friendly than the other two. The API is nice.

I did like Google's a lot, but the price just wasn't there for me. Especially if you want most processing options.

Microsoft have been in this game a lot longer, but surpisingly a lot of their cool stuff isn't in their APIs. i.e. ability to spot similar images and seamlessly stitch them. This stuff was in their maps products a long time ago, and you can download tools of theirs: [http://research.microsoft.com/en- us/um/redmond/projects/ice/](http://research.microsoft.com/en- us/um/redmond/projects/ice/) but no APIs. Their basic APIs are just basic... so why not save the dime and go with a smaller player offering just the basics but very well instead.

<comment><AUTHOR> Thanks for the suggestion. Tried Clarifai's demo - their API & Pricing is nice as you said but they just don't have much to offer in terms of labels and feature detection when you compare to what Microsoft's or Google's version has to offer. Plus, they also don't seem to offer confidence numbers for labels

<comment><USER3> Disclosure: I work at Clarifai.

Thanks for checking us out! Our demo may not fully represent what we have to offer, but you can see a sample response here with confidence numbers included (we call them probs): [https://developer.clarifai.com/guide/tag#tag](https://developer.clarifai.com/guide/tag#tag)

In terms of labels, our "general" model has over 11,000 labels, and we also have specialized models with labels tailored for other purposes, including NSFW, travel, and food, among others.

Hope this helps

</comment></comment></comment><comment><USER4> Depends on the complexity of what you require. I know I might get down-voted for this, but if your task is relatively simple, then roll your own using deep learning. Message me if you want help with this.

I wouldn't rely on either for my own startup, because I dont think these API's will have broad appeal, as a result wont get traction, and will be shutdown with little warning.

I could help you if you want - my email is in my profile

<comment><USER5> I've had a surprising amount of success rolling my own deep learning vision system too since the community is so open, but I wanted to learn about the field and I've sunk a few weeks of spare time into it at this point so I'm not sure I'd really recommend it to a startup unless the API offerings just don't work for them for performance or cost reasons.

</comment></comment><comment><USER6> OpenCV includes face detection, and given a reasonably limited corpus of faces, it performs quite well and quite reliably.

(Whether you want to use that or use a service depends on how close to your core business this is.)

<comment><USER7> I would add to this comment. I recently thought face detection was a difficult service, but its actually really easy to implement yourself.

I found these really useful: [http://www.pyimagesearch.com/](http://www.pyimagesearch.com/)

</comment></comment><comment><USER8> Interesting looking at Google's Vision API overview, where they explicitly state that facial recognition is not available.

The technology to do this clearly exists, but I gather they are concerned about the potential for abuse. Which makes sense. You could build some very creepy apps with this.

<comment><USER9> I won't directly speculate but I doubt the Face Detection functionality is absent due to some ethical quandary.

<comment><USER10> Why do you say that? [http://megaface.cs.washington.edu/results/](http://megaface.cs.washington.edu/results/) shows that Google has one of the best Face Detection models.

<comment><USER11> Sounds like a competitive advantage to me.

</comment></comment></comment></comment><comment><USER12> A request to those suggesting "why not X" or "consider X" : If you could mention a reason or two favoring X over Y, that'll help OP & future visitors.

</comment><comment><USER13> [http://algorithmia.com](http://algorithmia.com)

Pay-as-you-go, many APIs, supportive community.

For your use case you might want to check the Computer Vision tag, specifically the "Illustration Tagger" algorithm.

[https://algorithmia.com/tags/computer%20vision](https://algorithmia.com/tags/computer%20vision)

</comment><comment><USER14> I'm interested in good OCR, preferably local, but I'm close to giving up and using Google Cloud Vision API --- It works well for text that's not prefectly aligned and laid out - unlike e.g. Tesseract or any other local OCR I've used.

As far as I can tell, clarifai.com doesn't have OCR, and neither does anyone else except MS and G.

<comment><USER15> Hey, I made this [1]. Based on a neural net trained with generated character sets with intentional distortions and/or several font variations.

I would not recommend it for use in production, but maybe you're interested in looking at the code and customizing it to your liking. Could perhaps be combined with OpenCV.

[1] [https://github.com/mateogianolio/ocr](https://github.com/mateogianolio/ocr)

<comment><USER14> Thanks!

</comment></comment></comment><comment><USER16> Develop your code so that the API is pluggable. Try both and decide which works best for you.

</comment><comment><USER17> It really depends what you are attempting to accomplish, and what you wish to detect in the images.

As you mentioned faces:

Are you looking for face detection or recognition? Face detection has been robustly solved before the advent of DL with HAARs/ face models. Now being pushed a bit further with DL.

([http://docs.opencv.org/master/d7/d8b/tutorial_py_face_detect...](http://docs.opencv.org/master/d7/d8b/tutorial_py_face_detection.html#gsc.tab=0))

Current cutting edge face recognition systems rely on DL, and the top performing models are one out of Russia (NTechLAB, facenx_large) and one from Google (FaceNet v8). These were the top two performers in the MegaFace challenge - identification with 1M distractors. Truly remarkable results. [http://megaface.cs.washington.edu/results/](http://megaface.cs.washington.edu/results/)

As with most DL systems you will need a massive corpus of labeled faces (aka, google or vkontakte - which the NTechLab group used)

<comment><USER18> Note from personal experience: Haar cascades only work really well on frontal faces in high quality and good light. It sounds like OP has these kinds of photos so it will work well, but if you want to detect faces in any other kind of image/video, you'll need something more powerful. I still haven't found anything that works well.

<comment><USER19> You may want to check out the face detection approach described in this paper: Joint Cascade Face Detection and Alignment. ECCV 2014([http://www.jiansun.org/papers/ECCV14_JointCascade.pdf](http://www.jiansun.org/papers/ECCV14_JointCascade.pdf))

I'd also encourage you to try out the Face API from Microsoft (full disclosure, I work on it). One of the focuses is on improving detection when challenging lighting and occlusions are present: [https://www.microsoft.com/cognitive-services/en-us/face- api](https://www.microsoft.com/cognitive-services/en-us/face-api)

<comment><USER17> Very interesting paper. Thank you for sharing it.

I had a question after reading it. The parameter rho, that is used to either classify/regress depending on the t cascade stage{1..T}, is said to be set empirically. This, I would assume, could change across data sets, how were you able to decide when classification switched to regression in your tree and how was this adapted when testing on other data?

Also forgot to attach the paper I was referring to: [http://arxiv.org/pdf/1502.02766v3.pdf](http://arxiv.org/pdf/1502.02766v3.pdf)

</comment></comment></comment></comment><comment><USER20> I have tried both some time ago for an OCR task. In my brief experience, GCV performs better than Microsoft. Also last time I tried, I sometimes randomly get server error from Microsoft, so I guess Google infrastructure is more ready. The downside is GCV is a bit pricier. Also both do not provide parameter to set language models, so that's a minus in my eyes.

</comment><comment><USER21> What about Watson? [http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercl...](http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/visual- recognition.html)

<comment><USER22> I don't know about face recognition but I've quantatively analysed their speech recognition and it came dead last after the 5 or so others that I tested.

<comment><USER23> Any chance you could share this?

</comment></comment></comment><comment><USER24> Is there a publicly accessible API that can geocode photos, to a degree of accuracy? I'd like to be able to decorate digital photos taken before geocoding was a thing with geo data. I figure photos I have taken off St. Marks Square in Venice have probably been taken a million times by other people, some of whom have probably added GPS coordinates to theirs, so a smart CV offering should be able to figure it out to a sufficient degree of accuracy (for reasonably well photographed and unchanging locations of the earth).

EDIT: I see Google Cloud Vision has landmark detection, that might be useful if the API returns the GPS coordinates of the landmark.

<comment><USER25> Google Photos actually makes a reasonable estimation of your photo's location based on the content of the image (and the context of the photo, if it was available.)

For example, if I shoot with my non-GPS-enabled DSLR, those images are uploaded to Google Photos, which will reconcile my location history to apply a location to those shots. It'll also do that if it sees DSLR shots in between geotagged cameraphone shots.

But more to your use case, GPhotos will actually recognize landmarks and other information to tag photos, I believe, with a rough location (such that it'll match a location like "Paris" or "Eiffel Tower," but perhaps not lat/long... yet.)

Even more impressive, they're very nearly able to do exactly what you're describing, though my understanding is that it isn't in use in GPhotos yet: [https://www.technologyreview.com/s/600889/google-unveils- neu...](https://www.technologyreview.com/s/600889/google-unveils-neural- network-with-superhuman-ability-to-determine-the-location-of-almost/)

</comment></comment><comment><USER26> We build customised image labelling solutions where you can label many more things like type of neck in a cloth, pattern of label on a mug and many such things which is not supported by Google or Microsoft.

We also offer finding similar images as well as image search capabilities apart from finding tags from images. Please connect at [https://twitter.com/adityapatadia](https://twitter.com/adityapatadia) to discuss further.

</comment><comment><USER27> [https://sightengine.com](https://sightengine.com)

Alternative solution for image moderation and nudity detection. Simple API and simple pricing.

</comment><comment><USER28> When I checked last, Google API does not allow to identify specific faces. It can detect faces but that's it. Clarify or Microsoft do. Pricing wise almost all are the same. In my view, Watson is a complete no no..

<comment><USER29> Just curious, what makes you say that about Watson?

</comment></comment><comment><USER30> I think Microsoft's works better, try also IBM's if you can.

<comment><AUTHOR> So I tried Microsoft's CV & IBM's AlchemyVision on the same image (since they both have an online demo sandbox). The Microsoft just gave me back more labels and stronger sentiment figures for same labels. Hence narrowed it down to these 2.

<comment><USER31> If you tried the Watson vision offering when it was "AlchemyVision" then you may have tried a now out-of-date version of the service. The AlchemyVision and Visual Recognition tiles on Bluemix have recently been combined in a way that utilizes their complementary strengths. Consider retrying the updated service if you'd like!

Disclosure: I work at IBM Watson.

<comment><AUTHOR> ok - my bad. I just saw the AlchemyVision has been merged into Visual Recognition starting May 20th. We will definitely check it out to see what extra features have been added.

qq - Is the API stabalized, by which I mean will there be further changes/merges?

<comment><USER32> The API has stabilized. There will be future changes, and I would expect to see those as the service gets new features added (like retraining).

</comment></comment></comment></comment></comment><comment><USER33> Do you know of a human pose estimation from 2d images service/library? I've seen papers about it. I would like to try it out.

</comment><comment><USER34> Consider Imagga.

[http://imagga.com/](http://imagga.com/)

<comment><USER35> They explicitlessly didn't allow it for Google Glass apps so I wouldn't be surprised.

<comment><USER34> Can you explain this a bit better? I'm curious.

</comment></comment></comment><comment><USER36> I think it depends on your dataset and application. It should be easy enough to try both.

</comment><comment><USER37> What works well for face detection in low light images?

</comment><comment><USER38> Microsoft's CV API worked better for me.

<comment><USER39> The last time I checked WolframAlpha worked surprisingly well</comment></comment>


The Britney Spears Problem - <AUTHOR> http://www.americanscientist.org/issues/id.3822,y.0,no.,content.true,page.1,css.print/issue.aspx <comment><USER2> > ... calculating the average (or arithmetic mean) of a stream's integers > takes three registers and three operations per integer. One register counts > the elements, another records their sum, and the third register holds the > value of the average, calculated as the quotient of the sum and the count.

Here's an easy brain teaser: do the above using only two registers.

<comment><USER3> How about a special running average: keep the count in one register and the average in the other one. Let's say N is the current count and av the average. The algorithm is in C-style notation: void addElement( int val ) { ++N; av = ((N - 1) * av / N) + val / N; }

I have used a similar trick (with a fixed N) to implement a cheap running average for an image acquisition software and it works quite well, but of course if N is very large val / N becomes negligible.

<comment><USER4> You guys are so goddamn geeky! <3

</comment></comment></comment><comment><USER5> I posted this a while back, but it didn't get many votes.

<http://news.ycombinator.com/item?id=243270></comment>


Enflux (YC W16) Makes Exercise Clothing That Tracks Your Movement in 3D - <AUTHOR> http://venturebeat.com/2016/02/24/enfluxs-smart-fitness-apparel-tracks-your-movement-to-prevent-injuries/ <comment><USER2> Amazing product - just what I was waiting for! Can I also save my workouts, so I can compete against my-self on a workout-to-workout basis? It would also be great if the app could give me recommendations such as "you should step it up a notch - you seem to have the strength".

And more importantly; can I compare myself against others? _competitive fitness here_ ;)

<comment><USER3> Thank you Sorent. Mickey from Enflux here.

Yes, these are some of the key components of the Enflux experience!

All data will be saved in the online platform so you can see your own progress over time and compete against your past performance.

We plan to introduce a community component as well, where you will be able to share workouts with friends and compete against them!

<comment><USER2> Mickey, thanks for the quick reply! I cant wait to try this out. I see you guys are also planning a Kickstarter - can you say anything about when that will go live?

<comment><USER3> Monday, March 7!

</comment></comment></comment></comment><comment><AUTHOR> My name is Ian and I'm one one of the co-founders of Enflux. We're making athletic clothing with 10 built-in motion sensors that track the 3D movement of your body during exercise. Our goal is to provide high quality feedback and coaching to athletes and everyday gym-goers through the clothing and a smartphone app. We'd love to hear any of your thoughts and are happy to answer questions!

We'll be launching on Kickstarter soon so if you're interested, please check out our website and sign up for announcments and early-bird specials on launch day.

<comment><USER4> Awesome! So am I right that this is kind of how those motion tracking things in movies work? Would I actually see live data of movements?

<comment><USER3> Yes, and yes! The 3D avatar in the app moves in real-time with you.

The best spot to see videos of the current app in action is our Instagram @getenflux.

</comment></comment></comment><comment><USER5> How do you make sure the sensors are in the same spot every time? I assume that's important.</comment>


Fake Steve Jobs Banned From CNBC For Life - <AUTHOR> http://www.alleyinsider.com/2009/1/fake-steve-jobs-banned-from-cnbc-for-life

<comment><USER2> Jim Goldman doesn't know shit about technology. Just checkout his absurd tech 09' predictions.

<http://www.cnbc.com/id/27894341>

</comment><comment><USER3> Transcript?</comment>


JavaScript is not suitable for large web apps - <AUTHOR> http://blogs.adobe.com/bparadie/2012/05/07/the-pew-pew-manifesto <comment><USER2> This is more of a rant against dynamically typed languages than against javascript itself, and making the argument that dynamically typed languages are not suitable for large web apps is a difficult (not impossible) one to make. The author also complains about some javascript projects being split up into enough files, which is hardly a side-effect of using javascript. The author inherited what sounds like a pretty disorganized javascript application and is using it as their real world example for why javascript shouldn't be used to write large web apps. In fact, almost everything in the post is anecdotal or subjective.

<comment><USER3> I also find objections like the "createBunnyOrToaster" antipattern to be really, really uncompelling. You don't need a static type system to make sure that your functions are sane and consistent, and you don't have to be John Resig either.

First of all, put a comment at the top of your function that says what to expect about the return value. You should be doing this anyway because the return type alone is often not sufficient for future programmers reading your code.

Secondly, every time you write the word "return", look up at the top of your function and make sure you are in accordance with what you said the function would do. If you end up with a paragraph comment about what the return value will be like, refactor.

<comment><USER4> > You don't need a static type system to make sure that your functions are > sane and consistent, and you don't have to be John Resig either.

Right, and you _can_ do structured programming in assembly. But when the language or tools don't help you do that, there are examples like the one the author points out where developers don't.

Don't mistake _utility_ (what _can_ be done) for _usability_ (what is _easy_ to do). Usability always matters.

> First of all, put a comment at the top of your function that says what to > expect about the return value.

I want a language that gives me a nice pleasant syntax for doing that.

> Secondly, every time you write the word "return", look up at the top of your > function and make sure you are in accordance with what you said the function > would do.

As a programmer, you should be trained that when you see "every time", you think "automate this". If you and everyone on your team and everyone who has ever been on your team has to remember to do something every single time, your code will accumulate a pile of instances of forgetting.

Fixing that is exactly what tools and languages are for. It's a hell of a lot easier to make a disciplined tool than a more disciplined programmer. (And when you _have_ made a more disciplined programmer, they typically evidence that by asking for more disciplined tools.)

<comment><USER3> _> First of all, put a comment at the top of your function that says what to expect about the return value.

I want a language that gives me a nice pleasant syntax for doing that._

And I want a magic pony; but as I said, declaring the return type doesn't tell users anywhere near all they need to know in many cases. Truly self documenting code doesn't exist, and will probably never exist. And since you can't usefully discuss the return value without implicitly disclosing its type in the comments, declaring the type in the code is redundant.

Now granted, there are a few nice features that you get in terms of debugging by declaring the type in a way that the computer can read. But I don't think I have personally ever actually run into a bug in a dynamically typed language that would have been avoided by a static type system.

Conversely, there are some nice things you can do when the compiler isn't breathing down your neck to make sure that all of your types are consistent. If we had a static type system that allowed me to do elegant, type-agnostic things without getting in my way, that would be lovely. Haskell comes close, but even it falls short of the ideal. Ultimately I have never found the trade off to be worthwhile.

 _As a programmer, you should be trained that when you see "every time", you think "automate this"._

I think that's pretty specious. You do need to consistently check to make sure that your code matches your comments and documentation. You simply can't automate that because humans and computers do not speak the same language.

<comment><USER5> >And I want a magic pony;

This magic pony exists. That's what the author is trying to say. You can write magic pony code, and it can be run as JavaScript. Magic Pony -> JS Conversion!

Also, the OP doesn't have an issue dynamic languages as much as weak typed languages. It just happens that JS is weak and dynamic, while AS is strong and static.

Having switched between Java, ActionScript and JavaScript for the last four years, I can assure you that bugs happen all the time in weakly typed languages that wouldn't compile in strongly typed languages. Sure, it doesn't make it past refreshing the browser, but it's not uncommon for a coworker to check in changes to a JavaScript class that completely breaks a part of the application that the dev wasn't thinking about.

For instance, I've seen return objects switch from strings to ints because of how the strings were concatenated (return "Item " + x/ _returns string_ /; -> return x/ _returns int_ /;). Somewhere else in the function it returns early with "". Now you have other functions in other classes that check someFunction().length... error... sometimes...

The point is, you now have to write unit tests to check the TYPE of each value, and in many cases, it's not easy to tell. To check if an item is an array in JS, you have to do: Object.prototype.toString.call(obj) === '[object Array]'...

Since this checking needs to be done anyways, I'd rather it be done by the compiler rather than by a dev remembering to write a test for each possibility.

<comment><USER2> > but it's not uncommon for a coworker to check in changes to a JavaScript > class that completely breaks a part of the application that the dev wasn't > thinking about

You don't need to write unit tests to check the type of each value, you just need to have a decent set of integration tests to make sure you aren't breaking other parts of the app. If errors in the browser after a refresh don't help you catch it, failing integration tests will. This is how we do things on my large scale javascript project and it works out just fine; we have development challenges, for sure, but weak/dynamic typing issues is not one of them.

<comment><USER6> The point still stays. Why having to write even integration test for something that can be easily checked by compiler. Better focus on writing tests that cover functionality instead of making sure return types are correct.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> For a certain definition of "large" and for certain domains ( especially finance ) his argument is very, very valid. 200 average developers working with GWT->JS are anyday going to be more productive than coding native JS to get the same functionality. This isn't anti-JS...end of the day if you are on the web your code is JS. Thing is, how do you get there - do you hire 20 pricey smart JQuery guys, or 200 average Java pgmmers. Pls go to a bank or any large finance shop - TONS of Java programmers, very familiar with navigating through verbose boilerplate Java code, very familiar with coding up some risk function or pricing algorithm in Java...mostly by abusing the heck out of the optimized collections library and its search & sort algos :) But so long as the damn pricing function prices corectly, eveybody's happy. So now all that stuff has been built & is sitting there as desktop apps with dirty swing UIs. 1000s of Java classes. Literally tens of 1000s. Nobody is going to rewrite it in JQuery/JS/coffeescript => No money, no mandate, no manpower, no expertise, but primarily no need to do so. GWT has captured precisely that sweet spot. First get rid of the fancy swing widgets - stick to simple GWT textareas & lists & panels & checkboxes & stuff. Then get rid of Java collections - replace with GWT lightweight collections. Then check some corner cases. Then compile to JS & optimize & you are done. The same shit now works on the web, & if its buggy you just debug your desktop app because they are essentially using the same logic. This is just how it is done in large financial shops. You are simply not going to hire JS folk & teach them financial algos & then get them to code those up in idiomatic jquery...takes too long. Just train the existing Java folk who already have the domain expertise to move from fullblown Java + swing to lightweight collections + GWT. It doesn't have to be pretty. We are not web shops or consumer frontends...this will still be accessed by people inside the bank...only not by downloading applets & standalone java apps, but via native JS.

<comment><USER8> >20 pricey smart JQuery guys

See, this is how I knew you knew nothing about JavaScript.

My bets, you're a manager that manages shitty Java coders who "used to code" and is an obnoxious know-it-all.

Scale of 1-10, how close am I?

Edit:

From your website: "currentlly: BofA" (sic).

Feeling pretty warm on my bet so far.

<comment><USER9> So so true. If you are hiring "pricey smart [sic] jQuery guys" then you're probably doing it wrong. You need to be looking for solid software engineers that know javascript well. If the developers you are hiring think (jQuery === javascript) and can't explain the difference between classical and prototypal inheritance , then you're screwed before you even begin.

<comment><USER10> Funny, the exact same question came up today. I'm curious what the actual difference between the two is as it's not apparent. (I use a mixture of function prototype with the extends pattern and CoffeScript which exports a function exporting a function.) From what I can see they behave the same as long as you follow the same pattern when writing a subclass.

<comment><USER9> The main difference in many cases is memory usage. When cloning in prototypal inheritance, you point back to the prototype's function, unlike classical inheritance where you are copying methods on every instantiation.

</comment></comment></comment></comment></comment><comment><USER11> There are reasonable objections to JavaScript, but this is inane.

He uses an example of someone committing a classic mistake in software design. This error would be the _same_ in JavaScript or Java. I'd like to see how his ActionScript translation magically fixed it.

However, the remedies for the mistake differ in each language.

It is somewhat difficult to fix it in Java's statically typed straightjacket (which I assume is similar in ActionScript). The easiest answer might involve a Feedable interface. I looked this up and it's not clear if ActionScript classes can implement multiple interfaces. So if you want your Toaster to be both Feedable and Heatable, get ready for interfaces extending each other.

In my experience most Java developers don't even do that. They don't think about revising their approach to the problem. They going to write a method that does what they want in the class that they want, come hell or high water. They'll create the BunnyOrToaster class which has methods which all contain if/else clauses testing if this in 'bunny mode' or 'toaster mode'.

In a language like JavaScript, you have other, simpler options, and often more powerful ones. I don't know for sure, but the mere fact that there are fewer tricks to learn might mean that it's better for naive to intermediate programmers. The typical JS way would be to rely on duck typing. If that disturbs you, you could implement a 'getFeeder' method on both kinds of objects that returns a closure, which can be executed later. That's what Java might call a 'Strategy pattern', but it's baked right into the language in JS.

<comment><USER12> >In my experience most Java developers don't even do that. They...

It's awesome how, on Hacker News, people whose job require them primarily write code in Java are some sort of stupid luddites ready to be easily generalized as the worst kind of programmer. Way to stay objective, guys.

<comment><USER11> Fair point -- it's unfair to stereotype Java developers. In my mind, I meant "most developers" and I happened to be talking about Java. But that distinction wasn't clear.

It's obvious that (in the OP's case) using JavaScript didn't help the problem either -- but that was my point. Bad design is bad design. I am not making a strong claim that JS is better.

<comment><USER13> I like how you apologize for stereotyping Java developers by clarifying that you really wanted to stereotype ALL kinds of developers.

<comment><USER14> When you think only in A restrictive language, your thinking becomes equally restricted. Any of us would become rigid if we never used or understood dynamic languages and only use java or c++ bog standard OOP.

So the comment is less about the developer than it is about the mindset and the 'easiest path' that emerges from the language design.

</comment></comment></comment></comment></comment><comment><USER15> "Help! I don't know how to organize code in intelligent ways! This is the fault of the language we originally decided to use!"

I have to say after writing "large" web apps in PHP and also in 100% JS, I much prefer JS for front-facing stuff. I've not found organization to be a big issue...but maybe this is due to the fact that I use a JS framework for most of my larger apps (but then again, I did in PHP as well).

Like C "feels" like a language for low-level programming and PHP "feels" like it should be running on a webserver, javascript "feels" like it's right at home in the browser. And now that browsers are powerful enough to be the entire front-end, I've come to completely embrace JS for this task.

Javascript is not a bad language. It's a very powerful language. Just like any other language, if it's poorly organized it's going to be a mess. I can tell you, from my experience, it _is_ suitable for large web apps!!

Also, you can't ignore that this is hosted by Adobe...

<comment><USER16> "Help! I don't know how to organize code in intelligent ways! This is the fault of the language we originally decided to use!"

The problem might not be you. Once you are done with your organized code and are moved to another project, some 'junior' dev gets a hold of your stuff and makes simple mistakes that static-typed languages could've avoided.

I'm not anti-JS btw, just throwing out one possibility.

<comment><USER17> Big surprise: junior developers who've only been taught to architect for statically typed language are lost in dynamic languages.

</comment></comment></comment><comment><USER3> I am shocked — shocked! — that someone from Adobe believes a proposition that implies a continued niche for Adobe in the web development market.

</comment><comment><USER18> This is utter tripe. It goes from saying don't use javascript to use a high level language that translates down to javascript.

His main example of why javascript isn't suitable is an anecdote about a badly developed code base written in javascript. Seriously?

<comment><USER19> Don't write programs in assembly. Use a high level language that translates down to assembly.

Yknow, most every language ever.

If you had read the article, you'd see that the author made this comparison.

<comment><USER20> Except Javascript isn't assembly, no matter how much the author would like to think so. It's a reasonably well featured, multi-paradigm high-level language.

<comment><USER21> Woosh...that is the sound of the point flying over your head.

<comment><USER20> you might consider going back to slashdot. i didn't miss his point at all, try reading my comment again, but this time, try to read the statement "but Javascript isn't assembly" a little less literally.

</comment></comment></comment></comment></comment><comment><USER22> Some pretty woeful logic in this article.

 _To illustrate his point let me show you my cross-compiled and optimized JavaScript code of SpriteExample, which is included in Adobe's online documentation about the Sprite class. As you can see the JavaScript code is extremely dense and no longer readable._

This links to <http://jsfiddle.net/bparadie/cbU2X/>

This contains some minified JavaScript... Of course it looks dense & no longer readable. Run the ActionScript Sprite class through gzip compression and I'm sure it'd look funky too.

The author also advocates the use of CoffeeScript - which would have the vast (all?) of the same complaints he's raised against JavaScript.

All in all, a pretty terrible article.

</comment><comment><USER23> This article only proves the author's incompetence to develop and maintain large JavaScript projects, nothing more.

> I don't know why but JavaScript programmers tend to put all of their code > into few files. That's not so useful, though, if you want to have multiple > developers work on the same project. Splitting up the code into multiple > files enabled us to scale the project.

Let me rephrase that:

"I don't know why but incompetent programmers tend to put all of their code into few files."

Last time I checked JavaScript does not have a file count limit.

The author should learn to talk in first person. I'm pretty sure I could write a horrible ActionScript app, if I wanted to, but that would not make ActionScript horrible in general.

<comment><USER24> Ok, seriously, I'm sort of sick of the file-stew meme in software development these days. Our editors aren't particularly designed for the one-file-per- function method of development that's been ohh-so-common. Serious, if a file is under a hundred lines of code, it probably doesn't need to be a separate file, it only undermines the grouping value that files are useful for.

<comment><USER23> I usually do the following:

\- if function A and B are always used together, than they are one file.

\- if linecount gets to big, split A and B into separate files

\- if function C is shared between modules than it belongs in it's own file

So far it worked out great.

<comment><USER24> So long as #3 takes #1 into account.

</comment></comment></comment></comment><comment><USER25> What's funny is I spent last year porting a Flash app to Javascript.

The Flash codebase had become unmanageable. We found that the majority of Flash developers were used to coding up some advertising banner or something of that ilk and that individuals with experience making large applications didn't know Flash. Our team was mainly Ruby and web front-end guys and we had no clue what the Flash guys were up to.

After the change, our web designers could work directly with the markup and CSS in order to make changes, something that was a nightmare before we switched over.

Was it just Flash? No, it wasn't, it was a number of issues, mainly poor architectural decisions and a lack of vision from the technical leads.

All of these issues disappeared mainly because a CTO was brought on who really knew his stuff.

In summary, it's not the tech, it's the people putting the pieces together, and most importantly, knowing how to organize the people who are putting the pieces together.

</comment><comment><USER26> Obviously there may be different requirements in different contexts, but I don't understand why anyone writes large web apps entirely in one language.

I, too, once believed the mantras that "multiple languages present a maintenance nightmare" and "it's better to keep a common language for the sake of acquiring new hires" and on and on... But after some years, I disagree with that rationale.

In my experience, it's been more productive to have some sort of service- oriented architecture, built around your preferred protocol and data format. Then you can choose the languages that best suit your project needs (a decision most often based on the best available libraries). Popular languages are very similar, and it's easy to cruise between them...

I recognize the need to strike some balance in an organization. You don't want 50 services each in some emerging/obscure language, but I think that most folks (at least those who frequent this site) are savvy enough to know when you've hit that threshold. In our organization, we have developers who are globally distributed, and we write services in a variety of languages. We tend to standardize on the JVM: Java, Clojure, Groovy, but we've got some C# services, a lot of XSL, PowerBuilder (yuck), and even VB. I typically have discretion to use the language of my choice.

ASIDE: I always emphasize the "script" in JavaScript and rarely use it in any type of OOP style (except for the occasional lightweight library); the examples in the OP link made me cringe.

</comment><comment><USER27> While I agree that JavaScript can be better but suggesting to compile your code to JavaScript as default is something that I cannot feel comfortable with. Doing it once or twice if the need be so makes sense but phasing out JavaScript and writing code in high-level language only to compile it back to JavaScript does not feel right to me. Why add another layer (compilers) of code conversion only to increase the surface area for critical bugs?

</comment><comment><USER28> "Poorly-written JavaScript is not suitable for large web apps".

<comment><USER29> Funnily enough, that also applies to:

ActionScript, Dart, Java, PHP, node.js, Ruby, Go... ;)

<comment><USER30> node.js is written in JavaScript.

<comment><USER31> Large parts are written in C++ :)

<comment><USER32> I'm pretty sure that very little of it is actually in js. It's more appropriate to say that you use javascript to script the node environment/runtime.

<comment><USER33> Actually a pretty decent part is in JS since most of the standard libraries are purely written in JS. Github claims that nearly 70% of the node repository is in JavaScript.

</comment></comment></comment></comment></comment></comment><comment><USER34> Like many commenters here, I'm not sure I can agree with the author's position. Plenty of in-browser apps go awry, but that's most often because the tools people start using (notably jQuery) just don't work well once you have a large collection of UI components on the page.

That said, the bulk of Google's web applications, for instance, are not written in GWT or Dart, but rather in JavaScript using Closure Library, and compiled using the Closure compiler. So I don't think the answer here is to not use JavaScript (although I can understand why people at Adobe would argue for that), but rather to use tools like Closure or Angular that make the process more straightforward.

</comment><comment><USER35> JavaScript is not suitable for large web apps because Adobe can't charge developers hundreds of dollars selling buggy tools for it.

</comment><comment><USER36> As I read more of these arguments, it makes me think a lot about whether I should switch to CoffeeScript before my web app gets any larger. Has anyone switched to CS or another language that compiles to JS, and regretted it?

<comment><USER8> CoffeeScript is a syntax, not a language.

His arguments have to do with the semantics of JavaScript, which are identical to the semantics of CoffeeScript.

<comment><USER37> Coffeescript has a very similar object model, but it does alter (fix) the semantics of variable binding and expression statements and some unusably broken operators, and those involve treating Javascript more like a compilation target than an equivalent dialect.

<comment><USER8> Yesss running s/==/===/g...very semantically different ;)

</comment></comment></comment></comment><comment><USER38> The bunny or toaster example seems to me like someone still thinking in a statically-typed paradigm in a dynamically-typed language.

If you stop relying on instanceof and start using duck typing it would probably work out better.

Or maybe you should just never write a function called doThisOrDoThat. Seems like a code smell.

</comment><comment><USER39> We are currently porting a large web app from Actionscript to Javascript. The only library that we found that met our needs was Google Closure. It caters for modules of compressed code to be downloaded as required, much like the runtime shared libraries in Actionscript. Given the quirks of Javascript implementation, I don't see how we could have written our web application in any other language and successfully managed the exceptions.

</comment><comment><USER40> The author has failed to put any effort into trying to prove his assertion that the language is at fault. I've seen bad code in all sorts of languages. A rewrite will naturally produce cleaner code, so I don't see how this proves anything about the language itself.

Despite this, there is some truth to the assertion that JavaScript projects can be unwieldy. The main issue with large scale JavaScript development is the lack of a built in module system. The naive style of using a global namespace and script tags is prone to resulting in difficult to maintain code. Thankfully there are frameworks that can solve this issue.

</comment><comment><USER41> I do not like language {X}, but I do like language {Y}. Everyone should agree to write in language {Y}, so that we can all pretend that language {X} does not exist, and maybe then browsers will just start using {Y} natively.

</comment><comment><USER42> Poorly written Javascript is not suitable for large web applications. This goes for any language. Competent Javascript developers will have many files that are concatenated into just one or two files as part of their build environment. Competent Javascript developers will use code quality tools such as jslint or jshint to find potential problems.

It's too bad that you inherited a poorly written Javascript project, but that doesn't mean the language you're most familiar with was the best language for the job. This is a common response. "I know X, let's use X!!!"

Also, Javascript is a high level language.

</comment><comment><USER43> Tell that to <http://lucidchart.com> which is almost entirely built using Javascript. Easily one of the most powerful apps on the web today.

</comment><comment><USER44> I don't understand the article. He seems to be confusing using a language in a project vs using a language as the primary one in a project. We might say "Assembly language is not suitable for large OS kernels. Do not write your OS kernel in assembly language."

But I don't think that follows. Assembly language (the article's metaphor) is something that most OS kernels will use from time to time and in moderation. Similarly I don't see anything wrong with Javascript for some pieces of a large web app.

</comment><comment><USER45> Is there _any_ credible data on static vs. dynamic typing?

<comment><USER46> Yes. A couple of weeks back on either hacker news or reddit (I just searched, and could not find it quickly), there was a seemingly well conducted experiment, with a large number of students randomized to static and dynamic languages, that found no statistically significant difference.

<comment><USER45> If you look at the HN thread where that paper was discussed, people on both sides were shooting holes in it. That's partly why I'm asking, is there anything solid on this out there at all? People are just repeating the same beliefs over and over. We've all heard them a zillion times and we all divide them into two categories: "shit I agree with" and "bullshit".

What experiments _could_ be done to test these beliefs?

<comment><USER13> I think one would need to start by testing a different question first : "With everything else being equal, should your language choice be affected by the level of competence of the developers?". It seems discussions on topics like this all boil down to clash between the idealist and the pragmatist. Idealist: "I want to use language X because it is powerful and lets me to Y". Pragmatist: "but that feature will be abused by the average developer and your project will suffer". So you can't win. Either you have to work in a mediocre language that the mediocre developer knows how to use, or you will work in a great language that the mediocre developer will use to shoot you in the foot. If the answer to the above question is no, then we can put this discussion to rest - otherwise we will need to probe further and understand how developer competence should guide your language choice.

</comment></comment></comment></comment><comment><USER47> I've been a part of some fairly large JS projects. I think you can develop solid software in either case. It boils down to the developer in most cases. Having said that, there's no doubt you're given the ability to do a lot more around enforcing structure with constructs such as abstract classes or interfaces. the timing of this post is interesting as I recently put a project up on github (<https://github.com/vannatech/blade>) for essentially coding JavaScript in a .NET-ish environment. I think maybe even as valuable as some of the thing strong typing brings is the ability to make use of the IDE (you get Visual Studio, assembly referencing etc). For building reusable components I feel like it's definitely the way to go. For annotating a page to add UI features, I'd push for JS. Then there's a lot of area between that where it could vary depending on other factors. Overall I can agree on some levels with the post. But I think, as in most things, it's important to understand the underlying technologies. Abstracting away JavaScript and the browser related APIs will inevitably lead to bad results.

</comment><comment><USER48> It seems to me this is a discussion on two levels: statically versus dynamically/weakly typed languages in general, and ActionScript versus JavaScript in particular.

Concerning the first aspect, the most important advantage I see in static typing is not that is finds bugs (tests are better in that discipline), but that it leads to much better IDE support. Only in a statically typed language, the IDE can definitely find out which class, method or field your code actually refers to, which allows for code navigation, documentation lookup, and last but not least intelligent refactoring support.

Concerning ActionScript versus JavaScript, I must say that I like and respect JavaScript a lot and want to keep its "good parts" (a la Crockford), but I also want to be able to take advantage of static typing for the reasons given above. Thus, although the company I work for is not affiliated with Adobe in any way (rather on the contrary), we were looking for the statically typed language that is closest to JavaScript and finally chose ActionScript 3. We then built a cross-compiler from ActionScript to JavaScript years before Adobe/Bernd Paradies did. We have improved and been working with this tool since 2004 (starting with JavaScript 2/ECMAScript 4) and never regretted following this approach. In contrast to Adobe's tool, "Jangaroo" is Open Source and ready to use now. It focuses on integrating with, not replacing JavaScript, and we help solve problems like dependency management for JavaScript and reuse such solutions for generated JavaScript code. Jangaroo's generated JavaScript code does _not_ look like assembly language, but as much as the AS3 source code as possible.

It's not always black or white, I believe we can use the best of both worlds!

</comment><comment><USER49> Unlike Steve Job's statement about ActionScript, Adobe's statement about JavaScript will not change the web landscape. Look at Google Docs for example!

<comment><USER50> I don't know the answer to this question, but it's worth posing: Is Google Docs written directly in JS? Or is it compiled down from, say, GWT?

<comment><USER49> Google Docs are written using Google Closure JavaScript library, not Java/GWT

</comment></comment></comment><comment><USER51> As long as you keep using frameworks, yes!

Instead just use a base library to give you a cross-browser wrapper and few more utils, then develop the whole application core layer on top it to separate it from your sandbox. Write all processing in core JavaScript unless you are trying to access DOM where the library (usually jQuery) wrappers would come into picture. This would give you immense power to control what you develop; will be highly scalable and of course, not to forget, performance.

Don't even complain if you have server side frameworks which will generate JavaScript for you; that will never work and is only good till your project is in Mock-up (prototype) stage.

The problem seems, you don't have good UI guys.

</comment><comment><USER52> Sheesh fellas, lighten up, he has some interesting things to say. He's not laying out the 10 web commandments, just some opinions about software design. And his thoughts have some merit. It is distinctly hard to build large applications with a language as dynamic as javascript. At least in python and ruby you have classes. In javascript all you can do is duck type. Also javascripts scope is great for being the worlds most flexable language but not for building large web apps or hiring devs for that matter.

JS is a great and flexible language that runs on more devices than practically any other language. But it is hard to write large web apps in it.

</comment><comment><USER53> It would be interesting to see someone go through a public repository and compare error rates / bug fixes between dynamic and static languages implementing the same kind of products. Might not point out differences in the approach but at least in the entire ecosystem (tools+developers+code).

At a certain distance you can swap the approaches anyway (but for syntax):

static as dynamic: Use Thing = HashMap<String, Thing> instead of objects. dynamic as static: Put assert(type(x)=="int") everywhere.

As to building large apps. If you need to build a large app (ie you cant divide it into isolated subsystems) then your goose is already well and truly cooked :)

</comment><comment><USER54> yes, "spaghetti code is not suitable for large web apps" nor apps in general.

that is why things like Ember.js are springing to life - to give the structure necessary to build large web apps without them devolving into spaghetti.

</comment><comment><USER55> Node.js and Backbone/Underscore.js make it easier to write large scale JavaScript web applications. Trello.com -- Uses Node.js on the backend and Backbone.js on the frontend

Klout.com -- same as above

More examples if you are interested:

[https://github.com/joyent/node/wiki/Projects,-Applications,-...](https://github.com/joyent/node/wiki/Projects,-Applications,-and- Companies-Using-Node)

<http://documentcloud.github.com/backbone/#examples>

</comment><comment><USER56> RequireJS or one of its AMD cousins would have been all that you needed to handle the "too few files" problem that prevented you from scaling the project's development.

</comment><comment><USER57> >The code naturally distributed itself from about 10 files to over 100 files when creating ActionScript classes. ... I don't know why but JavaScript programmers tend to put all of their code into few files.

Good JS programmers don't. Classes and inheritance work fine in JS.

>Just to be clear: You can write bunny-and-toaster code in ActionScript, too.

Right. This rant isn't about a bad language, it's about bad development practices.

</comment><comment><USER58> i dont know why nobody ever talks about pyjs.org. to me it takes the best ideas of gwt, simplifies it, and then lets you use python instead of java. sure its a little bleeding edge, and not being heavily developed (because it already works good enough?), but who cares. i dont need the worlds fanciest framework with new features every five minutes. i dont need pythons metaclasses for browser apps. i just need simple, bare bones widgets that wrap html and to be able to write python. javascript is fine, but python is just so much more productive. syntactic sugar counts. readability counts. and python will never run native in the browser so we all need to move on.

pyjs works great _now_ , and makes one highly productive. it just needs a bigger community of users (and developers?). so anyone asking the types of questions raised here should try it. then you can bash it on hn, right? :)

</comment><comment><USER59> "I don't like Javascript, so we Actionscript is the correct answer," sounds a bit like a false dichotomy to me...

</comment><comment><USER60> Did they lint or unit test their code? Without having a way to verify that parts of your app work at a smaller level, of course it's going to get hairy when it starts to grow. Although a compile step verifies types, unit tests do that plus check against runtime errors. This is not a language problem.

</comment><comment><USER61> "JavaScript is the browser's assembly language."

This reminds me of a blog post by @izs

[http://blog.izs.me/post/10213512387/javascript-is-not-web- as...](http://blog.izs.me/post/10213512387/javascript-is-not-web-assembly)

Yes, I love Haskell and I do some CoffeeScript but JS is a fairly decent language to me : )

</comment><comment><USER62> I used to write 10-20kloc projects in javascript. Don't know if its large enough for you but i dont feel any problem to maintain large js applictions written by good programmers. Try CoffeeScript anyway. BTW "jQuery programmer" sounds obnoxiously we are javascript programmers.

</comment><comment><USER63> On the same subject, Gilad Bracha gave an excellent talk about Dart at lang.NEXT recently...

[http://channel9.msdn.com/Events/Lang-NEXT/Lang- NEXT-2012/Dar...](http://channel9.msdn.com/Events/Lang-NEXT/Lang- NEXT-2012/Dart-A-Well-Structured-Web-Programming-Language)

</comment><comment><USER64> Company no longer respected for engineering prowess demonstrates lack of engineering prowess.

</comment><comment><USER65> The title of this article is very misleading. There's nothing wrong with the language itself. If you don't separate your application into layers, then of course it's going to be hard to maintain and bring new developers up to speed.

</comment><comment><USER66> Compile to JavaScript? It's dangerous if you don't know what it really does in the blackbox. I just wrote a article discussing this topic several days ago. <http://bit.ly/M9CSXj>

</comment><comment><USER67> >Splitting up the code into multiple files enabled us to scale the project.

I really don't get this at all. More files == more scalable? Someone more knowledgeable about ... whatever topic is relevant here care to explain this to me?

<comment><USER68> He means "scale the number of people working on the project at one time."

He's basically saying that if you have 10 files and 2 developers the chances of collision (or merging issues) is small, but having 20 developers working from 10 files makes things more sticky.

To some degree, he's not incorrect, in that over time, you'll spend more time managing the merging and conflict process than you will writing code.

Obviously, there are modern tools that will help alleviate this problem, but the deeper you go, the worse it is. This was the reason that "old" VCS had exclusive locks.

<comment><USER46> If you change an interface, and someone else adds a new client to the interface locking does not help. So file based locking does not guarantee that merge conflicts won't occur.

Managing essential merge issues relates to success at dividing work up into highly cohesive, loosely coupled units. The accidental merge issues are not a big deal in good environments.

</comment></comment></comment><comment><USER69> This whole thing smells like link-bait to me. I mean, I'm guessing this is the first time a post from Adobe has been high up on Hacker News in what…. forever?

</comment><comment><USER70> tl;dr

Shitty programmers should not work on large javascript projects.

</comment><comment><USER71> if you outsource your development, the work will still get done, but just don't expect it to be the leader in the field.

by the same token, you can always get the work done with compiling-js approach, but don't expect it to be the winning product.

</comment><comment><USER72> Pew Pew doesn't look like a large web app to me. But maybe I'm missing something?

</comment><comment><USER73> Tell that to twitter (period).

</comment><comment> n-gauge For point 6 of his blog: jsbeautifier.org is your friend

</comment><comment><USER74> Javascript is over! It's the age of Action Script!

</comment><comment><USER75> Why do people post such rubbish and how the hell does this get 100 points? This kind of content can damage young minds.

It should have the HN equivalent of reddit's NSFW tag..

</comment><comment><USER76> I guess Adobe Flash is. /s

</comment><comment><USER77> Though I understand what the author meant, I had to giggle a by when I read "don't use JavaScript... Use a high level language"

</comment><comment><USER78> FACT: Javascript/HTML/CSS holds the biggest monopoly any piece of technology ever has. There is almost NO viable alternative if you want to program for the web. Even the notoriously closed IOS has far more (over 20 popular languages now can be used to compile an app's UI and logic code for)

The title is true BUT for another reason.

It is not suitable because there are so many great languages and language experts - but relatively few who are JS experts.

Why does javascript have a monopoly on browsers? Why can't there be some kind of WBVM (web browser virtual machine) that X language can be compiled down to? Why does JS have to be the assembly language of the web? This fact only makes things difficult and messy to have most languages cross compile to. I think that the W3C are a bunch of idiots for not pushing for something like this. They are stifling innovation more than Microsoft (or anyone else I can remember) ever has IMO. There SHOULD be an open standard for this.

Only very high level JS experts could pull off a large web application in JS. This accounts for maybe 5% of US businesses. Throw in High level experts for X language and now you probably have 60%+ of businesses who could accomplish such a thing. The Same goes for the browser UI as well (HTML and CSS pffff) How about the VM having the ability to draw all these elements instead of merely pushing HTML/CSS in our faces as an only option). We could use superior technologies like Flex, XAML, ETC. instead of HTML/CSS.

You love Javascript? great, but don't push it in my face. I have 3 favorite languages and JS is not anywhere near them.

The web browser is a platform (though it lives inside another platform) but one which is among most proprietary ever.

Why aren't more people pissed off about this?

</comment><comment><USER79> Javascript forces everybody to use the same language, while there are so many people who are religiously fanatical about their own little pet language. So, yes, to whomever it applies, go ahead and cross-compile from whatever you like to Javascript and let's put an end to the problem.

</comment><comment><USER80> Try AngularJS ;)

</comment><comment><USER81> GWT? Seriously? I cannot think of any large, significant web app that has been written in GWT.

I thought it would be clear by now that we do not need Java Enterprise in our web browsers. The web seems to be moving the other way - we have lightweight libs such as jQuery, underscore, backbone etc... and they seem to provide JS with the necessary building blocks for larger, maintainable systems.

<comment><USER82> GWT doesn't get the fair share of respect it deserves. It's not enterprise java (j2ee and such), it's a toolkit that (amongst other things) lets you write and debug java, that gets compiled to javascript in the end. GWT is not modular in the same sense as jQuery/underscore/backbone/any other js library, that's its weakness but also its strength. Also, the same modularity of those libs is simultaneously its strength and weakness. You plug jQuery mobile and backbone, you have to hack the router. You plug backbone with rails, you have to hack backbone.sync; but that's okay, we're all hackers.

If you want to dismiss GWT because it's java that's ok, but there are alot of good reasons (some non-technical) to choose java instead of CS or whatever. In fact, if you look at the history of GWT, they had all these "enterprise" patterns such as EventBus or Composite Views, or any other thing that the backbone/spine/etc camps are re-writing right now.

<comment><USER81> I know what GWT is. I agree that it provides out of the box certain functionalities that require a bit of "glue code" when using other frameworks.

However, the whole "just write a desktop app and we will turn it into a web app" philosophy doesn't seem very web-oriented to me. Yes, it works, it's easy, but if one day you want to change your client-side code (i.e. use a different framework or something) you'll most likely have to change the server side as well. It just seems to be too RPC-centered and too monolithic. But maybe I'm wrong.

<comment><USER82> You can do standard REST, or whatever you want with GWT. IMHO what really sucks with GWT is the language; Java really sucks sometimes and its full of ceremony. Also, I think they made the same mistake that the Swing guys did: they provided for a toolkit but they didn't provide a framework, ie, a standard way of putting it all together.

Anyway, you can check what the jBoss guys are doing with GWT, looks good even for Java: <http://www.jboss.org/errai> I think that if Java ever gets proper closures it will may be more of an acceptable solution for some cases.</comment></comment></comment></comment>


Show HN: Finally launched a Multi-API suggest tool that I hacked together - <AUTHOR> https://freekeywordtool.net/google-keyword-tool/query/hacker <comment><AUTHOR> I've been hacking on this for the last two months, and am excited to finally launch it. This is a Keyword Tool that uses multiple Suggest APIs to give you an exhaustive list of relevant keywords that are being searched for, along with the monthly search volume. You can also search for a combination of different countries and different languages.

APIs currently supported - Google, YouTube, Bing, Amazon, eBay, Wikipedia, Yahoo, Yandex and Ask

I can't wait to hear what you think!

P.S. I had posted this two days back, but there seems to have been some issue with the Post (confirmed with the mods) and therefore posting this again</comment>


Weebly guys launch snaplayout.com - <AUTHOR> http://www.techcrunch.com/2007/10/10/snaplayout-the-profile-editor-myspace-should-have-made/ "The new, simple way to customize and control your myspace profile" <comment><USER2> One interesting thing to note (that wasn't mentioned in the article): The design is based on an SVG template that is modular & rasterized on the server to produce any color variation desired. We can also perform SVG layer-effects on raster images (Lighten, Darken, Screen, Multiply) -- which is how we get the patterns to match the background color, for example.

We'll be back-porting that feature to Weebly as well -- picture a web site template that is image-based yet still lets you choose any color combination desired.

<comment><USER3> Oh man, powerful stuff. Your website editor is starting to compete with my image editor : P

Many congratulations to you guys.

</comment></comment><comment><USER4> Thanks for the support guys!

Let's keep it up :-) [http://digg.com/design/SnapLayout_launches_the_profile_edito...](http://digg.com/design/SnapLayout_launches_the_profile_editor_MySpace_should_have_made)

<comment><USER5> I digg!

<comment><USER4> Thanks! We're getting close now - first page of upcoming in tech. yeaaah

</comment></comment></comment><comment><USER6> Putting MC Hammer into the demo vid was both surprising and ingenious. Great job guys!

<comment><USER7> Hahaha! How did that even happen? M.C.Hammer? Where did you find him?

<comment><USER8> techcrunch 40. He has a startup for online video battledancing or something.

<comment><USER4> <http://www.dancejam.com>

</comment></comment></comment></comment><comment><USER9> Ah, bringing designing power to the people. That's great.

What's with the shutdown speculation? I can't imagine they'd shut it down given that it's not a competing content site and they're bringing out an API, would they?

</comment><comment><USER10> Very nice. I would just love to see it generalized. An open way for any social site to use Weebly as their profile editor.

</comment><comment><USER11> Great idea, killer execution.

I definitely see this going places. Amazon job, guys :)

</comment><comment><USER6> Yikes. Is this a worry? [http://www.techcrunch.com/2007/10/09/myspace- platform-to-lau...](http://www.techcrunch.com/2007/10/09/myspace-platform-to- launch-next-week/)

<comment><USER2> not really. we see it as complimentary -- and we'll be using myspace's platform to generate ad revenue from profiles, eventually, anyway.

<comment><USER6> awesome

</comment></comment></comment><comment><USER12> This is very slick what you have done! As opposed to most MySpace customization websites, I don't feel dirty while I'm using your system. Haha. Kudos to everyone involved!

</comment><comment><USER13> I don't think it really works in my Browser (Firefox on Ubuntu 7.04). I couldn't drop the widgets, and there was no choice of corner styles.

</comment><comment><USER4> Hammer's MySpace: <http://www.myspace.com/mchammer>

It's gonna get even pimper

</comment><comment><USER14> Nice, make it a Weebspace

</comment><comment><USER15> This is good, real good.

</comment><comment><USER2> haha, that was nasty... posted it before i could get to it :)

<comment><AUTHOR> sorry about that...amazing site though; you guys are impressive!

<comment><USER2> oh, i meant nasty as in "kick ass", and thanks.

</comment></comment></comment><comment><USER16> brill!</comment>


To find your first customers, do sales not marketing - <AUTHOR> https://blog.louisnicholls.com/advice/playing-battleship-the-hard-way-to-find-your-first-customers/ <comment><USER2> I see 99 ways this approach would fail, except one case, it could work if my product is able to hit product market fit. PMF is why most startups fail, not because they couldn't figure out how to sell... Even we assume Saas, FinTech, Dev tools, Uber for dogs are in the same bucket of sales variety, then applied this battleship approach, you'd be dead in the water before you realize your product isn't solving a problem you can charge money for yet most people you ask would tell you if you added certain features it could be useful, or if you tried this other segment of customers you could make it.

Plus "buy my book to learn more" didn't work for me. I'm a founder. Just saying.

<comment><AUTHOR> OP here. Sorry, I don't quite get your point.

I'm arguing that you can find product-market fit faster by doing sales than marketing, because doing sales allows you to gather more (and more useful) information from your target audience faster than marketing does (binary yes/no responses).</comment></comment>


Players have contributed $4,028,459 to Valve's TI4 Dota Tournament  - <AUTHOR> http://www.dota2.com/international/compendium/

<comment><AUTHOR> Submitter here: For those who are not familiar with e-sport, Valve is holding The International 4, which is the biggest Dota tournament. The tournament begin with Valve's $1,600,000 base prize pool and Valve sells Compendium for $9.99. Each purchase contributes $2.50 to the prize pool. This thing begins on May. 9 and in 10 days, which is 2 months before the actual tournament, Dota players have contributed $4,028,459 as of now.</comment>


Show HN: Quiply 2.0 – Next generation company review app - <AUTHOR> https://itunes.apple.com/us/app/quiply/id919847406

<comment><AUTHOR> quiply is an app for people to provide feedback on their workplaces. In quiply 2.0 we've added support for feedback on companies and all the different organizations and levels that make up those companies.

Different parts of a company are often very different from each other – the experience in engineering can be quite different from that in customer support. The workplace experience also often depends on how deep in the organization you report. And, of course, the leadership in different organizations and at different levels of the organization can be very different.

By giving users the ability to provide feedback on the part of the company and at the level of the organization that influences their workplace success on a daily basis, they'll be able to provide more meaningful reviews. Also, someone thinking about taking a job at a company wants detailed organizational reviews, not just company-wide discussion.

quiply can be thought of as a 'next generation' Glassdoor, giving users the flexibility to provide workplace feedback with clear organizational granularity.

</comment><comment><USER2> This is terrific! I want to know as much detail as possible about a company when I'm job hunting, and thought that Glassdoor didn't put enough effort into digging into the details. This app makes it easy.

</comment><comment><AUTHOR> Thanks for the feedback. We've heard that same sentiment from a lot of folks as they learn about quiply.

</comment><comment><USER3> Who can see the feedback on quiply? Just people who work at a particular company?

</comment><comment><AUTHOR> All feedback on quiply is anonymous (even to us).

</comment><comment><AUTHOR> quiply is outside the corporate firewall. All quiply content is viewable by all registered users.

</comment><comment><USER3> Is feedback on quiply anonymous?</comment>