Living a High-DPI desktop lifestyle can be painful on Windows - <AUTHOR> http://www.hanselman.com/blog/LivingAHighDPIDesktopLifestyleCanBePainful.aspx <comment><USER2> Just to be clear - supporting High-DPI on Windows is not as simple as adding scaled up resources. Instead, it is an absolutely royal pain.

For one, you can't just throw hires bitmaps into a resource section of .exe and expect them to magically work. There needs to be code that looks at current DPI and picks matching bitmap.

For two, standard DPI levels are 96, 120, 144 and 192, but guess what? All other values in between and above 192 are game too. In fact, there's a nice little slider in the Control Panel that _encourages_ you to put it somewhere in between. This means that your code either needs to rescale bitmaps to match these odd DPIs or use the largest one that fits. In either case the result will look like butt.

For three - the dialog layout. If your dialogs have text that's longer than 3-4 words, the chances are that it will either overflow, underflow or wrap differently under different DPIs. This in turn means that you need to test dialog appearance with at least 4 different font sizes _and_ Tahoma 8px for Windows XP. Do you know how hard it is to word a longish sentence so that it would fill about the same space with all 5 combinations? Really damn hard and very time consuming.

But wait! There's more.

Every app _icon_ needs to exist in _at least_ 9 sizes, like so - [http://imgur.com/5Pe2ZV0](http://imgur.com/5Pe2ZV0) \- and this would still miss some cases where Windows will scale an arbitrary chosen icon image and use it.

It really is a mess. However this is not something unexpected if you've been writing for Windows for a while. This mess is a routine.

<comment><USER3> The other thing to remember is that most likely less than 1-2% of your whole customer base is currently using high DPI monitors, so all these very high and very real costs are sometimes not possible in ROI, especially for more niche markets. It much like supporting IE6, or maybe IE5 for the 1% that still use it? Would you in a niche market compared to a mainstream app? This will change with time as these monitors become more common but right now the threshold is still very low compared to the costs.

<comment><USER4> That seems like a lowball estimate even today. If you go shopping for a new Windows computer or tablet in Best Buy or Staples or some other american store, maybe 1/3rd to 1/2 of what's on shelves is high DPI now, from the $400 tablets up to $1200 ultrabooks. Lenovo, Samsung, Asus, HP, all the big manufacturers have 2560x1440 or 3200x1800 ultrabooks and hybrids out, and even 1920x1080 tablets are set to 1.5x or 2x DPI scaling because those pixels are packed into 10" or smaller screens.

<comment><USER5> Tablets yes. Notebooks no. 'Ultrabooks', whatever they are, maybe. The majority of laptops up to 15" and ~$1200 are still 1366x768. Source: I recently went shopping for a laptop with roughly that budget. In fact, I don't think you can buy anything 15" beyond 1080p on that budget.

</comment></comment></comment></comment><comment><USER6> One area where Apple has been incredibly aggressive — and Microsoft has been sorely lacking — is in actually producing and preparing high resolution content _well in advance_ of the display technology.

Apple new this was coming and for years have demanded icons, images, and artwork to be provided in high resolution. They developed assets for their own software in high resolution before retina displays ever hit the market.

Contrast to this article where Microsoft's own Visual Studio (one of the "best cases" mentioned by this article) _doesn 't even have Hi-DPI icons._ Microsoft's own software displays blurry icons and it's listed as a "best case."

Apple also pushed Intel very hard on driver support for their integrated graphics. Rewriting the driver-level image scaling to ensure that discrete and integrated GPUs produced identical images, again before retina displays ever came on market, to allow for seamless switching between GPUs on their hardware.

This sort of foresight was necessary to pull off the high density display introduction as smoothly as they did.

Same goes for multiple monitors, which "just worked" when Apple introduced their high density displays. You could connect a regular monitor to your laptop and drag windows across. The DPI and art assets adjusted dynamically. This is something Windows is only just now getting around to fixing in version 8.1.

<comment><USER7> And my completely understaffed KDE does it beautifully.

</comment></comment><comment><USER8> [http://www.antigrain.com/research/font_rasterization/index.h...](http://www.antigrain.com/research/font_rasterization/index.html)

This is a few years old now, but is still one of the better explanations of the issues involved in modern font rasterization, with emphasis on how Microsoft's likely held back the entire industry by only realistically supporting widget fonts at the standard 96ppi. Really, anything other than the stock Arial 10pt/96ppi is going to cause layout issues.

In an effort to very-aggressively hint that font so it looks consistent, they throw out horizontal accuracy by rounding to pixel boundaries. Per-letter. Ouch.

The best part of the paper, though, is this image that moves the sentence to the right exactly _1 /10 pixel_ each line:

[http://www.antigrain.com/research/font_rasterization/sample_...](http://www.antigrain.com/research/font_rasterization/sample_arial_1tenth_shift.png)

</comment><comment><USER9> The Windows DPI scaling control panel has DPI scaling bugs: [http://i.imgur.com/zi80IhG.png](http://i.imgur.com/zi80IhG.png)

That's all you need to know about high DPI support in Windows, in a nutshell.

</comment><comment><USER10> Why are names like "High-DPI" used?

There was a time when 320x200 graphics with 256 colors was amazing. Would 800x600 have been considered "high DPI" back then?

Or in the time were people were playing Duke Nukem 3D at 640x480 pixels, would they have considered 1920x1280 to be "high DPI"?

Windows has transitioned all the way from 640x480 in Windows 3.11 to the resolutions of today, why would there be a problem with just another step up?

What is "high" DPI today? What will it be tomorrow?

<comment><USER11> Perhaps because we reaching a point where our eyes can longer perceive the individual pixels that we really have reached maximum resolution. Is there any benefit from higher resolution displays?

<comment><USER12> One advantage of high-density displays you sometimes see mentioned is that "we won't need to use anti-aliasing / sub-pixel rendering!"

However at the common "high" density used in cellphones these days, 320+ DPI or so, artifacts in non-AA fonts are still visible (not always, or to everybody, but sometimes anyway).

So, at least, there are _some_ cases where higher-density than today could yield some benefit.

<comment><USER13> I've turned off subpixel anti aliasing on my macbook pro retina.

Net step would indeed be disabling anti aliasing

</comment></comment></comment></comment><comment><USER14> you can say what you want about Apple in general, but they way they "fixed" this issue with the retina macs is so much better than what windows is doing.

Windows has had the DPI selector ever since 3.1 (or even 3.0), but because nobody traditionally tweaked the settings, nobody bothered to make their apps look right and because nobody bothered to make the apps look right, nobody tweaked the settings because running higher DPI modes was breaking apps all over the place.

Mac OS did this too - I think in the 10.4 timeframe there was an option to actually switch into a higher DPI mode and many of the OS-internal UI assets were vector images. They probably noticed that it will never work out, so they opted to go for a hack:

With the exact quadrupling of the resolution, we got a solution that works mostly transparently for the applications. They still think they are drawing with a one-pixel resolution, so the burden of getting this right moved from the app makers to the OS maker.

Even if an application has no modifications for retina displays, it will look mostly right (minus some blurring issues for pixel art). There will be no scaling issues, no texts will be cropped and everything will be scaled by the same factor.

If you want to 'optimize' your app for retina, all you do is provide higher resolution bitmaps and you're mostly fine.

The exception is some text-editors (sublime) and browsers (chrome) that were doing some manual text rendering, not relying on the OS API. These had to be fixed manually, but there really weren't that many applications like that.

Yes, the way Windows does it is probably more "purist". Yes, the way Windows does it allows for arbitrary scaling factors (also sub 200%).

But it _doesn 't work_ in practice.

Yes. The Apple solution is a hack. Yes, it doesn't allow scaling to arbitrary factors. Yes, providing 2x bitmaps instead of one vector image is annoying.

But it works in practice.

On a retina mac, you'd never see the issues the OP complained about seeing on their Windows machine. What you get there might be superior from a technical standpoint, but it all boils down to an ugly half-working mess because developers just _don 't bother_ to get it right.

I'm not excluding myself here. I've done a few windows apps and I f'ed up high dpi modes as many times as everybody else - also because my development environment (Delphi) made some assumptions that just didn't work well with high-dpi modes.

Getting HDPI right on Windows (Desktop): Really hard and thus not worth it for most developers. Getting HDPI right on the Mac: Trivially easy.

<comment><USER15> > Even if an application has no modifications for retina displays, it will > look mostly right (minus some blurring issues for pixel art). There will be > no scaling issues, no texts will be cropped and everything will be scaled to > the same factor.

That is how it (should) work in Windows too. All applications that do not explicitly claim to be DPI aware get just bitmap scaled, just like on OSX.

The real problem is that tons of applications claim to be DPI aware, but in reality are not. The reason Apple does not have these kind of issues is that their Retina thing is more recent and thus there are no legacy apps that claim to be DPI aware.

<comment><USER16> _> The reason Apple does not have these kind of issues is that their Retina thing is more recent and thus there are no legacy apps that claim to be DPI aware_

Not actually true. Many games are fairly messed up in either windowed, full- screen, or both noises. Usually it's because of a bad middleware toolkit that either enables the Retina backbuffer our not but the OpenGL scaling doesn't match the window scale. Especially prominent in games that use the older, Carbon method of exclusive full screen mode.

Aside: full screen games manage to be even worse on OS X than on Windows. That takes effort. (Games as full screen spaces is a really nice, usable concept, but the performance hit is so nasty nobody wants to support it instead of the invasive and messy Core Video tour.)

<comment><USER16> (aside: This post was doubly a victim of autocorrect. s/noises/modes/ and s/tour/route/. My bad.)

</comment></comment></comment></comment><comment><USER17> _Adobe everything._

Well at least Adobe is consistent. The Flash Installer is awful on OS X as well. For example, say you've disabled the translucent menu bar - you'll notice it's drawn translucent when the Flash Installer is the foreground app. (Nevermind the fact that the installer is a just an annoying wrapper around the OS X installer that seems to do nothing more than force you to quit your open browsers before it will continue. With some digging you can actually find where it's downloaded the real installer pkg, double-click that pkg to install it, then quit the wrapper.)

<comment><USER18> Is the Flash installer running as a different user? Menu bar translucency can be set per-user and translucent is the default, so if, e.g., you run an OS X GUI app as root using sudo, and haven't disabled translucency _for root_ , you'll see this behavior.

</comment></comment><comment><USER19> Can we get 'on windows' added to the title? None of this is about high- DPI/Retina displays in general, it's just Windows and Windows ecosystem issues

<comment><USER20> It's humorous that at the end of his article he asks:

> "Do you have any examples of high-DPI frustration on the Desktop? Upload > them to ImgUr.com and link to them in the comments!"

Yeah... your blog post looks like shit on my MacBook Pro... all your screenshots are blurry messes.

<comment><USER21> Huh, they look fine on my MBPr.

Because I'm using Chrome? It has a very good sharpening filter.

<comment><USER20> Wow... night and day compared with Safari. Can't for the life of me find details about the different approaches via search. Any links to why the browsers differ?

<comment><USER21> Google implemented a sharpening filter in Chrome(ium), Apple didn't for Safari. That's it.

</comment></comment></comment></comment></comment><comment><USER22> One of the most depressing areas of Windows to look at is the various control panel screens. Some of them, I kid you not, will show different bits of text in up to three different sizes. If Windows itself doesn't deal with different DPIs correctly, what kind of example does that set for application developers?

Another application that definitely deserves mentioning is Chrome. It looks _absolutely terrible_. It's really blurry and browsing the web for even a couple of minutes really strains my eyes. If you run high DPI Windows, you're going to need a different browser than Chrome (Firefox looks fine but unsurprisingly does not perform so well at such a high resolution. Internet Explorer is actually not a bad choice - high res and fast)

<comment><USER23> In Windows 8.1 you can override the scaling for individual apps through their properties dialogs. Set Chrome to not scale, then set the zoom within Chrome to be > 100%.

The url bar and tabs will be a bit small but the page content will look good.

<comment><USER24> TIL. I upgraded to Windows 8.1 but I didn't know about this. Anything Java doesn't handle high DPI and will simply be doubled and is a blurry mess. I actually turned off DPI scaling just because of Java but if I can control it on a per-application basis that would be preferable.

</comment></comment></comment><comment><USER25> It's pretty amazing that Adobe is doing particularly bad. Keepers of pdf and postscript, you would think they knew all about fonts and dpi.

<comment><USER26> > _It 's pretty amazing that Adobe is doing particularly bad._

Adobe has historically been bad at playing well with Windows. They like to reimplement large parts of the UI.

</comment></comment><comment><USER27> What's the situation on GNU/Linux?

<comment><USER28> Fonts specified in points are correctly rendered using the DPI setting correctly, as it has always been. So, as far as 99% of my work is concerned (terminals and text editors), there is no problem.

However GUI elements of most programs are still specified using pixels, so buttons, menus and some icons might look "tight" around the text if the theme is sized using pixels. Recent GTK/QT versions do support point units, so it mostly depends on the theme you choose. These toolkits also always (historically) had resizable dialogs, contrarily to window and mac, so even with "bad" support for high DPI, the text will be readable and the interface will be scalable.

Legacy apps, such as WindowMaker dockapps (which are historically sized as 64x64) though will be unreadable. Frankly, I can already cannot read them anymore.

Given the configurability of most programs, I would say it's really not a problem. Most of the other programs will be adapted very quickly.

<comment><USER29> Would some smart window manager additions be in order here? I could envision a titlebar context menu option to force a window (or all of an app's windows, probably) to render at 2x (composited by the WM) so that we have control over all the edge cases.

<comment><USER28> With composition, this would be easily done (ie: upscale the target window). A plugin for compiz would be very easy to do and control from the user perspective, but that actually would be half resolution.

</comment></comment></comment></comment><comment><USER30> I can't even use my Windows 8.0 on my 32 inch TV that is 1080 sitting a couple of metres away, while keeping the resolution and boosting all the accessibility settings to the max.

Even the metro Apps I can't use.

I'd need a 50ft display! It's another facet of display/accessibility issues.

I had high hopes after Media Centre, that Windows would get this right. And bought Windows 8.0 specifically for this purpose. Disappointing. I'm forever going over to the TV and my neck hates it.

Personally I think part of the solution is to change the menuing system, breaking it out from the window. If I can at least use the menus/controls on apps I have a good chance of using them.

<comment><USER31> Wierd, I've got my Windows 8.0 laptop hooked up to my 40" Samsung 1080p telly (bought in 2007) and it all looks good, even from ~3m away...and that's using just the VGA input (Dell didn't stretch to a DVI port on their cheapo Vostro 1720 range back in the day).

<comment><USER30> Well your eye sight is way better than mine. Metro apps are almost usable, the desktop is barely usable (I have to walk over to the set, and that's with the text size increased. I have a very small (not titchy) living room.

<comment><USER32> That doesn't sound right. There is a special setting that lets you change the size of metro apps, have you tried adjusting that?

<comment><USER30> Yes.

</comment></comment></comment></comment></comment><comment><USER33> I've had the pleasure of using a high-DPI display on Windows 7 for a while, now. There are some tricks that help significantly:

1\. Calibrate ClearType to use as little color as possible (use the system magnifier to help); this way, when apps get scaled the text is just blurry rather than blurry with odd color-fringing.

2\. For apps that are incompatible but suitably configurable, set their compatibility mode to disable HiDPI scaling and then set their font sizes (or default zoom) to be larger. This works well for Chrome and Skype, at least.

3\. For those times when you momentarily have trouble, remember that the windows key and the plus key will zoom your whole desktop.

</comment><comment><USER34> Remote desktop is really annoying on high dpi screens - the client cant scale up (although it can scale down) so you end up with a tiny view of your server.

</comment><comment><USER35> Isn't the credit due to the choice by Apple (NeXT, actually) to go with Display Postscript?

I'm sure they figured that as amazing as the resolutions of the original NeXT monitor was (1120×832 in 1988), in the future it would be greatly exceeded. Not to mention they wanted to be able to use the same routines to draw to a 300 or 600dpi printed paper as a 72dpi or whatever monitors were at the time.

<comment><USER36> OS X has never used Display Postscript (partly because they probably didn't want to pay license fees to Adobe and partly because in a composited environment with client-side rendering there's no need to marshal drawing commands into text that looks like Forth). The OS X UI is full of bitmaps that had to be redrawn for retina.

<comment><USER35> Quartz2D, but the same idea.

</comment></comment></comment><comment><USER37> This is one of the biggest reason I just can't move away from my regular DPI laptop. Every time I have tried a HiDPI display with Windows it is painful. Text looks great but icons and widgets look like shit. Things get better with every new version of Windows but Microsoft have been promising true DPI independence since Vista yet things are still crap.

<comment><USER22> Back in Windows 3.1 and Windows 95 I remember this stuff actually working quite well, a lot of people I knew were running Windows with non-default DPI settings. As newer versions came out, and also as people started using third party GUI toolkits more and more, things started getting less consistent.

<comment><USER38> I think those old settings only concern fonts. Icons and other pixel-measured things would still look ridiculously small (making it a mess of small-things- with-big-fonts).

</comment></comment></comment><comment><USER39> Changing your DPI settings on Windows can cause all kinds of strange issues. I had a problem a few years back where my Windows 7 gaming theatre PC thing I had set up and connected to my 1080p TV wouldn't work quite right; specifically Star Wars: The Old Republic wouldn't launch, and would crash on loading.

I couldn't figure out what the problem was, and googling was no help until I stumbled across the dumbest advice I'd ever seen: change the text scaling. Once I set it back to 100%, the game loaded fine. Frustrating, because at 100% I couldn't read _any_ of the other text, which meant that if I wanted to play the game I basically had to navigate by icon and give up on reading dialogue boxes unless I wanted to sit on my coffee table instead of my couch.

</comment><comment><USER40> I'm actually impressed that windows apps support it at all. I didn't realize it could actually work properly if programs took the time to do it right. With High-DPI monitors finally coming out I'd expect dramatically improved support moving forward.

</comment><comment><USER41> As someone who prefers high-DPI screens for workflow management across programs (spreadsheets, web layout, graphic design, etc.), this scaling problem in programs is a frequent frustration.

Particularly working with media (DSLR images or 1080p video), it is difficult to scale GUI to a readable level while viewing the media itself at an un- scaled 1:1 pixel level. Do any editing suites for photo/video do this well? I'm talking about an un-scaled video window with a GUI that scales/wraps to an arbitrary window/screen size...

</comment><comment><USER42> I always liked what SGI Irix did. From the get go the desktop was all vector based. So you could run at 800x600 or 1280x1024 and either way things would look normal.

Both OS-X and Windows solutions are a hack.

<comment><USER25> How did icons and stuff look, then? I thought vectors aren't the silver bullet they are made up to be especially for small/lowres graphics. Case in point, all the crazyness with fonts and hinting etc to make sure they look good in 12px.

<comment><USER43> The icons were vectors, but typically drawn at an isometric view and combined with other components (like the "sheet of paper"/"magic carpet" underneath apps). When you click once to select the app, the paper turns yellow. When you double click, the paper back and up behind the icon.

A screenshot of the Icon Catalog: [http://techpubs.sgi.com/library/dynaweb_docs/0650/SGI_Admin/...](http://techpubs.sgi.com/library/dynaweb_docs/0650/SGI_Admin/books/PCP_UAG/sgi_html/figures/a12193.gif)

And the docs for IconSmith, used to draw icons: [http://techpubs.sgi.com/library/tpl/cgi- bin/getdoc.cgi/0650/...](http://techpubs.sgi.com/library/tpl/cgi- bin/getdoc.cgi/0650/bks/SGI_Developer/books/IIDsktp_IG/sgi_html/ch12.html)

And Motif was used for all the widgets, I guess that would make it vector- based.

</comment></comment></comment><comment><USER44> It's funny that, in an article describing issues with a high-DPI display, the author never explicitly says the size of the screen (e.g. in inches), or the DPI. He just tells us it's 3200x1800. In case you were wondering, the display on the Lenovo Yoga 2 Pro is a 13.3", 16:9, 276 DPI display. Personally, I find this description more immediately useful than saying that it's a 13.3", 3200x1800 display.

</comment><comment><USER15> I guess the best way to solve this would be to (partially) ignore the dpi awareness flag in applications and instead apply a series of heuristics and white/blacklists (with user override) for determining if applications truly are hidpi capable. That would be bit of a pita for the applications that actually do support hidpi properly now and might get still bitmap scaled, but that would be just a temporary issue.

<comment><USER45> What bothers me is that this crisis has been obvious since well before Apple started releasing their Retina screens on mobile devices. X has 75 dpi and 100 dpi fonts for a reason and we had 2D acceleration on every decent computer for what? 15 years?

We've been using pixels as size units for no reason other than laziness.

<comment><USER46> Vector rendering is still not advanced enough to completely (or even mostly) replace bitmaps. Until they are, we'll have to redline our bitmaps for each resolution manually. It's not just a matter of laziness.

<comment><USER47> > Vector rendering is still not advanced enough to completely (or even mostly) > replace bitmaps.

Wait, what?!? Vector rendering matured before bitmaps were common place. They are faster and use less memory, that's why programmers of the 70's and 80's loved to use them.

Bitmaps are easier. That's the only reason people use them. And only in a world where everybody gets images on the same size and resolution.

<comment><USER46> Your information is just plain wrong.

My wife does a lot of pixel redlining at her job: the artifacts they produce are all done in Illustrator, a vector program. And believe me, they would love to leave them as vectors...less work for them! However, they must be converted to bitmaps and manually redlined to eliminate sub-pixel alignment problems.

Bitmaps are not easier, otherwise the designers would be cranking out pixels directly in Photoshop and not Illustrator. The fact that NO ONE has produced a decent general purpose vector renderer that avoids pixel artifacts, even a non real-time one, means that my wife will be redlining for quite a few more years. Even font rendering (arguably simpler than icons) requires substantial hinting to be effectively resolution independent.

<comment><USER45> The high density displays we are starting to see may end up solving the artifact problem - we won't be able to discern individual pixels for much longer.

The other problems: elements that vanish, such as lines and thin structural rectangles, would require some pixel-related restrictions in their definition. I'm not sure vector programs are able to deal with them right now, but it would be useful.

<comment><USER46> Right. I was replying to parent in that we don't still do bitmaps because we are lazy. Quite the contrary: we have moved to vector-based tools for producing application art assets and would love it if we could just output to SVG or something similar and be done with it. However, the current reality is that we still have to convert our vectors manually to bitmaps, even those for high res screens. Rasterization is just still not good enough to do the job automatically (it works fine for objects in motion where the imperfections aren't very noticable, but not those that don't move).

</comment></comment></comment></comment></comment></comment></comment><comment><USER48> I have a 166 dpi laptop at the moment and yes, windows was pretty bad. Only recently found out about the dpi settings thanks to a commenter here.

On another note I _really_ want that laptop!!

</comment><comment><USER49> I got IntelliJ running really slick and smooth in QHD+.

Set the compatability to disable scaling for hidpi. Then just set the text in settings to be 26pt.

I know have a retina looking IDE on my Ativ Book 9 Plus.

</comment><comment><USER50> Is this guy having a laugh?

Every time I've upgraded my monitor, I've found it easier. If you don't want a window to be wider than a certain point, don't make it wider. Myself, whenever I see apple users, I see them with these tiny narrow windows with nothing else on screen, which I have never understood.

That said, I always value vertical resolution - I have never bought a 1920x1080 monitor as 1600x1200 is so much nicer, or 1920x1200 for the wider aspect ratio.

<comment><USER51> I guess you didn't read what he wrote.

He is not complaining about the windows being to wide, he is complaining about the scaling that Windows 8 applies when it detects a High DPI screen, that makes every element inside a window either too large or too small, or sometimes both, breaking the original design and fluidity of the application and rendering it unusable.

And your point about Apple users..well, I don't know what was your point about Apple users.

<comment><USER52> His point about mac users is that they tend to divide their screens in tiles while windows users tend to maximize the windows and switch between them. I found myself doing that on a mac too (I used to have a machine of each OS on my desktop) and was mostly because I never get used to the dock or exposé or even the way MacOS maximize windows

<comment><USER51> I don't think that is what he wrote, but anyway, what you say has to do with how each OS works and neither is inherently bad. I do think however that the way Windows maximizes applications is more consistent, which is always better. Maybe that is why on a Mac one tends not to maximize a window as often as on Windows.

</comment></comment></comment></comment><comment><USER53> s/ a High-DPI desktop lifestyle can//</comment>


Trump to Sign Executive Order Suspending Many Foreign Work Visas - <AUTHOR> https://www.nytimes.com/2020/06/22/world/coronavirus-updates.html <comment><USER2> [https://news.ycombinator.com/item?id=23585596](https://news.ycombinator.com/item?id=23585596)

[https://news.ycombinator.com/item?id=23605557](https://news.ycombinator.com/item?id=23605557)

</comment><comment><USER3> you linked a generic coronavirus update page, which at this exact point in time happens to have news(below the fold) about visas as a sub story. this will not last long.

thehill has good write up: [https://thehill.com/homenews/administration/503914-trump- to-...](https://thehill.com/homenews/administration/503914-trump-to-sign- executive-order-suspending-certain-work-visas-through)</comment>


Ask HN: Why are domain registrars offering pre-registrations for the new gTLDs? - <AUTHOR>

<comment><USER2> Probably depends on the registry. But two scenarios I see likely as happening:

1\. Registry has a deal with registrars to sell premium domains at inflated premium rates (eg .tv domains)

2\. Once sunrise period for TM holders is over, they are opening the registry and all the registrars offering pre-registration are treating it like the expired domain drops and hammering the registry to try and secure domains the millisecond the registry opens up. People bid/pay registrars to do this on their behalf.

<comment><AUTHOR> Thanks ohashi, I agree both scenarios seem likely. One of the things I noticed was missing from the registrars I've visited is info on pricing. This would lead me to believe they're using pre-registrations as a proxy for demand before the domains are released.

<comment><USER2> It could also be that they are working it like drops. People backorder and then if the registrar wins it, it goes to auction where people who backordered it at that registrar now bid. Highest bidder wins.

</comment></comment></comment><comment><USER3> I also don't understand how this will work...

Multiple sites offer pre-registration for domains, is it a first-in-best- dressed situation? Is it a gamble? Should you pre-register with multiple registrars?</comment>


Show HN: Fotōko – Your perfectly-ish organized photo library  - <AUTHOR> http://www.fotoko.com/

<comment><AUTHOR> Hi, I am one of the members of Fotōko's development team. I would love to hear feedback from you on our product.

Fotōko automatically organises and safeguards your entire photo and video library in the cloud making it easy to search, browse, and share from any device. Fotōko uses your Google Drive (One Drive and Dropbox coming soon) for cloud storage so you have ownership of your photos.

Moving forward we wish to integrate more cloud storage options such as One Drive and Drop Box so that users can fully exploit the free storage tier on various storage platforms while being able to browse, share or search their photos from any device irrespective of where they are stored. We are also working on OCR and face recognition features to allow better organisation and search. We would love to hear what you think about the product and what you would like to see in a product like this.

</comment><comment><USER2> How Fotōko is different from Picasa?

</comment><comment><USER3> How many devices I can sync at once?

<comment><AUTHOR> You can sync as many devices as you like. Simply connect your Google Drive with Fotōko app on your iPhone. All the photos in your Camera Roll will be uploaded to your Google Drive. The photos that are present in your Google Drive will be synced with the photo library as well. Moreover, you can also upload large folders of photos and videos in your Mac book with our OS X app.

</comment></comment><comment><USER2> comment from rohaan ishfaq</comment>


Zed Shaw: Tir Web Framework Officially Up - <AUTHOR> http://sheddingbikes.com/posts/1291412302.html <comment><USER2> So in 2010 Zed has written his own web server which runs his new framework he wrote for the new webapp he wrote.

What did you do this year?

<comment><USER3> In 2010? I reworked my Comet-based realtime game-in-a-web-server library, RailsGame.

I fully rewrote, updated and released a webapp called WantMyJob.com.

I wrote a circuit simulator game called Shanna's Pizza to start teaching my two-year-old the basics of programming. I also started doing Snap Circuits with her so she'd have a physical basis to understand the circuit simulator game. Also, had a second kid.

I wrote a Rails 3 tutorial, including an app with logins and nested resources, called RefactorIt!

I finally put together a real programming portfolio, on the web and everything (angelbob.com/portfolio).

I read up on Bayesian Statistics and Data Analysis (thanks, O'Reilly!).

I blogged and blogged and blogged.

I reworked, resurrected and took screen shots of a scary amount of my old work, partly for the portfolio. This sort of blurs with converting my old Rails stuff to Rails 3, but I did some of both.

I continued to work on my day job, of course. And gave a JRuby presentation for Engine Yard based on what we do there.

Did you know you get more done if you write it down somewhere (like a blog and portfolio) and tell people about it? True story.

That's probably part of Zed's trick, too.

<comment><USER4> _Did you know you get more done if you write it down somewhere (like a blog and portfolio) and tell people about it? True story._

Do you find that? I'm the opposite, once I "announce" something all desire and motivation for completion goes out of the window. For me I _think_ it's about the appreciation, so when I explain the idea and love it, why complete it.

<comment><USER5> It varies for me. Sometimes it's just an idea and I want to share it. Maybe I'll never do it, maybe I want to get feedback on it. Some pretty cool stuff came out of just "What-If" like Mongrel2 and Librelist.

Other times I get infected with an idea and have to crank out a prototype to see if it'd work. When I'm done, I still try to throw it up there and see what people think. Usually the process of writing about it actually helps me work out if it's worth it or not as well.

</comment></comment></comment></comment><comment><USER6> I love the natural style of page conversation on the example page. As a Java developer, I wish that this style were possible on the servlet platform:

      local login_page = Tir.view("login.html")
      local login_form = Tir.form { 'login_name', 'password'}

      local function login(web, req)
        local params = login_form:parse(req)

        repeat
            params = web:prompt(login_page {form=params, logged_in=false})
        until login_form:valid(params)

        return web:redirect('/')
      end

      Tir.start {route='/Login', main=login}

Also, +1 to this: "the framework creator shouldn't be shoving stateful/stateless dogma in your face".

<comment><USER5> The natural style is sweet for things like that. I did the Hype.la signup process with natural style and it meant I didn't have to touch the database the whole time. If they quit half-way through then no DB junk left over.

Where this kind of coroutine stuff sucks though is in anything that's "RESTy". In other parts of Hype.la I had simple Xhr callbacks that just grabbed lists of data, so the coroutines were just annoyingly in the way and half the time they were just a big loop with an if-statement for the URLs.

That's where the evented came in. In that way I just map actions to callbacks and done.

Then I ran into a few simple things that didn't work in evented and were still stateless, like the search interface, and so I use the stateless handler for that. Nice and snappy with no extra junk.

Another advantage of all this is that, if you have a part of your app that needs to be resistant to restarts, then you can craft it evented or stateless. In other parts, restarts aren't a big deal so you can do natural. And since everything is just a bunch of little processes, it scales out nice and doesn't have as much of the "gotta-copy-the-world-for-users" that Seaside upgrades do.

</comment></comment><comment><USER7> This one really surprised me: "Finally, there's not much for deployment. I run my apps in GNU screen and that's about it." Seriously? Is he that lucky, serves that little traffic, or does he run with redundant power, network, server and 24/7 monitoring in an inaccessible bunker?

I haven't been able to run even my toy web apps without something like monit - due to both things under my control and outside of it.

<comment><USER8> On my hobby projects I run stuff in screen, I haven't had a problem and my server uptime is currently above 200 days. Is it being used? Something like 1,000 concurrent users for most of the day, so yes.

I regarded this as cowboy, but as it worked for me I haven't needed to re- visit it.

<comment><USER9> It is cowboy, but there is a time and place for that. If you did this in a large organization, you'd be putting the team at risk. Since it is just you, well, do what you find prudent.

</comment></comment></comment><comment><USER10> Last time this was posted I was really interested in it. So interested in fact, I built a django-style template library to go with it because I really liked 'extends' and 'block'.

Github <https://github.com/meric/tier/>

Example <https://github.com/meric/tier/blob/master/main.lua> <http://pastehtml.com/view/1c26ovp.html>

Zed would think this is contradicting the point of Tir, though; it being a _micro-framework_. =\

<comment><USER5> Interesting, I'll take a look at this some more. My only question is, isn't plain old Lua already like django's templates. What specifically are you adding that embedded lua doesn't just give you?

<comment><USER10> Template inheritance. See <http://docs.djangoproject.com/en/dev/topics/templates/#id1>

      `Template inheritance¶
      The most powerful -- and thus the most complex -- part of
      Django's template engine is template inheritance. Template
      inheritance allows you to build a base "skeleton" template
      that contains all the common elements of your site and
      defines blocks that child templates can override.`

Having made it in lua myself, I can tell you it is indeed quite complex. ;)

The lua template only has "include" (i.e. copying another template into this template), but not "extends", (i.e. use another template as a skeleton and this template only provides details on how to fill it).

<comment><USER11> this is awesome, feel like writing it for ruby too?

<comment><USER10> I don't know ruby... but RoR is an established platform, I would think it would have something similar?

<comment><USER11> Not with the same notion of inheritance that django templates have (with multiple blocks that can be overridden in child classes). There is one project someone attempted but never finished.

<comment><USER12> Isn't this just content_for/yield(:sym)? Or are you talking about something else? [http://api.rubyonrails.org/classes/ActionView/Helpers/Captur...](http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method- i-content_for)

<comment><USER11> That's close. Nowhere near as elegant as Django templates though, in my opinion.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13>
       </comment><comment></comment><comment>-- NO TESTS </comment><comment></comment><comment>----
         You must work at a startup.

Brilliant.

Hype.la is also pretty slick. Maybe it will become the blogroll of open-source projects.

<comment><USER5> Ha, yeah I had to put that in. I find working in the valley is kind of like working with a bunch of guys before Knuth and Dijkstra established structured programming. It's like they say, "Yo, I don't do if-statements man. I use gotos only. That logic and structure crap just slows me down and busts up my creative chi."

As for hype.la, stay tuned. I gotta fix up the ad blocks and improve the UI a bunch, but I'm really aiming for it to be for FLOSS and other artists to do ads without feeling like sleeze. Definitely something I want.

</comment></comment><comment><USER14> Very cool. I was just looking for other Seaside-style web frameworks today. The "natural style" mode in Tir is just like the main way to build web apps in Seaside.

Aside from Lua and Smalltalk, what other languages could host this kind of framework? I know Ruby 1.9 has Wee, but that doesn't seem to be "ready for prime time."

<comment><USER15> Code written in the continuation monad (i.e., simple imperative style) can be translated to an Automaton arrow and fit into a Haskell on a Horse application. This approach has the advantage of type-safety and greater composability.

<comment><USER16> Not sure if I should laugh at myself for not knowing if this was a joke when I first read it.

</comment></comment></comment><comment><USER11> very cool! looking forward to trying it out.</comment>


Ask HN: See past Hacker News' homepages? - <AUTHOR>

Just thought it would be cool if there was some place I could see all snapshots of all the various HN homepages through the years.<p>Does this exist? <comment><USER2> You mean like <http://archive.org> ?</comment>


Fuller's view of the world ... - <AUTHOR> http://en.wikipedia.org/wiki/Dymaxion_projection

<comment><AUTHOR> I've recently been hunting around on HN to find various things to support or refute points made in discussions. One thing I stumbled across was

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

which then reminded me of this:

<http://searchyc.com/Dymaxion?sort=by_date>

Reading this comment:

        Another fun fact that impressed me: If you
        dumped all the people of the world in Texas,
        it will have the same population density as
        New York city.

... reminded me that even though Texans believe their state is big, if you cut Alaska in half, each half would be bigger (in area) than Texas.

I'm starting to find that searches on HN give me excellent references to primary source material. This community is one of the best places I've found for reasoned discussion, thought-provoking ideas, apoplexity-inducing comments, and pointers to investigate further.

Thank you.

EDIT: I am also reminded of these:

<http://xkcd.com/214/> & <http://xkcd.com/386/></comment>


Elon Musk Owned 30% of Tesla at IPO and He Was Not a Founder - <AUTHOR> https://grph.com/d/Roe1eqB1Ny6 <comment></comment>


The button: social experiment driving Reddit crazy - <AUTHOR> http://www.vox.com/2015/4/10/8383165/reddit-button-explained <comment><USER2> One faction known as the Knights of the Button created a Chrome extension called Squire to coordinate button presses in order to keep the timer running for as long as possible.

The craziest thing I've seen so far is that another group known as the Assassins created a fork of that extension that would claim they would press the button, but in fact wouldn't so that the timer would run out.

There are groups sabotaging other groups' code based on their goals for the button.

[https://www.reddit.com/r/Knightsofthebutton/comments/31x3c0/...](https://www.reddit.com/r/Knightsofthebutton/comments/31x3c0/the_squire_we_were_attacked_today/)

<comment><USER3> Squire dev here. We were DDoSed, infiltrated about 4 times and had an author of another similar extension turn on us. But we will persevere.

All hail the great and glorious Button! Long may we serve, long may it live.

<comment><USER4> I've had a look at your code... GTFO!

username = r.config.logged; // stealing reddit username and sending them to your own server

socket.on('alert_autoclick', thebutton.click() ); // click the button automatically when your server tells it to

socket.on('reload', location.reload() ); // reload page when your server asks to inject new code from it

and the server code isn't even publicly available...

is this a joke? do you know what malware is?

<comment><USER3> No, never heard of it. What's this 'malware'?

Also, you use the squire on your own volition.

<comment><USER4> you might want to look up 'malware' in the dictionary, you should easily recognize it, it has a picture of squire next to it.

</comment></comment></comment></comment></comment><comment><USER5> The bar chart is from [http://jamesrom.github.io/](http://jamesrom.github.io/)

Whoever made it must be a pretty cool dude.

<comment><USER6> I spend a few minutes watching the /r/thebutton (non presser) every now and then. My SO said WTF are you doing. I replied that watching the timer was just a valid form of entertainment as watching TV or playing the sims. She gaffawed. Boredom plays a big part in lots of interesting online 'games'? Art thingies? Social experiments? April fools?

The one I go back to over and over is Cookie Clicker (orteil.dashnet.org/cookieclicker/) any time I feel like getting a watch that counts my steps or a Tesco Club Card or any other gamification device -- I play the master of gamification. Or I watch the button, 13 days in and 55, 54, 53, click! Idiot, 59, 58, 57, 56, 55, click! Idiot, 59, 58, 57....

<comment><AUTHOR> Agree that Cookie Clicker is absolutely fascinating. Two of us in the office, busy and capable people, became competitive bandits for Cookie Clicker. It makes for an almost perfect study in drip-feeding content/upgrades no matter how pointless and mundane.

Hints to me that the Great Filter could well be addictive and selfish behaviour transfixing the instinctive and basic aspects of our minds.

<comment><USER7> Also Cookie Clicker raises an interesting mathematical problem. I wonder if there is a closed form solution to it, or even a polynomial-time algorithm, or if it's NP-hard.

I posed this question once when I was copying and pasting a pixel to fill a line. Given a time cost of selecting & copying vs pasting, what is the optimal number of pastes before I should select and copy? What if the cost of selecting & copying is a function of the current size of the line? That is what Cookie Clicker raises, but with more kinds of "boosts" and whose costs also increase based on how many you've purchased.

Or perhaps you can also pose it in higher dimensions later (copying and pasting to make 2d squares, or even more complicated shapes).

I wonder if algorithms can be written to compete in Cookie Clicker-type games.

<comment><USER8> It's a relatively easy polynomial problem - there was a google code jam question based on a simplified version last year

[http://puzzlersworld.com/interview-questions/google-code- jam...](http://puzzlersworld.com/interview-questions/google-code-jam/cookie- clicker-alpha-solution-google-code-jam-2014/)

</comment></comment></comment></comment></comment><comment><USER9> Some code you can write in the console to click the button at a certain time:

        sec10s   = document.getElementById("thebutton-s-10s");
        sec1s    = document.getElementById("thebutton-s-1s");
        sec10ms  = document.getElementById("thebutton-s-10ms");
        sec100ms = document.getElementById("thebutton-s-100ms");
        button   = document.getElementById("thebutton");
        time = function() {
            return sec10s.innerHTML +
                   sec1s.innerHTML; // +
                   //sec10ms.innerHTML +
                   //sec100ms.innerHTML;
        };

        pressAt = function(timeStr) {
            return function() {
                if (time() == timeStr) {
                    button.click();
                }
            };
        };

        setInterval(pressAt("00"), 100);

But even with setInterval set to 1, this won't get called every millisecond, so you can't get accuracy to the second decimal point, not that there's really any need to. (It turns out setInterval has a minimum delay. setTimeout's minimum delay is 4ms and likely setInterval's minimum delay is the same.) Just set this up and leave your computer running for the next few months and you ought to get it eventually.

<comment><USER10> Okay, now if you really want to impress me, pretend you work for reddit and write some code that would catch this kind of script and give it "cheater" flair.

<comment><USER11> Monkeypatch setInterval/setTimeout to mark people as cheaters. The more dedicated cheaters will hit the button API outside of the browser, which is pretty hard to stop.

<comment><USER12> For someone with only limited HTTP/Javascript knowledge:

"The more dedicated cheaters will hit the button API outside of the browser, which is pretty hard to stop"

How this would be accomplished, I guess from the command line ?

EDIT: found what Monkeypatch means.

<comment><USER13> The button presses are communicated over a websocket. You could make your own websocket client and communicate however you want to, such as listening to time updates and sending a click when it reaches a certain treshold.

</comment></comment></comment></comment></comment><comment><USER14> In Ludum Dare 27 (I think), someone made exactly this game. A game with a collective effort to keep "the patient" alive. One player had to press space every 10 seconds or the patient dies. Although every player was allowed to press multiple times.

I think the patient survived for 24 hours or so, which is quite remarkable for the smaller audience. If I remember correctly, this little game even made it into some German online newspaper (probably Spiegel Online).

Unfortunately, I couldn't find the game for reference.

<comment><USER15> If I remember correctly, the patient "died" after the game got too much press, and the server crashed. Instead of rerunning the game, they called it a success. Couldn't find it either, but I did not look too long.

<comment><USER16> > If I remember correctly, the patient "died" after the game got too much > press

This is both "ironic if you're taking it at face value" and a pretty good pun.

</comment></comment></comment><comment><USER17> How long until we find out what happens when it reaches 0? Let's be pessimistic and assume that everyone wants to click it. There were 3.4 active accounts on Reddit last month. 700000 have clicked it so far, so there are 2.7 remaining. Assuming an upper bound of clicking it at 1 second remaining, we get ((2700000 users) * (59 seconds/user))/((60 s/min) _(60 min /h) _ (24 h/day)) = 1843 days, or a little more than 5 years. Of course, it will be less than this. I'm not sure what the distribution of click times is, and it will definitely change as more people have clicked.

<comment><USER18> 3,410,682 (from reddit.com/about) is the number of logged in accounts yesterday, not last month.

<comment><USER19> This number also includes accounts registered after April 1st, but they are not eligibe to press The Button.

<comment><USER20> and doesn't include accounts that were registered before April 1st, but did not log on yesterday. This potentially could be a lot since it is relatively common to have more than one account on reddit.

</comment></comment></comment></comment><comment><USER21> Great growth hack. eBay auctions for button-virgin Reddit accounts have begun to show up:

[http://www.ebay.com/sch/i.html?_odkw=reddit+button&_nkw=redd...](http://www.ebay.com/sch/i.html?_odkw=reddit+button&_nkw=reddit+button)

<comment><USER22> So it's selling for about a dollar it seems.

It might be a good purchase if the account was active before this. You know, for "marketing".

</comment></comment><comment><USER23> Yeah, I had a little JS bookmarklet watching it for me for a few days, tracking the lowest number, ready to click when it got to 1 second. Of course, the websocket encountered an error at somepoint mistakenly registering an incorrect timer value and causing my script to click at 50-something seconds :(

</comment><comment><USER24> This whole social hierarchy based on colors reminds me of Jasper Fforde's Shades of Gray.

[https://en.wikipedia.org/wiki/Shades_of_Grey_1:_The_Road_to_...](https://en.wikipedia.org/wiki/Shades_of_Grey_1:_The_Road_to_High_Saffron)

<comment><USER25> It reminds me of The Wave, or the Blue Eye-Brown Eye experiment.

<comment><USER26> Or the Great Orangered/Periwinkle Clash of April Fools Day 2013.

[https://www.reddit.com/r/OutOfTheLoop/comments/2jne44/what_w...](https://www.reddit.com/r/OutOfTheLoop/comments/2jne44/what_was_the_great_orangeredperiwinkle_clash_of/)

</comment></comment></comment><comment><USER27> For anyone that's interested, I've made an open source Android app to watch the button.

[https://play.google.com/store/apps/details?id=com.nebulights...](https://play.google.com/store/apps/details?id=com.nebulights.thebutton&hl=en)

[https://github.com/babramovitch/TheButton](https://github.com/babramovitch/TheButton)

</comment><comment><USER28> This post: [http://np.reddit.com/r/thebutton/comments/31ltqd/read_this_b...](http://np.reddit.com/r/thebutton/comments/31ltqd/read_this_before_you_press_the_official/) is a good primer.

</comment><comment><USER29> It's a joke, right? I'm guessing that the timer resets itself with a "fake press" if it reaches a certain threshold.

<comment><USER30> It only resets when someone pushes it. It's been getting closer and closer to 0 as the days go by since it started. There are also bots waiting for it to get low so they can snag a low number.

<comment><USER31> >It only resets when someone pushes it.

Is there any code available to prove that?

<comment><USER32> Let's give reputable companies the benefit of the doubt.

<comment><USER33> There is no reputation on the line here. Nobody would suddenly refuse to use reddit if they automatically clicked.

<comment><USER34> ^not getting it. some engineers love to think ux/design don't matter. on the aggregate it matters more than anything else.

</comment></comment></comment></comment></comment></comment><comment><USER35> I must be old. I don't get it. I mean, I understand what is going on. I don't get why people care. I don't get why people care so much that they are screaming at each other on the internet about it.

<comment><USER36> I already posted this on /r/button a while ago, but:

"In [the The Robbers Cave Experiment], the experimental subjects—excuse me, 'campers'—were 22 boys between 5th and 6th grade, selected from 22 different schools in Oklahoma City, of stable middle-class Protestant families, doing well in school, median IQ 112. They were as well-adjusted and as similar to each other as the researchers could manage.

"The experiment, conducted in the bewildered aftermath of World War II, was meant to investigate the causes—and possible remedies—of intergroup conflict. How would they spark an intergroup conflict to investigate? Well, the 22 boys were divided into two groups of 11 campers, and—

"—and that turned out to be quite sufficient.

"The researchers' original plans called for the experiment to be conducted in three stages. In Stage 1, each group of campers would settle in, unaware of the other group's existence. Toward the end of Stage 1, the groups would gradually be made aware of each other. In Stage 2, a set of contests and prize competitions would set the two groups at odds.

"They needn't have bothered with Stage 2. There was hostility almost from the moment each group became aware of the other group's existence: They were using our campground, our baseball diamond. On their first meeting, the two groups began hurling insults...."

Eliezer Yudkowsky, The Robber's Cave Experiment: [http://lesswrong.com/lw/lt/the_robbers_cave_experiment/](http://lesswrong.com/lw/lt/the_robbers_cave_experiment/)

Distressing how well it fits, isn't it?

<comment><USER35> Quite distressing. Especially considering we've now had several decades of these sorts of stories in the popsci press. You would think people would be more aware of these sorts of issues.

Like, don't people _know_ freemium smartphone games are a scam? I see people who had the same education as me, people I know have read the same psychology textbooks, paying hundreds of dollars to play these games that have no compelling "fun" factor. These games have such shallow verniers over their slot-machine nature that I don't understand why supposedly intelligent, knowledgeable people can't see them for what they are.

I get needing entertainment and I get not spending 100% of your time single- mindedly focused on "business" or whatever. I watch movies, play games, read books, drink in bars, go to sportsball recitals. I'm here, posting on HN. At least with HN I, get practice writing, have my opinions challenged, learn about new and interesting things, and get a chance to share my own work for feedback and traffic. I don't get money out of HN, but I do get _real_ things out of it.

<comment><USER37> > games that have no compelling "fun" factor.

"Fun" is subjective. To the people that play these games, they are fun and they are deriving enjoyment from them. I don't understand why the enjoy it either, but then again, they probably see some of my hobbies and wonder why the fuck I would spend time/money on them.

Live and let live man.

</comment></comment></comment></comment><comment><USER38> How did the admin add interactive HTML to a subreddit? Is this possible for any subreddit, or was this something special organized by the company? The intro post doesn't seem to delve into those details.

<comment><USER39> It's actually pretty cool. Makes me wonder if they're working on abstracting it out so other subreddits can utilize tools like these as well.

<comment><USER38> yes, exactly. could be some cool applications if they extended the platform.

</comment></comment></comment><comment><USER40> And now this will drive traffic to the subreddit and continue to slow down the progress to 0. :(

</comment><comment><USER30> There's even malware going around, causing people to push the button at early numbers.

</comment><comment><USER41> Reddit would do well on the island of Lost

<comment><USER42> Or poorly in the Cold War.

</comment></comment><comment><USER43> Something about the simplicity of this experiment and its additional meaning adoption makes it sublime

</comment><comment><USER44> This is the purest system invented for earning imaginary online social status so far.

Instead of having to make insightful comments to earn imaginary karma points in HN or provide helpful answers on Stack Overflow to earn imaginary badges, with this new system you only have to stare at your screen for a really long time and click a button at just the right time to earn higher status!

</comment><comment><USER22> How does this work when reddit is down? I probably don't know a more unreliable site than reddit is, so this must have happened plenty of times since April 1st.

<comment><USER45> That's because it's bullshit. Reddit goes down all the time.

<comment><USER46> A particular server goes down (well, gives you a busy message), the whole of reddit doesn't "go down".

Also this uses websockets to different servers outside of the normal content servers.

</comment></comment></comment><comment><USER47> To be honest, while I read reddit daily I have never once seen mention of the button nor do I have any inclination to even go to the sub.

so how was this introduced to reddit, it was not on the front page for long if ever. if not for reading here I doubt I would have ever encountered it

<comment><USER48> > What is the button?

> The button is a feature that the popular social media site Reddit introduced > on April 1, 2015. It has its own subreddit at /r/thebutton.

After April 1st it hasn't been that visible though

<comment><USER49> Button-related posts keep making it to /r/all, though (my main Reddit window).

</comment></comment></comment><comment><USER50> Say what to a community of hackers? :D

        setInterval(function(){
          var seconds = parseInt($("#thebutton-s-10s").html()) * 10
                      + parseInt($("#thebutton-s-1s").html());
          if (seconds > 15 && seconds < 20) {
            $("#thebutton").click();
            }
        }, 100);

<comment><USER51> They detect 'cheaters' and flair people as such.

<comment><USER52> really? How would you detect a clientside script like this?

<comment> ryan-c

        function validateClickEvent(e) {
            var r = e.target.getBoundingClientRect();
            if (e.x >= r.left && e.x <= r.right && e.y >= r.top && e.y <= r.bottom) {
                console.log('looks legit');
            } else {
                console.log('faked click');
            }
        }

Set this as the click handler. The click method is browser specific, but on Chrome the x/y coordinates on the event will be incorrect. A smarter script could fool this, though.

<comment> tom-lord I don't know much javascript, but that looks extremely error prone to me. How would it behave in different monitor sizes? With zoomed in/out screens? On mobiles, tablets, etc?

And it would still be pretty easy for a cheating script to work cheat your validation!

<comment> ryan-c It's just an example, but zoom should scale both the element coordinates and the mouse coordinates. This sort of validation can be made a lot more elaborate.

</comment></comment></comment></comment></comment></comment><comment><USER53> The last couple hours I hacked together a chrome ext that notifies you whenever anyone presses the button (oh god) and also can run a robot to press it for you. It works, tho I don't claim there's no bugs.

The github:

[https://github.com/humanarity/reddit-thebutton-push- it](https://github.com/humanarity/reddit-thebutton-push-it)

And the Webstore:

[https://chrome.google.com/webstore/detail/rthebutton- robot/m...](https://chrome.google.com/webstore/detail/rthebutton- robot/mbjhhcjnpagkeeeiimfnmhbfmadhcaoe)

Check it out! :)

</comment><comment><USER54> Diabolical idea: "First 10,000 people to give reddit gold to people in /r/thebutton are allowed to press the button a second time."

Dunno if folks would tolerate that, but I get the sense it'd work.

<comment><USER55> Wow, a pay-to-win version of Reddit. I guess there are probably people already guiding their own comments for visibility.

</comment></comment><comment><USER56> 1\. Open JS Console. 2\. Copy and paste the following, but don't submit: var n = {seconds: $("#thebutton-timer").val(),prev_seconds: r.thebutton._msgSecondsLeft,tick_time: r.thebutton._tickTime,tick_mac: r.thebutton._tickMac}; 3\. Wait for the timer to hit a time you like and hit ENTER to record the timer seconds and tic MAC. 4\. Repeat until you're happy with the score. 5\. Paste the following into your console and hit ENTER: $.request("press_button", n, function(e) { console.log(e) });

</comment><comment><USER57> Ideal recipe for "how to keep dumb person busy" ;)

<comment><USER58> Just call 401-285-0696

</comment></comment><comment><USER59> How do they make sure just 1 click registers? I'd imagine 10k people are clicking the button at the same time, but the counter keeps increasing by 1.

<comment><USER60> They don't, you can have multiple people get the same flair at the same time. Most trackers will tell you how many clicks occurred on each reset.

</comment></comment><comment><USER61> Interesting... is this actually run by Reddit?

I guess you could use the data from this to determine how the network functions. It's depth, breadth, how quickly messages propagate through the network, who the influencers are and so forth.

Edit: Watching /r/button is interesting... almost makes me wish I had a Reddit account, but there would seem to be no point now as I wouldn't be permitted to push the button.

</comment><comment><USER25> This social experiment is still running.

Some good things have come out of it, most recently: [https://www.reddit.com/r/thebutton/comments/33jpwe/the_endga...](https://www.reddit.com/r/thebutton/comments/33jpwe/the_endgame/)

</comment><comment><USER62> My Button Press is for sale- I think this is something that VCs could all get behind here...

[https://www.reddit.com/r/thebutton/comments/32hf6y/for_sale_...](https://www.reddit.com/r/thebutton/comments/32hf6y/for_sale_my_button_press/)

</comment><comment><USER63> There was a famous viral online game (OK web page) where visitors had to do this to keep a cute astronaut in a hibernation unit alive. You could hear her heart beat and breathing. She eventually became a skeleton. Felt more personable and engaging than just a button with no character, though.

<comment><USER64> Do you have anymore details on this game? I can't find anything on it, but it sounds interesting.

I agree that the game you describe is more personable, but /r/thebutton does have an air of mystery going for it. The simple premise has left room for a lot of interpretation. Is it better to press the button, or stay gray? Which colors are the most desirable? What will happen after the timer runs out? etc.

<comment><USER63> Ah, someone else linked it: [http://dom.ink/post/59611971605](http://dom.ink/post/59611971605)

</comment></comment></comment><comment><USER65> [http://deepthought.be/thebutton/](http://deepthought.be/thebutton/)

Disclaimer, I didn't make it.

</comment><comment><USER66> Lost. All over again. Will the island disappear?

<comment><USER67> 4 8 15 16 23 42

</comment></comment><comment><USER68> "This webpage has a redirect loop"

</comment><comment><USER69> I just hope I get a nice badge for it. I missed out on the orangered/periwinkle thing.

</comment><comment><USER70> Is it true the last person to press it wins a million dollars?

</comment><comment><USER71> >coveted yellow flair

Until of course orange and red start to appear.

</comment><comment><USER72> "But as more people join the community, more will push the button, delaying the day of reckoning."

Wrong. Because : "Only accounts created before 2015-04-01 can press the button"

It's not a growth hack...

<comment><USER73> I think that by "community", the author meant the subreddit community of people interested in the button. There are many people with reddit accounts that are still unaware of the button.

</comment></comment><comment><USER74> That's why Reddit doesn't click with me.

</comment><comment><USER75> 3 days of watching and I got the yellow!!!! 30s

</comment><comment><USER76> why didn't hn had one ?

</comment><comment><USER77> 4, 8, 15, 16, 23, 42

</comment><comment><USER78> Honestly this just highlights some of the negative things about the internet to me.

<comment><USER79> I agree. How sad that some people have to invent these idiotic memes to fill up their time.

<comment><USER80> Meanwhile you're wasting time on Hacker News.

</comment></comment></comment><comment><USER81> Yeah, so I created a reddit post --- to persuade Newbs to NOT press the button until < 25 to maybe give some of us a shot at a good number...and see what's out there! [https://www.reddit.com/r/thebutton/comments/32eue3/hey_idiot...](https://www.reddit.com/r/thebutton/comments/32eue3/hey_idiot_dont_press_that_button_till_it_says_25/) If you feel inclined vote it up, so it becomes #1 on the thread and first thing people read.

<comment><USER82> this isnt reddit, nor is it the correct place to promote your reddit thread.</comment></comment>


Ask HN: Why would you turn down an offer from Google? - <AUTHOR>

Someone I know received an offer from Google and turned it down. Is there any reason I shouldn't be bashing the guy?<p>In other words and a bit more serious: why wouldn't you work for Google? (or other major player for that matter: Yahoo!, Microsoft, Amazon, Facebook...) First, I thought "what was going on his mind?" but then started thinking deeper about this. What's your opinion? <comment><USER2> Google might be a very nice place to work, but there are plenty of reasons one might not want to work there.

Google might be a lot more dev-friendly than most big companies, but it's still a big company. Even at Google, that means you have to deal with bureaucracy, corporate politics, etc. It also means that the things you're doing might be shut down by management or just neglected. There's not nearly as much choice in terms of technologies you're using. Google also doesn't pay amazingly well either from what I've heard.

And if you've managed to get an offer from Google, you probably have other options, too. Picking Google just because they're Google seems a bit short- sighted to me. There are very possibly other opportunities that are a better fit for you or that you might like more.

</comment><comment><USER3> Why would you bash someone for turning down a job offer?

The decision about where to work is very personal, and it includes a lot of factors that are hard enough to sort through when it's your own life and you have full information. Not everyone's going to be drawn to the most lucrative or most prestigious position.

</comment><comment><USER4> Why would you bash someone that doesn't share your desires?

Some people may not want to be a minor influence on a large machine. Perhaps he didn't think his position there would have any measurable (or notable) impact and that wasn't what he wanted.

Alternatively, ask him. He's the only one that knows the answer.

</comment><comment><USER5> Why would you automatically assume it's a mistake for him to turn down a job at Google (or Microsoft, or Apple, etc)?

A job with Google, Microsoft, etc probably looks better than average on your resume when you're job hunting again in the future, but other than that I'm not sure why you'd evaluate it any differently than you would an offer from any other company.

</comment><comment><USER6> Regardless of why he turned down the job, why would you bash or judge him at all? Especially since you aren't 100% sure that he doesn't have a good reason for turning the offer down, it doesn't seem productive at all to say anything bad about the guy.

</comment><comment><USER7> It sounds glamorous going to work for Google and it definitely looks sexy on a resume, but if it's not a good fit for him, then the right thing to do is pass on it.

</comment><comment><USER8> If it's for work I'm not interested in, in a place I'm not fond of, the name of the company making the offer likely isn't enough to hold my interest.

</comment><comment><USER9> Maybe you should ask this question from him.

I could think of a million reasons not to want to work at Google, or any other major player, ranging from having to relocate through having a problem justifying working for a multi-national, huge company, to simply not liking the name.

Or all of the above.

Personally, I'd shake his hands for having the strength to say no.

</comment><comment><USER10> I have no idea if any of the following applies in your friend's case, but there could be a number of factors influencing such decision:

      * family / friends / girlfriend
      * leaving his home country
      * having a nicer job
      * not being tempted by the challenge
      * not being tempted by the money
      * being scared of the big jump

etc...

</comment><comment><USER11> A student friend of mine was contacted to work in summer for Facebook, and she declined the offer for Microsoft internship program instead. I've asked why and she told me that Microsoft was their exact company where she wanted to work. She also worked in last summer in Redmond so she really enjoyed developing there.

Also i've heard from the same girl that Google sucks hiring cool people, like a friend of she applied for Google and they contacted him 6 months later that he moved to SF to work for another company, from a 1 year of interviews. 4 years they called him again just to give feedback of the process.

</comment><comment><USER12> I wish I did. But I fixed that problem. It isn't always as you read in the paper. Sometimes, for certain personalities or expectations, the place works overtime to make you a datapoint-- then to kiss you goodbye.

Or, maybe they didn't pay enough.

</comment><comment><USER13> It seems to me that life is more than just who you work for.

</comment><comment><USER14> Not enough money.</comment>


Radio OneLlama Goes Public - <AUTHOR> http://www.onellama.com Greetings, HN!  Couple of changes we've made recently:<p>- You no longer need an invite or registration to use the site - API is available at http://company.onellama.com/section/labs/api/ - Feel free to experiment with the API (no keys necessary for now), if we really like what you build, our connections with the North Pole enable us to send you a free iPod Touch - iPhone version is in the works - Flash widget is in the works - Improvements made to search (added a location search), with more info given on results<p>Have a Happy Holidays!  Cheers, -The Llama <comment><USER2> Onellama doesn't stack up well against it's competitors whatsoever. Here's why:

ONELLAMA vs DEEZER.COM To compare, deezer.com allows you to both make pandora style radios, discover new music, & make your own free to play playlists and it's all easy to do. Onellama only gives you the option of listening to 30 second snippits or paying for the rhapsody player to listen to your music + their new radio service. So why would you choose Onellama when there are better services?

THEIR MUSIC SEARCH FEATURE When searching for music, it brings up only a few songs by the artist you're looking for and presents with other related options. This is sometimes good for discovering new music, but often you just want more songs from the artist you searched for and they don't let you easily do that. Also, the related music if often overly mainstream music - not cool if you like indy stuff.

OVERALL INTERFACE Onellama has a penchat for developing confusing interfaces. Sure, they're somewhat neat as far as creative flash design, but they come together to make a pretty confusing experience. It's really hard to find what you actually want. For instance, it's great that they just launched their radio - but where did the music search feature go? Also, within their music search feature - it brings up some crazy interface for searching for related music - but I can only play 30 second of music each?

RADIO The radio is not that bad. Despite the radio search feature being a little confusing to a new user (who will type a band they like and expect to hear that band - not some other music) it's probably one of the best online tools now for searching for radio stations that play what you like.

So overall Onellama, you have potential, but the way it's coming together needs some serious improvement to stack up against competitors like deezer.com. Here's what I recommend.

1\. SIMPLIFY YOUR INTERFACE!! \- One your homepage, make one button for Radio, one for music search, and one for personal playlists. Right now you're hiding search functionality & putting way too many options for your radio on your direct homepage.

2\. Make it free to play music Downloading Rhapsody sucks and turns people off. Make it free to play on your website.

Starting with those two things will help the quality of your website a lot. But right now, it's substandard compared to your competitors.

</comment><comment><USER3> Ok, after some playing I think I got this.

First of all, I don't think it works in Google Chrome (Windows XP) .. every station I tried just errored saying it couldn't load the stream. Same stations worked in Firefox.

The interface is neat, but when I typed my artist in I got a list of random radio stations. It would be nice to show us a tiny bit more info on the station before I load it

It seems more obscure artists are totally broken. Try typing "Godspeed you! Black emperor" I love the band, but I know they most likely won't show up on online radio due to the length of songs and the results seem to show that .. got a bunch of weird results that did not even match the artist at all (Soul? No.)

Either way ... Very interesting I have to say, will definitely give it a few more tries.

Edit: Also needs some volume normalization. Getting my brain blasted despite being on Volume-2 on some stations and then a nice quiet sound on others is no fun.

</comment><comment><AUTHOR> Changes:

[1] No longer need an invite or registration to use the site [2] API available at <http://company.onellama.com/section/labs/api/> [3] Feel free to experiment with the API (no keys necessary for now), if we really like what you build, our connections with the North Pole enable us to send you a free iPod Touch [4] iPhone version is in the works [5] Flash widget is in the works [6] Improvements made to search (added a location search), with more info given on results

Cheers, -The Llama

</comment><comment><USER4> "Founded by some of the world's leading experts in machine learning and semantic web, One Llama offers a unique approach the world of personalization and recommendation combining the best techniques from collaborative filtering and machine learning."

Who are these experts?

</comment><comment><USER5> Is it winamp people?

I hope so because if not their use of the llama and online radio will cause confusion.</comment>


How I Open Source - <AUTHOR> http://blog.jayfields.com/2012/05/how-i-open-source.html

<comment><USER2> I agree and I've been trying to clean up some hacks just a bit (things like removing API keys that should have been in a config file from the start…) and put them on GitHub. Not because they're great and the world needs to know, but mostly because someone, somewhere, might come across it and get something out of it.

Though this difference between "open-source project" and "putting code out there" is where I'm not sure what companies/recruiters think about when they say "open source contributions is a plus". Most likely they'd love to see someone who is a core committer to an important project, but I would think that the truth is that not many developers have contributed significantly to a medium to major open-source project.

I contributed mainly to one project some time ago, but nowadays, I prefer to work on my own things even if they are much much smaller.

<comment><USER3> As someone who's done a fair bit of hiring, I'm happy to see anything out there at all. At least it gives me some real code to look at.

Of course, having contributed to (or better yet, created) a widely-used project is an even bigger plus. But something is usually better than nothing, unless that something is code so awful that it makes me not want to hire you ;)

<comment><USER4> How often have you been able to hire a core contributor or creator? I ask out of curiosity because it seems most of the OSS guys I follow are independent consultants, and don't fit the profile of being an employee somewhere.

</comment></comment></comment><comment><USER5> I've definitely had this hesitation before and, like with programming, the more I publish and open source things, the easier it becomes. It might not be perfect, but good programmers can figure it out without help or novice ones can ask questions and show you where you need to explain things in more detail.

I've always wanted the organized README file, the detailed CHANGELOG file, the pretty bootstraped github page, and the polished docs, but it takes effort to get there. The little details along the way have tripped me up. After creating 3-4 active projects now on Github, I've worked through most minor details, cleaned up my older projects, and raised the overall quality of all my projects.

</comment><comment><USER6> That's a great article. I have made a similar experience, too. However, there's one thing I strongly disagree with. From the article:

 _> I have no qualms with walking away from projects, as I expect that if the idea is valuable, someone else will be happy to step up and take my place;_

Up to here I agree. However, the article continues with:

 _> it's more likely that several people will step up and the strongest will survive - which is best for everyone._

To my experience, this is the #1 reason why promising projects die (by slowly converting to crap): The maintainer goes away, quietly, leaving everyone in confusion. I always thought this would happen only by accident (previous maintainer overestimates his/her free time). But I'd never have thought anybody would do this on purpose.

It is really minimal effort to drop a quick note about dropping the project and naming a successor.

<comment><USER7> Yep, look at Node.js when Ryan Dahl passed off the reins to Isaac Schlueter. The project is obviously strong as ever, and I think it probably helps that they're both at Joyent. So maybe the succession planning lesson learned here is to name a successor AND make it someone you can continue to regularly communicate with.

</comment></comment><comment><USER8> 'Just get it out there, it'll be used or not.' I love this point: there's no need to try and hit perfection, just put it out there and if it's useful people will help you. That's the beauty of open source.

</comment><comment><USER9> I think all this applies only to developer tools/libraries. There interested people can also help i.e. they find a bug and fix it and if they are nice, they contribute.

Projects for end-users tend to either have a corporate interest behind them, are ex-commercial projects, have a strong core developer team without which the project will die or just live and die unnoticed.

As in every project, if you think 90% is done actually less then 50% is done. Documentation, installers, etc. are all a lot of work. Try getting a new package into the major Linux distributions!

If you do not have documentation, installers etc. you won't get users and your project will be irrelevant - if you are lucky someone contributes, but most often everybody has his own pet projects in which they are emotionally invested.

</comment><comment><USER10> This is great. I think the key point of this, is that you gain nothing by keeping your code squirreled away, but there is a very small possibility someone else might need something similar and reuse your code if you do put it out there.</comment>


VisUAL: A highly visual ARM emulator - <AUTHOR> https://salmanarif.bitbucket.io/visual/ <comment><USER2> The one thing that immediately caught my eye is the lack of fixed-width-ness (for lack of a better term) in the value displays. IMHO besides being somewhat annoying to read it can be rather misleading, which is bad especially for something "designed specifically to use as a teaching tool". It's misleading because it doesn't show that the storage for the values is fixed-width. For example, this clearly shows that the registers are 32 bits and never anything but:

        R0 0000BEEF
        R1 000BEEF0
        R2 000000BE
        R3 00000001
        R4 BEEF0000
        R5 00005F77
        R6 00000000
        R7 00000000
        ...

I've taught Asm before and seen so many students get this wrong that it's worth calling out. In fact the right example under the "Error Correction Suggestions" section gets this wrong too --- that's an assembly/syntax error, not a runtime error. (ARM's immediate value encoding is also worth looking at if you haven't seen it before, since it's not just a single 32-bit value either: [https://alisdair.mcdiarmid.org/arm-immediate-value- encoding/](https://alisdair.mcdiarmid.org/arm-immediate-value-encoding/) )

The other thing that I'd suggest as an improvement is a 16-byte-hexdump mode with ASCII on the right for "View Memory Contents". Other than that, with perhaps the exception of "infinite loop detection", the other features look useful.

</comment><comment><USER3> Is there a video we can see this in action? I wouldnt ever use a tool like this because my work doesn't require it, but this stuff still fascinates me and I'd like to watch someone use it.

</comment><comment><USER4> This simulator since it is based on the unicorn,keystone,capstone framework, has a lot more instruction support(and architecture support): [https://github.com/hugsy/cemu](https://github.com/hugsy/cemu) .

Its front was just thrown together though, and it has a few issues. It would be nice if it ever develops into having a rich front end and progresses towards what VisUAL has.

</comment><comment><USER5> I like this project, and really appreciate that there's a Linux version. Looks very polished, friendly and inviting, so kudos.

Maybe some code samples could be a good addition.

I used a similar program to learn assembly, GNUSim8085, targeting the Intel 8085 architecture and is packaged for most distros.

<comment><USER2> _To be able to use VisUAL, your system must be compatible with the Java 8 Runtime Environment_

Theoretically it should run on any platform with a JVM, although the lack of a JAR download (as well as 32-bit Windows) is a little odd.

Edit: I can confirm that the 64-bit Windows download consists of mostly a 64-bit JRE (56MB) and a JAR (<5MB), the latter of which works on 32-bit Windows too.

<comment><USER5> Yes, I realized after a while that it was in fact a Java application since context menus have the default Java look and feel.

</comment></comment></comment><comment><USER6> If anyone wants to learn ARM assembly, a program called ARMsim and the pdf documentation you can find is a pretty good way to do it. You can step through, set break points and follow tutorials to learn with a gradual buildup in difficulty.

</comment><comment><USER7> This was posted here some time ago; in that thread there are links to other tools that you may find interesting: [https://news.ycombinator.com/item?id=10787226](https://news.ycombinator.com/item?id=10787226)

</comment><comment><USER8> What is the license of this program? I couldn't find it on the website.

</comment><comment><USER9> It seems very good project. Because I am using fedora I couldn't use it though, I wish there were a rpm package too. or at least linux .run package would be great.</comment>