Multithreaded toolkits: A failed dream? (2004) - <AUTHOR> https://weblogs.java.net/blog/kgh/archive/2004/10/multithreaded_t.html <comment><USER2> Photon, the old GUI for QNX, supports some degree of multithreading. You can update the values of various display elements such as meters, progress bars, and text displays from other threads. That GUI is often used for control panels, with real-time data coming in that needs to be current on the display, which is why they made that work.

It's going to be interesting to see what happens when someone implements a new GUI in Rust. The classic problem with GUIs has been that ownership management for both allocation and locking was a big problem. Rust's borrow checker can help a lot with the bookkeeping needed to get that right.

<comment><USER3> Rust prevents races but not deadlocks, which is one of the bigger problems in multithreaded GUI code.

<comment><USER4> Locks turn out to be unnecessary for multithreaded code. A ringbuffer of messages is only slightly more complex, yet the gains are massive. Both in performance and simplicity.

It's possible to manage a ringbuffer without any locks. The trick is to have a counter for the producer thread, and a counter for each consumer thread. Whenever the producer wants to know "Is it safe to add a message?" it takes the minimum of all consumer counters, modulo the size of the ringbuffer. The result is the smallest index that the producer must not write beyond.

In other words, you always know when you're producing messages too quickly and need to wait on the consumers. And the consumers know when there's a message waiting -- they just look at the producer's counter. Blazingly fast, and no locks. Cool trick!

<comment><USER5> I would like to read more about what you described here. Know of any good articles or open source projects where this is done?

<comment><USER6> There are multiple ways to make a lock-free ringbuffer; most use some sort of similar trick with per-consumer atomic counters, though I hadn't heard of something as simple as the minimum-modulo trick described in the gp! Some implementations:

[http://mechanitis.blogspot.com/2011/07/dissecting- disruptor-...](http://mechanitis.blogspot.com/2011/07/dissecting-disruptor- writing-to-ring.html)

[http://www.boost.org/doc/libs/1_59_0/doc/html/boost/lockfree...](http://www.boost.org/doc/libs/1_59_0/doc/html/boost/lockfree/queue.html) \- hard to find implementation details though

[http://moodycamel.com/blog/2014/a-fast-general-purpose- lock-...](http://moodycamel.com/blog/2014/a-fast-general-purpose-lock-free- queue-for-c++) (uses per-producer counters instead, and relaxes some ordering guarantees; see comments)

</comment></comment></comment></comment></comment><comment><USER7> Well, its also a poorly motivated dream unless you have a sexual fetish for the Java style of abstraction where everything is completely independent. Who the heck wants multi-threaded GUIs?

User interaction proceeds sequentially, so most objects don't require locks. The rare exceptions in my software is rendering or IO on a separate thread, and these don't nicely fit abstraction models, as mentioned in other posts they involve C-style state machines like OGL.

A multi-threaded GUI seems like a great way to kill performance, with little advantage.

<comment><USER8> Anyone who has seen the responsiveness of e.g. AmigaOS under heavy load next to many modern systems might be inclined to want (more) multi-threaded GUIs.

Heavy use of multi-threading to disconnect GUI updates from the actual work was essential to making that happen.

AmigaOS sacrificed throughput over responsiveness all over the place (e.g. something as trivial as cut and paste from a terminal would easily involve half a dozen threads with message passing).

You don't need separate threads for every little component, though.

<comment><USER9> Was the UI really heavily multithreaded compared to today's systems? I thought there was a lot of events and message-passing going on in AmigaDOS much like in current GUI systems.

<comment><USER8> Depends on what you mean by "heavily multithreaded". And yes, you're right, there were lots of events and message passing, but that message passing went between different threads.

I mean to write this up for a blog post and do some proper diagrams, but here's a rough overview of the state transitions when handling terminal IO for AmigaOS and reimplementations of the API, like AROS (this is where I got hands on experience with it - I extended the AROS terminal handling):

Low level interrupt sources will be handled by "devices" such as "keyboard.device" and "gameport.device" (the latter handles the mouse/joystick ports). These will feed input events into "input.device".

The input.device is opened by any component that wants to handle input events. This includes the "console.device" which is responsible for providing a "raw" terminal in a specified rectangle in a window. It handles low level input processing, and turns keyboard and mouse input that are relevant to the console/terminal into higher level events which it passes on to clients, as well as take commands (such as "move cursor to position (x,y)" or "write text xyz" and render the terminal).

Above the console.device sits the console-handler (applications can, and often do open console.device directly if they want a low level interface). This is responsible for opening a window, creating a console.device that covers the window, and "cooking" low level input into higher level input and vice versa for output.

The "gadgets" (widgets; buttons etc. in the windows) will be handled directly by intuition (the GUI system) in a separate high priority thread.

If you then do cut-and-paste, there are additional complications: "conclip" needs to be running. This receives requests to cut or paste via messages, and mediates access to the clipboard.device. The clipboard.device again manages reading/writing files in the relevant clipboard volume. That will involve talking to the appropriate filesystem handler, which again may write to a device (such as trackdisk.device for the floppy drives).

Pretty much all of these components will run as their own separate threads. And most of their interaction is via messages put on a queue.

So if you choose to "cut" a section by pressing a key combination, an interrupt will be fired to keyboard.device, which will add an event via the input.device which the input handler thread ("task" in AmigaOS) will pass to the console.device thread via a message, which will pass it on to the console- handler, which will pass a message to conclip, which will pass the data on to the clipboard.device which will send a message to the relevant filesystem, which may send a message to a low level device. After sending a message to conclip, the console-handler will send a message back to the console.device if there's any rendering required.

The reason for all of this is that coupled with careful priorities (UI rendering and input is running in high priority threads), the system appears very responsive, while a lot of this happens behind the scenes.

E.g. the clipboard system on the Amiga has to deal with a system where the clipboard _could_ have been reassigned from the ramdisk where it'd usually be, to floppy, so it really couldn't reasonably be "inline" without making the system unresponsive.

In that respect AmigaOS was more multithreaded: There's all kinds of things we consider fast enough to do "inline" now that was put behind a thread-boundary because it was either unpredictable or too slow to be done inline back then.

<comment><USER7> But I think the thing missing is that each of these threads ran on the same CPU (right?), and thus things like torn reads and writes weren't an issue, so they didn't need to use expensive std::mutex or std::atomic everywhere.

Today, we have single concurrent execution by enforcing a single GUI thread, at the time of the Amiga they had single concurrent execution because that was the only execution they had.

<comment><USER8> They ran on the same CPU, but you still had to use mutexes and atomic operations because it had fully pre-emptive multi-tasking, and so your application had to be ready to lose execution from one instruction to the next. Torn reads/writes definitively _were_ an issue for higher level code (unless you could be guaranteed that your construct would translate to a single m68k instruction), and needed to be kept in mind even in assembler in some situations (see below).

In fact, you'll find lots of Amiga-software being more brutal and enforcing serial-execution for critical section by using Forbid()/Permit() pairs, which will outright disable the scheduler, or even using Disable()/Enable() (disables interrupts too). Of course this is/was very much frowned upon for all but implementing atomic operations, though even this is not _guaranteed_ to be totally atomic in an Amiga system without taking care.

The need to protect against other threads/tasks is/was one of the first things hammered into the heads of Amiga-developers exactly because it was so new to most, who would usually come at it from 8-bit home computers where the standard procedure was that you fully controlled the computer except perhaps for some very trivial interrupt handlers (which most software would take over control of anyway).

And while each of the normal threads would be running on a single CPU in a basic Amiga, any number of devices could DMA - the Amiga depended heavily on this -, and additionally both the Copper (very basic "GPU" of sorts used to set up "display lists" to manipulate various registers etc. though not really limited entirely to graphics) and the Blitter could access memory at any time too, so you very much had to at least in theory be prepared to deal with memory changing _during_ execution of an individual instruction if working in "chip-memory" (the Amiga roughly works with two types of memory: "chip-memory" is memory where auxilliary hardware can steal bus-cycles from the CPU; "fast- memory" is memory that only the CPU can access).

Also note that while unusual, there _were_ true multi-processor Amiga-setups: There were "bridge boards" for the A2000 which effectively were an x86 PC on a card, where the "graphics card" was a buffer in chip memory that would get displayed in a window, and which would receive input from the Amiga keyboard and mouse. There were also PPC accelerator boards (a release of AmigaOS4 for "classic" Amiga hardware with PPC accelerator boards exists; it basically runs everything it can on the PPC, just like for "new" Amiga hardware), though usually these would disable the M68k while the PPC was executing stuff (but I'm not sure if this was enforced by hardware or if it was done by the OS patches for simplicity).

I used to love to tell people of all the different CPUs in my A2000: A 68020 with the 68000 as fallback (if you soft-disabled the 68020 for compatibility) on the motherboard. A 6502-compatible core on the keyboard (the A500 and A2000 keyboards had an embedded SOC chip with a 6502 core + RAM + PROM as the keyboard controller). A Z-80 on my harddisk controller. An 80286 accelerator board + 8086 fallback on my bridge-board... Of course of the 68020/68000 and 80826/8086 pairs only one of each architecture could ever be running at once.

<comment><USER7> I really enjoyed reading this post, and it looks like the Amiga was ahead of its time.

<comment><USER8> It was a fantastic machine. Unfortunately Commodore all the way through (from long before the Amiga) was an absolute dysfunctional disaster of a company, and it was a miracle they lasted as long as they did (and a testament to the calibre of people that kept saving the company from self-inflicted wounds)

The biggest problem being perpetual under-investment in R&D, and management meddling that systematically whittled away at the lead they once had. E.g. the archetypical example is the Amiga4000. On one hand it is the "flagship"; the biggest, fastest classic m68k Amiga produced.

On the other hand, it arrived late, was ridiculously expensive, and was slow for what was there. The problem? New management wanted to start all projects over from scratch and put their stamp on them.

IDE, for example, was suddenly pushed onto engineering. Without understanding that the Amiga used SCSI for a reason: IDE of the time loaded the CPU too much. Fine on a single-tasking OS, or on machines with more CPU, but the Amiga was built around offloading everything. It was the only thing that kept it competitive in the face of mounting problems for Motorola with upping the speed of the M68k range (work was underway to evaluate alternative CPUs; PA- RISC was the lead contender at the time; in the end Commodore went bankrupt before making a decision, and third parties chose PPC).

The A4000 was the result: IDE dragging down IO performance; a broken memory sub-system due to rushed redesigns; a butt-ugly case compared to the sleek A3000, and trying to compensate for the other problems by going for a 68040, but going "cheap" and picking one of the slower versions and yet stil ending up too expensive.

The truly crazy thing, though, is that as they were doing this, the "A3000+" was pretty much done. It didn't have quite as fast a CPU, but was a step up from the A3000. It had AGA (the last custom chips that the A4000 also got), and a range of other improvements, such as a DSP providing high-end sound (8x CD quality channels), and that could also double as a built in modem. And it kept SCSI...

The best part? It was _far_ cheaper than the A4000, and would've been ready much faster. Of _course_ Commodore had to axe it...

Being a fan of the Amiga at the time was painful...

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> BeOS did this fairly well, although I would say the biggest problem is when you activate the UI and the underlying app has become unresponsive... When your app crashes, you want your UI to reflect the crashed state of the app and similarly become unresponsive.

<comment><USER11> The developers of BeOS went on to do Android and went with the single thread model, partly because BeOS had a big problems with buggy apps full of race conditions and deadlocks.

Though IMO the Android API is incredibly confusing for a lot of developers. I've found very often that some devs (the more junior ones) don't understand that services and activities are just objects all hanging off a single process and event loop. Bizarre hacks to let services "communicate" with activities when a simple static global would have worked fine tend to abound.

<comment><USER12> Those bizarre hacks help the service don't crash when the service needs to talk back to an activity that just got replaced between request/response cycle, because the user had the strange idea to rotate the phone.

<comment><USER13> If you had just used a static there'd be no need to talk to the activity directly. The bizarre hacks tend to arise because Java devs seem to consider static globals as icky.

<comment><USER12> Global variables are icky, regardless of the language.

</comment></comment></comment></comment></comment><comment><USER14> The [Racket gui toolkit]([http://docs.racket- lang.org/gui/](http://docs.racket-lang.org/gui/)) is successfully multithreaded, and manages this despite being implemented on top of existing non-multithreaded and non-thread-safe toolkits. It's hard, but it's certainly not impossible.

[Here's a paper]([http://www.ccs.neu.edu/racket/pubs/icfp99-ffkf.pdf](http://www.ccs.neu.edu/racket/pubs/icfp99-ffkf.pdf)) about the system, and how it enables cool new stuff

</comment><comment><USER13> One of the things the article doesn't mention, which is odd, is that frames are precious objects that need to be produced in whole. If you have multiple threads all producing parts of the scene, when do you actually kick off the frame so that the user never sees a part of a frame? Even if your worker thread is just updating the text of a few fields when it's done, you need to batch that up into a single atomic update on the screen.

Which means you need transactions, at which point you basically have a single thread and a message queue so why complicate things internally and add all the lock/unlock overhead?

<comment><USER15> Most GUI toolkits don't bother. I'm guessing you work in video games?

<comment><USER13> Every GUI toolkit already "bothers" by virtue of being single threaded. You never see a UI toolkit where this:

      btn.setText("hello")
      btn.setColor(BLACK)

might show a white-text "hello" for a single frame. If the UI toolkit was thread-safe, though, that would become a possibility.

</comment></comment></comment><comment><USER16> What about functional reactive programming? And what about flux pattern? Didn't these resolve this "failed dream" of multi-threaded GUI update? (I am asking real, not rhetorical, questions.)

<comment><USER7> Don't see how this has anything to do with anything. For example, the "flux" pattern is similar to model/view which can be done by a single thread (ie, Qt). In this scheme the main thread services events sequentially, calling the necessarily object's methods on the same thread.

The discussion is about the 'dream' of pushing a button from a worker thread.

<comment><USER17> The thing is that the entity that pushes a button is a human, not a worker thread.

<comment><USER18> It is very common to have async http requests that "push button" to to say when they resolve.

</comment></comment></comment></comment><comment><USER19> A big reason why multithreaded UI doesn't work is that the platform code (win32, cocoa) generally has poor support for interacting with OS objects from multiple threads. For instance, NSView instances can only be operated on from the main thread ([https://developer.apple.com/library/mac/documentation/Cocoa/...](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Multithreading/ThreadSafetySummary/ThreadSafetySummary.html)).

Handling OpenGL context access from multiple threads is terrible, too. I'm quite excited about the additional threading niceties that we're getting in Vulkan, which should allow separate threads to re-render parts of the UI and then send the command buffers back to the main thread.

<comment><USER20> > For instance, NSView instances can only be operated on from the main thread

Cocoa is the toolkit, not the OS, so this is just Cocoa taking exactly the approach described in the fine article.

<comment><USER19> It's also an unavoidable part of writing graphical code on OS X, so, for all intents and purposes, it _is_ the OS.

</comment></comment></comment><comment><USER21> the author says that with AWT it was a design decision against thread save GUI, one problem here - there is no way they could have made AWT thread save - AWT uses the native windowing toolkit as its basis; on Windows this implies that all clients of the Win32 sdk are from the same thread as the event loop; there is no other means to work with USER32.dll - you have to send windows messages to the window handle, that's only possible from the thread of the event loop

<comment><USER21> it would have been possible without locks if the client would have sent IPC messages to the other threads event queue and then wait until the result comes back. This way all access to the GUI widgets is serialized via the event loop.

In windows they had apartment model COM objects that used to work by this principle (ouch, i feel so old now ...)

</comment></comment><comment><USER22> Isn't this problem directly related to mutating things in memory, rather than having the UI components each be pure function?

</comment><comment><USER23> Maybe creating complex, multithreaded systems should better be left to AI. It could be able to track all the required factors for correctness in a way we humans mostly can't do.

</comment><comment><USER24> Just throw the gui operations under a single global lock. No deadlocks, any thread can update gui.

<comment><USER25> No deadlocks, you say?</comment></comment>


Cutting Google out of your life (2019) - <AUTHOR> https://github.com/tycrek/degoogle <comment><USER2> I'm surprised to see that Fastmail is not listed as a Gmail alternative. I've tried it, Protonmail, and Zoho as replacements. IMO, Fastmail has the simplest interface and best suite of tools. I had trouble setting up an alias with Protonmail. Fastmail provides very clear instructions for this right on the app. Zoho was cool in that it lets you use a custom alias for free, but it just felt too cluttered.

I also remember reading somewhere on HN that the creators of Protonmail have some dubious ties (and work in the same office) to a shady European data collection agency. Can't find the link atm.

<comment><USER3> Fastmail is great, but as this list is supposed to be "privacy focused", Fastmail (company from Australia) is not a good alternative. [https://www.wired.com/story/australia-encryption-law- global-...](https://www.wired.com/story/australia-encryption-law-global- impact/)

<comment><USER4> Yandex might be a niche choice, if your main worry is "5/9 Eyes". Free, even to bring your own domain.

<comment><USER5> Some of what I want to send and receive by email might be considered illegal in Russia, so that's a hard no. I don't trust Russia's legal system to interpret the law in my favor. Does, for example, this email receipt for a book about a bi football player figuring out his sexuality count as propaganda? I wouldn't risk it.

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

<comment><USER6> Do you fear the Russian legal system though? Are you really doing anything so controversial that you'd motivate Russian Intelligence to care about a foreigner?

<comment><USER7> I'd be more concerned about being blackmailed by Russian intelligence services.

<comment><USER6> To what end? Seems like a lot of work for a tiny return relative to the size of their Government.

<comment><USER7> Not blackmail in the sense of "give us money". Think more "do us a favor".

<comment> blaser-waffle "hey let us log into your digital ocean instance every once in a while. we'll even reimburse you for the VMs..."

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> This reminds me of people trying to cut out _plastics_ from there life. This is hard because plastic is cheap, convinient, useful and it's embedded in every product in modern life.... Just like Google

<comment><USER9> I don't see the problem. There's still privacy benefits to be had by cutting Google out of your life 90% of the time, or even 75% or 50% of the time.

I've largely cut out Google, but still occassionally use YouTube, Maps (usually through a 3rd party), and very rarely search.

For me, StreetView and the huge library on YouTube are just too useful to completely give up, and, unfortunately, I don't know of any alternatives making headway in those areas.

<comment><USER10> Bing Maps has a street view equivalent that covers most cities, at least in the US somewhere close to a margin of error difference to Google in terms of cities covered.

In fewer cities and increasingly hard to find in the interface (because a lot of it is growing out of date, and it is in general more rare than Street View), Bing Maps _also_ has a really cool best of both worlds "Bird's Eye view" taken from helicopters in daylight at a particular distance and an isometric-esque angle chosen to provide a strong amount of detail. I've found that be extremely useful for picking up a neighborhood-worth of landmarks in a glance for navigating a space by foot or car. It really is a shame Microsoft/Bing stopped advertising it so heavily as a competitive advantage and have let its prominence in the UI disappear to the point where finding it is a labyrinthine task, but unlike the mythical minotaur, I know it still exists (for now).

I don't know what to do about YouTube. I keep hoping that they've made the non-Premium experience _so bad_ that enough of the people I follow might move to better platforms, but so far network effects win again.

<comment><USER9> I do like Bing's "Bird's Eye View", but I have to disagree about their Street View coverage.

Here in Colorado, for example, Bing Maps doesn't cover anything in the western half of the state, not even larger cities along the interstate, like Grand Junction. Meanwhile, Google has Streetview imagery for practically every paved road in the state, and even a lot of forest service roads in the middle of the mountains. I know that's not a big deal for most people, but it's a huge use case for me to help plan bike trips.

And Bing doesn't cover much, if anything, outside of the US.

</comment></comment></comment></comment><comment><USER11> I almost successfully cut Google out with one exception, YouTube, I don't seem to be able to find what I get there anywhere else.

Fun anecdote: Google is very smart, because I've been a paying customer of YouTube for a long time they gave me a Google Nest Mini for Christmas free of charge. And it fills another niche which I can't really find a meaningful alternative for: Speech to text hardware/software which can be connected to my smart home (which is cloud free until now). They really do press the right buttons because I'm thinking of connecting this thing to my home. And then they can listen to everything I'm doing, which is not cool, but then I already have the device and so on ...

<comment><USER12> Siri can control your smart home and doesn't phone home (any more). You can hook it up with a raspberry pi to control just about anything, including generic zigbee devices.

<comment><USER11> Does the voice recognition work hands free? On phones the microphones were never good enough to be used in the pocket or from a different room and I don't want to hold my phone in ma hand just to turn on the lights.

Another problem is that it's as closed as googles eco system so I don't know what they're doing behind the scenes anyway, if it's not free software then what's the point switching from google to apple?

<comment><USER10> Apple has a Home Hub device as well.

Also, as a new owner of an Apple Watch (had to back out of Fitbit now that Google bought them, sigh, and this was the most interesting option), the Siri integration with the Watch is fascinatingly better than I'd expect and made me much more interested in using Siri more than I had before. The Dick Tracy-ness of talking to an assistant on your wrist is amusing/fun in general, of course, but so far I've been impressed with the range of both the microphone and speaker for a wrist-worn device, and you don't _have_ to do the Dick Tracy style arm raise (though of course, that doesn't necessarily stop you from wanting to; the amusing long tail impact of old pop culture).

(I'm a pragmatist and don't hold closed ecosystems against them. I am on the side that Apple seems more clear about seeing me as a customer than a product or a black box source of data, and that's more than enough reason for me to switch to them over Google [though in my case I was switching from Windows Phone, RIP].)

</comment></comment></comment></comment><comment><USER13> ReCaptcha is about the only google product that I still have to use... some 15% of websites I use eventually make me reCaptcha.

Everything else is blocked with pihole/uMatrix/pf. Been this way for about six months now. Occasionally I still youtube-dl from a server and scp the file locally.

<comment><USER14> You don't _have_ to use ReCaptcha. You just elect to do your business in another way or with another company. For example, I was a lifelong member of a regional bicycling club until they started trying to force me to solve ReCaptchas whenever I'd need to log in to their web site, and they stopped accepting membership dues and event registration fees by a check in the mail. That was easy enough: I stopped giving them money, and I started self- supporting on any ride events they held out on public roads. My kid's pediatrician threw a ReCaptcha in my face after I entered all the information to make an online payment. I closed the tab and sent them a check.

At first I got passive-aggressive about it. I would purposely fail the ReCaptcha and then contact support to tell them it wasn't working. They'd always provide a workaround. But then I realized it was easier just to stop giving them my business. For me personally, so far it really hasn't been any kind of big inconvenience.

<comment><USER15> There are states where paying your sales taxes for your business or performing online DMV transactions require recaptcha.

</comment></comment></comment><comment><USER16> Well, this long list is certainly a nice reminder that Google is going to be a permanent part of most peoples' lives for ... forever.

Seriously. Google can use this as marketing for why people love Google so much.

<comment><USER17> It does seem so much easier than a hundred different services.

</comment></comment><comment><USER18> Regrettably one worrying trend I'm seeing is people hearing that Google and Facebook do despicable things, and switching to an alternative like Wechat, which is arguably infinitely worse.

Perhaps when discussing Google or Facebook, we should put that in context and mention that they are some of the world's most transparent major tech companies.

<comment><USER19> Why trust a monopolist that makes its money using tracking when you can use the alternatives from the list?

</comment></comment><comment><USER20> I've stopped using every Google product but Google search, and unfortunately Google Captcha, which I absolutely abhor. I downloaded Google Photos a few days ago to try and export some old photos and it refuses to let you view your old photos until you have give access to your current photos. That really typifies my experience with Google.

<comment><USER21> Also there is no easy way to export all your photos. I learned this the hard way when I decided to move my photos to iCloud. There used to be an option in Drive to link your Google Photos albums and download them, but they removed it. You can request your data from Google and then download a large ZIP, but I had numerous issues with it and it broke the Live photos from iPhone. In the end I had to manually select ~100-200 photos in the iOS Google Photos app and click Download and then do this for all photos (it will not let you select all at once, there is a limit). And then I enabled iCloud to back up the downloaded photos.

<comment><USER22> Probably an issue with them choosing the most general route. They most likely think most people using Takeout want photos they can open and move to other storage/photo services, so putting the converted png/jpg provides more compatibility than the 'heic' photos that are only supported by iCloud and a handful of other services.

</comment></comment></comment><comment><USER23> It's surprising to see LineageOS listed in the repository. It relies on several Google services, even if you are not using Google Play services, and doesn't even include microG.

For instance it is using: \- google servers for connectivity check \- google server for ipV4/ipV6 check \- google NTP servers \- google DNS servers \- google search engine by default and all the default apps like calendar etc. are fully oriented against google services.

I think LineageOS should definitely be considered from removal, though it's a nice project and a great playground for ROM hackers.

<comment><USER24> Couldn't agree more...

</comment></comment><comment><USER25> I am going down this road atm. I just signed up for fastmail, but I don't see it on this list, does anyone have any comparisons with the others listed? My main concern was being able to use my own domain.

<comment><USER26> Fastmail is a company based out of Australia using data centers in the U.S. The Five Eyes concern is why it may not be listed in privacy focused sites.

To use your own domain, I'd recommend other services that are a lot cheaper than Fastmail, focused on privacy and are not in the Five Eyes (but may be in Fourteen Eyes). Check out mailbox.org, runbox.com and lastly, Migadu for a fixed price for unlimited mailboxes/storage (prices are based on outgoing mails sent per day).

<comment><USER27> But if privacy against state actors is a concern, I would recommend to just encrypt your e-mails, then Fastmail would be as good as any of the other services, but with the added merit of being in service for 20 years, so it will not close down tomorrow, you never know with any of the others.

</comment></comment></comment><comment><USER28> Does anyone have suggestions on polyfills/fallbacks for google CDN scripts? I'd like to straight up block all of Google in my host file, but it breaks about 90% of sites at the moment.

<comment><USER26> There's a browser extension called Decentraleyes [1] that hosts popular scripts locally and avoids the need to connect to any CDN, not just Google, for those.

[1]: [https://decentraleyes.org](https://decentraleyes.org)

</comment></comment><comment><USER29> Is the browser extension "https everywhere" still useful? I find modern firefox versions will default you to https automatically now. (for what it's worth, doesn't chrome do this now too?)

<comment><USER30> No major browser redirects to HTTPS when the site is not on HSTS preload list AFAIK. I don't have a PC with me, but at least Firefox for iOS doesn't. But I've been using HTTPS everywhere for a while now, and still once in a while manage to find sites that have a correctly configured SSL certificate, but only serve the default "Apache has been installed" screen over the HTTPS, while serving the full site only over the HTTP. I guess if the behavior you described was the default in any browser, those sites would have got fixed already.

The extension is still worth running, though, as some sites I visit have a perfectly fine HTTPS version, but don't redirect to it (some even serve HSTS header there).

</comment></comment><comment><USER31> There are a whole lot of products and services in that list I haven't heard of so will be checking those out.

Notable about the list is the absence of anything from Microsoft. I cannot (will not, truth be told) do without Office and Exchange.

Are all the items in that list free?

Finally, I hope to see affordable and credible, non - Apple alternatives to Android some time. Still on Windows Phone which to this day has a better UI and UX than Android. But no WhatsApp does suck pretty hard.

Anyway I'm Google free too but always looking for better alternatives, so thank you for this list.

<comment><USER32> I'd also recommend giving LibreOffice another try if it's been a few years. I wasn't at all interested in switching as of 2014, but Microsoft Office has become a lot more annoying with its slow new UI and constant advertising for cloud services, and in the meantime LibreOffice has enjoyed some incremental improvements. Plus, with so many people using G Suite and mobile OSes, it's no longer much of a disadvantage to be unable to render an Office document with pixel-perfect accuracy.

</comment></comment><comment><USER33> My very first step to get rid of Google would be finding a stock android phone with an update schedule as good as the pixel.

So far I'm yet to find a convincing candidate, but if someone here can recommend one such phone, that doesn't require my bothering with rooting, and that is expected to be maintained, I'd really appreciate it.

Well, I guess I can get an iPhone if I ever get really serious about ditching Google, but for now I don't hate them enough to move on from Android.

</comment><comment><USER34> There is also the Framasoft effort: [https://framasoft.org/en/#dio](https://framasoft.org/en/#dio)

</comment><comment><USER35> Is the goal to stop being watched or not having your info being sold as a product to others? The title seems to imply the second while talking about the first?!

<comment><USER36> Why not both?

<comment><USER35> Pretty sure you would have to cut more than Google to stop both?

</comment></comment></comment><comment><USER37> I used Youtube Red for video without ads and google one membership which give me 1TB for evertyhing: photos, docs, drive for up to 5 people.

I'm very happy with it. But I read so many stories about people getting banned by google. Recently someone got ban because they used Apple Card. I'm a bit worry about getting block by google photos as well.

Anyone know something that cheap as google photo? Basically it gives everyone in family 1TB

<comment><USER38> It's cheap because you're paying with your privacy. If you don't want to pay with your privacy you'll have to pay with money... choose between the 2, it's that simple.

</comment></comment><comment><USER39> See also [https://nomoregoogle.com/](https://nomoregoogle.com/) .

</comment><comment><USER40> How about having your cake and eating it too by using google for the free storage but encrypting everything that sits on their servers:

[https://github.com/cryptomator/cryptomator](https://github.com/cryptomator/cryptomator)

</comment><comment><USER41> Looked at the site. Not sure I understand what flagging the services as 5-eyes, etc. is supposed to mean. Perhaps

\- sponsored by 5-eyes (that seems to miss the point) \- prevents spying by 5-eyes? This seems strange also.

Clarifications welcomed.

<comment><USER42> The idea is that if you operate a server in _-eyes territories then your data is not secure.

I'm not sure I buy this argument though. We've seen companies just not hold onto data, be served, and release "sorry we got nothing". AFAIK you don't have to create backdoors for the NSA. Canaries are legal. You don't have to store data. So listing if a service is from a _-eyes country misses the point really. Point being if the service is secure and follows best practices or not. Something isn't secure because it is located in Switzerland.

Or am I missing something?

<comment><USER26> What you missed in your reply is the fact that your view is completely U.S. centric. Australia legally requires companies to build backdoors and not disclose them if mandated by the government. Lookup the Assistance and Access Bill from more than a year ago and the concerns around it.

<comment><USER42> That's a good point. Thank you. But I'd argue that is a different point. Not a *-eyes problem (though that is part of the issue), but rather a backdoor problem. There's a degree of difference.

</comment></comment></comment></comment><comment><USER43> Is there a websearch benchmark which actually shows objectively how good all these alternative search engines such as DDG are?

How do we know which one is better, and how much worse we are off by using alternatives?

<comment><USER44> There are benchmarks, but they're probably closely guarded secrets of the various search teams out there.

So not very useful public benchmarks, no.

<comment><USER43> Perhaps you are right, but still difficult to believe that nobody at a university or in open-source built something like this.

It's the thing I would start with if I wanted to design a search engine.

<comment><USER44> Defining such a benchmark and making it public would be incredibly difficult, because as soon as you do, it becomes too easy to game. Think of the worst possible SEO hacks out there, except from the perspective of the engine itself.

</comment></comment></comment></comment><comment><USER45> Somewhat related, here's a site for switching to open source solutions: [https://switching.software/](https://switching.software/)

</comment><comment><USER46> Thank you! is there a way for us use a safe and secure bank transaction ... i'd love to see a bank who does not sell our data to a insurance firm or an analytics firm.

</comment><comment><USER47> Is there something like Google Drive / Dropbox that allows you to use cloud storage with local encryption, that has nice OS integration on desktop and mobile?

<comment><USER48> I use iCloud

<comment><USER47> Interesting. Is there a good read on iCloud's general document security? My sense is that while Apple is great about iMessage and this stuff in general, they probably haven't implemented the same level of privacy for all of iCloud. That would be very challenging.

</comment></comment></comment><comment><USER49> Still no replacement for Google Voice. Which is my one indispensable app.

<comment><USER50> Have you checked out OpenPhone (www.openphone.co)?

We've been building a simple and reliable phone for professionals though are used for personal communications as well since our pricing is very affordable at $10/mo per user or number.

We've just recently launched our web app in beta (launching officially soon) so we're now at feature parity with GV and beyond since we've really invested time into creating a fast and modern service that works seamlessly.

Would love your thoughts!

<comment><USER49> Can it dial me at multiple numbers? My primary use for Voice is that I can give people a single number that, when they dial it, will call my cell, my home, and my office numbers. I have never found another service that foes that, and it isn't clear to me from your web site whether yours does either.

</comment></comment></comment><comment><USER51> Personally, I feel safer knowing that all my embarrassing personal data is at Google, along with everyone else's, rather than somewhere else.

I'm confident that Google can't do anything genuinely shitty with my data without also pissing off millions of people more powerful than myself.

</comment><comment><USER52> Question. Why?

<comment><USER19> I think that's a bit out of scope for the discussion about this list. A very short summary might be that a lot of people see Alphabet/Google as having gotten too big (various monopoly issues) and their business is largely based on advertisement that involves lots of tracking. Especially the combination of the two makes it bad. (You probably already knew this and I'm not actually sure if I should be spending time giving a serious answer to a two-word comment.) Anyway, I think this thread should be about the list and not about the mystery of why anyone would not want to use Google products.

</comment></comment><comment><USER53> > News

> r/news - Includes both USA and International.

> r/worldnews - International news. Typically excludes news specific to the > USA.

> Most country/state/provine subreddit's act as local news hubs as well.

Yikes. Yikes yikes yikes. Try to look for news sources a little more diverse than Reddit, please.

<comment><USER54> > _Try to look for news sources a little more diverse than Reddit, please._

Have you used them? These are mainstream subreddits, and the stories aggregated there aren't substantially different than the stories linked to to the similar Google News categories.

<comment><USER55> As someone not from a NATO country, the discussions on r/worldnews have been pretty disappointing about anything outside of NATO. The news stories upvoted there suffer from similar problems.</comment></comment></comment>


Distinguishing Strings from Lists in Erlang - <AUTHOR> http://lethain.com/entry/2009/jul/24/distinguishing-strings-from-lists-in-erlang/ <comment><USER2> Have they not heard of lists:all/2?</comment>


Show HN: Simple Blogging Platform – QuickPublisher - <AUTHOR> https://www.quickpublisher.online <comment><USER2> > By default, your blog gets published on a .quickpublisher.online sub domain.

Please be careful: don't let users publish on your domain or even a subdomain of your business domain. If they post something someone don't like you risk that your email and statis page and everything goes down because someone asks your DNS provider to take you offline.

Just buy another domain: quickpublisher.<whatever> and use that for user generated content.

<comment><USER3> Lol that's the least of the concerns.

If you allow customers to publish on subdomain, let's say example.quickpublisher.online, the customer site will receive all cookies from the top domain quickpublisher.online (read: user sessions), this allows to trivially steal user accounts from other customers visiting the site, then take over their resources or credit cards (assuming there is some payments attached to the account).

TLDR; If you're a customer, go shutdown your account quick before it's stolen. This product is a security disaster that should never have been shipped like that.

<comment><USER4> Wordpress.com does this. Are those sites at risk too?

<comment><USER3> Good question!

You will see that you are logged in as yourself if you access any wordpress.com website, your session is shared with all blogs. It allows you to post comments as yourself without captcha for example.

Historically wordpress controls the entire platform. It notably doesn't allow users to post raw HTML or any javascript, or load any wordpress plugins. There is only a basic text editor to write blog articles. As a customer you wouldn't be able to intercept cookies because you don't have any control on your site (you can't even load javascript for google or amazon ads which is super annoying).

They've added some plugin support in the past year and few other things, so this might have opened some unnoticed loopholes. Notwithstanding any novelty, wordpress is locked really tight and designed with this in mind, it's safe.

</comment></comment></comment></comment><comment><USER5> Looks interesting.

However, competing with write.as on being the simplest blogging platform is hard (and maybe not something you should try either, they are extremely close to _too simple_ even for my very basic needs.)

<comment><AUTHOR> Hi There. I understand.. I am currently working on adding more features to the platform like Trending posts, etc.. For now its basic. What makes it unique is its simplicity.

</comment></comment><comment><AUTHOR> Hi everyone. Apologies for the landing page problems. I have just updated the site with changes requested, improved the grammar and added more information. Thank you for the constructive feedback

</comment><comment><USER6> The demo blog seems to be really-really slow. Pages load in seconds.

<comment><USER7> It's on the top page of HN, so it's probably the hug of death.

I like the fact that some loading-related UX cues are in place (e.g. a spinner between page transitions).

<comment><AUTHOR> Hi There Thanks.. That's why I added the spinner loader. Currently we are experiencing high traffic. So I am working on load-balancing. Apologies for the time lag

<comment><USER8> Put your static assets on a CDN to reduce hits on your web server and use the CPU for processing instead.

<comment><AUTHOR> Thanks for the tip. I'll get that sorted out promptly.

</comment></comment></comment></comment></comment><comment><USER9> I was a bit confused by the landing page, I tried to click on the images. Also,for me the blog loads very slow, but could just be HN traffic.

I am currently using my own stupidly simple "blogging" platform, which is just a PHP function to render markdown files: [https://github.com/Cristy94/markdown- blog](https://github.com/Cristy94/markdown-blog)

If I were to switch to your platform, I am a bit confused about:

* How editing/publishing of a post works (what is the editor)?

* How much traffic it can handle?

* Can I use my own domain?

* Can I integrate it my existing site?

* Does it have good SEO (keywords, meta descriptions, og: images, rich snippet, etc.)?

* Can I export the data?

* Is the data backed up?

* Is there an uptime guarantee?

* Is there support provided?

* Can you customize the design?

* Is it the biggest feature the fact that it has micro-payments integrated? Why would I use this instead of WordPress and a plugin for micro-payments?

<comment><AUTHOR> Hi There.

\- The blog loads fine. It is the combined traffic from HN and other platforms that's weighing. But I'm working on load-balancing

\- Editing and publishing works simple. We use a flexible WYSIWYG editor where you can easily design the posts according to your taste. Publishing works with one click after editing.

\- Currently It handles lots of traffic from +2000 bloggers around the world (still growing). But I have performed tests for 100,000 and everything still loads fine.

\- Yes you can use your own domain. To do this, you'll need to upgrade to the Flying Solo Plan (PRO plan)

\- I haven't built any REST API for external integration. But this is on my to-do list.

\- Yes it has good SEO keywords. You can add more SEO keywords as you wish.

\- As at now you cannot export the data. Its part of the version 2.0 plans.

\- Yes the data is backed up

\- There is 99% uptime guarantee.

\- Yes there is support. 24/7 support either via email or phone call.

\- For now the design cannot be customized. The platform was built to display all blog posts on the landing page and incorporate a simple link mapping. I am also working on building an override where users can edit the main template.

\- The microsubscription feature is an added feature used by couple of full- time bloggers. I recently integrated it into the platform 2months ago. It is simple to use, offers donation features and more. Please visit microscriptions.com for more information

</comment></comment><comment><USER10> It says several times that it allows monetization without ads, but it says nowhere how. How?

EDIT: okay, I went looking on other pages of the site: it uses "micro- subscriptions" via [https://microscriptions.com/](https://microscriptions.com/).

<comment><AUTHOR> Yes we use Microscriptions as the underlying monetization platform. I'll be sure to improve the landing page

<comment><USER11> How well does that work? (The micropayment system.)

<comment><AUTHOR> Hi There. Microscriptions works well. I currently have 20 bloggers who use it. It works with affordable subscription prices. As low as $0.20.. I integrated my platform with theirs 2months ago. Please visit their website at microscriptions.com for more information, how to get started as well as integrating with QuickPublisher

</comment></comment></comment></comment><comment><USER12> Terrible landing page. I have no idea how this works exactly even after browsing through the site for a while and clicking around.

All the explanations just look like superficial rambling and don't really tell you how the product itself looks or works.

Is it a wordpress competitor? Is it a subscription tool? I have no idea. Even the one screenshot it has on the site is useless because nobody can really make sense of what's going on in that picture.

<comment><AUTHOR> Hi There. It is a simple blogging platform. You can check out the demo blog link on the main site. That'll give you an idea of how it looks like.

I added a screenshot of how the site looks like on the main page.

We monetize the blog using Microscriptions Platform. It is a subscription- based platform we integrated with

<comment><USER13> I'm guessing English may not be your first language, some of the page does not read as smoothly as it could.

One tip: remove the words "be able" from phrases like "Be able to customize your blog with your logo, favicon, social media links and more", it makes it more readable.

<comment><AUTHOR> Thank you for the tip. I have updated the site. I really appreciate it

</comment></comment></comment></comment><comment><USER14> What does the page for writing/editing posts look like?

<comment><AUTHOR> Hi There. The writing page is a simple form with fields. These include: Name, Description, SEO Tags, Content (this is where you are able to design your content), Display Image and Banner Image (this gets displayed at the top of your article).

<comment><USER14> Thank you for the reply! Does it have a WYSWYG mode, and does it have an HTML mode, and if both which is the default?

<comment><AUTHOR> Hi There. Yes it has both. The default is the WYSIWYG mode. This allows for more customization and article post design

</comment></comment></comment></comment><comment><USER15> Does it support latex and math and code blocks?

<comment><AUTHOR> Hi There. Yes We use a flexible WYSIWYG builder. <code>, quotes and more are supported

<comment><USER15> but no math?

<comment><AUTHOR> There is a math editor plugin. But It does not currently support advanced equations. It only supports basic equations and symbols. But I can work on it for the next release (Next week Friday)</comment></comment></comment></comment>


Minefold (YC W12) - Adding Subscriptions, Removing pay-as-you-play - <AUTHOR> http://blog.minefold.com/post/46896349011

<comment><AUTHOR> _after April 20th the only options will be subscription based_

Looks like they are dropping their innovating pricing and switching to the same pay-monthly model that every other mc host uses.</comment>


We're heading into dark times - <AUTHOR> https://thecorrespondent.com/5696/were-heading-into-dark-times-this-is-how-to-be-your-own-light-in-the-age-of-trump/1611114266432-e23ea1a6 <comment><USER2> _"Authoritarianism is not merely a matter of state control, it is something that eats away at who you are. It makes you afraid, and fear can make you cruel."_

Authoritarianism makes you join a group to feel safe, and joining in can make the cruel bold.</comment>


Screw Coding - <AUTHOR> https://medium.com/@sarharibhakti/don-t-listen-to-those-who-think-coding-is-the-only-way-to-go-f9a381d4f5a0 <comment><AUTHOR> I am not against the art of coding. I think its a beautiful thing to type a bunch of lines to create something cool. But, its meant for certain kind of people with certain mindsets and thought-process.</comment>


Ahead-of-time JavaScript compiler - <AUTHOR> https://github.com/tmikov/jscomp <comment><USER3> > It is not expected that the performance of compiled applications will ever > rival 'v8'. JavaScript is an awful language for static compilation - <USER2> > almost seems designed to foil any attempts at optimization, and so a JIT > will always have a significant performance advantage.

For the compiler un-initiated such as myself, is there a simplified explanation for why static compilation is inferior to JIT for languages like javascript?

<comment><USER4> For one, "this" could refer to anything at any time, depending on who invoked the enclosing function.

        function myFunc() {
            console.log(this);
        }

        var myObj = {};

        // this = window
        myFunc();
        // this = window
        myFunc.apply(null, []);
        // this = myObj
        myFunc.apply(myObj, []);

        myObj.myFunc = myFunc;
        // this = myObj
        myObj.myFunc();

        var tmpFunc = myObj.myFunc;
        // this = window
        tmpFunc();

Another issues is closures, where variables and properties available to nested functions are dependent on the outer functions. Combined with the floating "this", leads to highly dynamic behaviour which can only be assessed at runtime.

<comment><USER5> I'd guess the names of properties being possibly dynamically computed also makes things difficult to optimise.

<comment><USER4> A clever compiler might be able to infer "structural typing", which is basically "duck typing" done at compile time. So, if you add a property "bar" to an object "foo", and you have some other code that calls "baz.bar", you can infer that "foo" is of type "HasABar", and "baz" is of type "HasABar", therefore it might be safe to use "foo" in place of "baz".

The tricky part would be consolidating every structural subtype into cohesive classes.

</comment></comment></comment></comment><comment><USER6> Weird that the label specifies "ahead of time", which is implicit in "compiler", but does not mention that it is a Javascript-to-C++ translator rather than a normal machine-code-producing compiler.

<comment><USER7> A compiler is a translator. It translates programs from one programming language to another.

You always want to compile to the easiest target language that solves the problem well and allows you to do the optimizations you want to do. By compiling to C++, they can focus on static typing and closures etc., but don't have to worry about generating machine code, and register allocation and whatnot.

Back in school, I worked on a project to compile Matlab. We picked Fortran as the target, because it was very similar in terms of operating on matrices. But it's typed, and had a few very fast compilers available.

<comment><USER6> Of course. I've written a compiler myself which used C++ as its output language. It just amused me that the authors made a point of specifying one characteristic of the program which is generally assumed as the default, while making no mention of another, far less common characteristic which effectively defines the scope of their project.

</comment></comment></comment><comment><USER8>
      Transition the runtime to C [from C++]

Wondering why? I thought C++ and C are comparable in speed.

<comment><USER9> They are. Practically anything that can be done in C, can be done in C++. At the same time, C++ offers ways to get better performance that are not available in C (e.g. templates). Even GCC moved from C to C++ for safety. This doesn't look like a very well thought out decision.

</comment></comment><comment><USER10> It was only a matter of time before someone did this. Did it really take this long?

<comment><USER11> AFAIK browsers have been doing this internally for years. It just hasn't been available as a standalone utility.

<comment><USER10> I don't think that's an accurate statement. If a browser implemented this, it could be considered a crude form of JIT. But JIT techniques were more sophisticated than this by the time browsers started using them on Javascript.

</comment></comment></comment><comment><USER12> but does the output compile with emscripten?</comment>


Dear Elon, You're Wrong - <AUTHOR> http://aesirlab.com/writings/vol1-9

<comment><USER2> "As robots fulfill these menial tasks, our society becomes more productive, and we are able to meet more needs than our current system. And as more of the basic needs of society are met, more will begin to move up Maslow's Hierarchy of Needs—realizing higher callings and answering to creativity... Robotics and A.I. are more likely to bring about a period of new enlightenment than one of subjugation."

In an ideal situation sure. But thats if:

1) education keeps up with the demands/flavors of the job market

2) education stays affordable.

3) the economy finds ways to value "creative goods" that people occupying the higher levels of Maslow's Hierarchy create. If the music industry is any signifier, this is not the trend.

4) Somehow, some way, a middle class needs to flourish again. The poor can create culture, but don't have the resources to insert it into the economy, and the wealthy manage/own culture. But it's the middle class that is the sweet spot and links the two.

A society that mainly occupies the upper Maslow's Hierarchy, without a demand or infrastructure for monetizing it, is a society of unemployed and poor (but maybe happy?) hobbyists.

</comment><comment><USER3> The fact that otherwise intelligent people seem to genuinely think that AI would take over and run amok like the fucking Matrix or something is pretty ridiculous.

<comment><USER4> Modern humans have not demonstrated either particularly good foresight or an ability to correct the things we've set in motion. Case in point is nuclear arms.

If antibiotics had always been regulated as tightly as pain pills are today, resistant bacterial strains would never have proliferated.

Malaria carrying mosquitoes in Africa were not overwhelmingly resistant to pesticides before Jane Fonda's emotional pleas swayed the public to call for the end to DEET spraying.

Crop monocultures not bred for disease resistance led to the loss and destruction of entire cultivars at enormous cost. Insects and other vermin that have coevolved with humans have entire industries dedicated to and required for their control.

Granted neither mice, mosquitoes, nor bacteria are as intelligent as humans, and certainly none of them are actively trying to enslave humanity, but intelligence isn't what makes these things dangerous- they're mindlessly disruptive, and even worse at foresight than we are.

We shouldn't foster a culture of lax attitudes toward security or an IoT primordial soup for AIs that lasts into a different century where the conditions might make it impossible to contain or eradicate. The flags need to be waved now not just so that when something unexpected happens someone can smugly say they told us so, but so that the future is designed in such a way that the worst case can't occur.</comment></comment>


Coming soon to Twitter - <AUTHOR> https://blog.twitter.com/2014/coming-soon-to-twitter

<comment><USER2> "Right now, what you see of the 500 million Tweets published every day is based entirely on who you follow, and that's a great model for many people. But with that many Tweets every day, there's no way even the most avid Twitter user will find everything that's relevant to their interests in any particular moment."

Is it just me or is this a crazy thing to say? I wish I could opt-out of the additional tweets that I've been getting lately (I don't mind the ads). I get why they are doing it but I enjoyed having control over the content I get. If I wanted stuff pushed at me I'd try any other media source.

This one "feature" is causing me to check Twitter less than I have in the past and I wonder I'd that's the case for anyone else.

</comment><comment><USER3> Was really disappointed that this wasn't announcing a new tool to deal with harassment.

</comment><comment><USER4> I'm still annoyed by the lack (or removal) of Instagram integration.

I'm sure both sides are at fault to some degree, but I feel like Twitter had more of an obligation to address the issue than Instagram did.</comment>


The rise of cryptocurrencies degrades hard work and traditional success - <AUTHOR> https://www.quora.com/How-are-bitcoins-a-bad-concept-How-will-they-hurt-the-society-in-a-broader-prospective/answer/Pranav-Gokhale?share=1 <comment><USER2> What an incoherent rant. The author jumps from being angry at the people who took huge risks, invested in a new technology, and succeeded (oh, and they are evil males!), and then immediately switches to talking about scammers, like it's the same people.

<comment><AUTHOR> Author here and first HN submission--guess this is a taste for the honest feedback that HN gives :) so thanks!

My opinions are primarily directed towards the dabblers who join the market smelling "get rich quick". And I would contend that these dabblers are closely related to the scammers. I'd ideally like to evaluate this claim with numbers and statistics, but these are my observations from being deep in on crypto since 2014.

I hear you though: this is indeed a rant.</comment></comment>


Ask HN: AV1-based image format? - <AUTHOR> Apple opted in HEVC-based image format for its internal use - 2x space savings are very useful (especially for iphone). Still, anything HEVC-based is plagued by unbearable licensing issues and can not widespread anyhow. How about some new image standard for everyone? AV1 is going to be at very least a bit better than HEVC <comment><USER2> They're still working on it, but it looks quite impressive so far.

[https://www.cnet.com/news/google-mozilla-av1-photo-format- co...](https://www.cnet.com/news/google-mozilla-av1-photo-format-could-outdo- aging-jpeg/)

<comment><AUTHOR> Thanks, exactly what I was looking for

</comment></comment><comment><USER3> It shouldn't be noted that Apple is now onboard with the Alliance for Open Media.

[https://www.cnet.com/news/apple-online-video-compression- av1...](https://www.cnet.com/news/apple-online-video-compression-av1/)</comment>


Cyber flashing is the new iPhone safety threat - <AUTHOR> https://www.abc.net.au/news/2019-05-12/cyber-flashing-porn-sent-to-iphones-using-airdrop/11092974 <comment><USER2> Wait a minute... Apple ships phones with default settings that let random people send you pictures?

Who approved that?</comment>


New micro-blogging service Epihu.com - <AUTHOR>

Need your feedback and suggestions for improving. What you think about it? :) <comment><USER2> Clicktastic - <http://epihu.com>

</comment><comment><USER3> Well ... I'm getting "Sorry an internal error occurred" ... Sooooo yeah :-/

<comment><AUTHOR> we fix it)

</comment></comment><comment><AUTHOR> 2cemetric: yep( sorry for this, working on fix..

</comment><comment><AUTHOR> Ok, we fix it)</comment>


The thing about your first product... - <AUTHOR> http://vlad.svbtle.com/first-product

<comment><USER2> Another option is to think of the smallest first step for your idea and hire all three to do it. Then you can judge the quality of work without going too far down a bad road.

<comment><AUTHOR> That's a really good suggestion, but some top shops won't waste their time.

In our early days, we would have done this at DarwinApps - now, we need to know the long-term is there before we start investing our time and thoughts behind the efforts.</comment></comment>


How The Art of Computer Programming was ruined for me - <AUTHOR> http://anuragramdasan.com/weblog/on-how-TAOCP-was-ruined-for-me/ <comment><USER2> Like others here, as soon as I read the first couple of sentences, I mostly expected the result.

I paid about $150 for my volumes, and while it was more than I wanted to spend, that's actually quite a deal. That comes out to less than $40 per book, and each book is so dense and authoritative that another equivalent book probably costs on the order of $100. In other words, at least in the USA, if each book was sold separately as textbooks, I wouldn't be surprised if it cost $400 in total.

As you have detailed, Knuth's work here is seminal, and he will probably continue writing until the end of his life (and TAoCP won't be completed by him). If you intend to truly read and understand all of the material he has presented, then you're in it for the long run. Unless you are very educated or a researcher in the field, this is probably years worth of work. This includes reading all the mathematics, understanding it, and _doing the exercises_. (Of course, not all exercises can be reasonably done by anyone, as some of them are actually open research problems.)

Because you'd be in it for the long run, cheap paper copies are a bad idea, unless you don't mind pages falling out and deteriorating. Doing a semester- long course in some subject? Okay, that's fine. But purchasing for personal reasons the opus magnum of one of the greatest computer scientists? That feels a little different.

Although you've already paid a measly one-tenth of the price already, I'd consider paying the full price, and take your first as just a tax on the lesson learned. In the USA, many of us would get a 5-10% markup anyway (sales tax), so it's not all that devastating.

 _Edit /Addendum_: Lastly, one important thing. For anyone reading this comment: While there is prestige in finding errors, that should not even be remotely close to the reason you purchase the books. The checks, in their original intent, are small awards for finding mistakes, and only somewhat artificially have they turned into something more. The true reward, as cliché as this sounds, is being able to read Knuth's prose and learning from it.

If you believe that having such an achievement will slingshot you ahead in business or academia, this is almost surely false. While the award is nice to get, it won't give you much in return. I own two checks, and they're on my résumé, but I don't think they've carried much weight, if at all, at the multitude of companies I've applied for and been at. I think I've been asked about them only once, and even that time, the interviewer wasn't interested in hearing about numerical algorithms or boolean satisfaction.

<comment><AUTHOR> Yes you do make a great deal of sense. I guess my initial worry was that if the book would make any sense to me at all. It comes with a reputation of its own. I didn't seem like a good idea to spend 5000 bucks on a book that I might end up staring at for a few weeks and then give up. Now I understand everything in the book, but do not trust its content. Regret that.

<comment><USER3> If you look at the price it's in rupees, so 5000 rupees is just 74 USD. The author bought a $5 version of TAOCP. The lack of quality isn't surprising.

(Unless Rs. isn't Rupee, but Google thinks it is)

<comment><USER4> That is the author. In india they call rupees 'bucks' just like here in the states!

<comment><USER3> Ah that makes more sense now. Confusing cross cultural slang. It was shocking to see how little the expensive version the author passed up was.

<comment><USER5> Especially considering how poor the knock-off Indian domestic reprints are. Everything is smudgy and looks like it was printed on newsprint (either standard or glossy -- it varies), without trimmed edges and with a horrifically bad binding.

<comment><USER6> IMO, while it's _nice_ to own a copy of a book that looks good and doesn't fall apart, the awful thing here is not the cosmetics but the fact that the copy is a mangled-up version with errors that have been fixed in editions over a decade ago.

You need to be able to trust a book. I received a misprint of a book I ordered online once, duplicate pages, missed half a chapter. I didn't need that particular chapter for the course I was taking then, and it was a week before the exam so I didn't send it back, it's a really cool book (Computational Geometry) that, like other interesting study books, I would pick up again and browse occasionally, if it weren't for this mess up. It's a shame, really.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Don't let the page numbering ruin these books for you as the contents will provide you enjoyment for the rest of your life. Its great that you were able to get your own copy of them. At university in New Zealand TAOCP was on the recommended reading list for CompSci but the library only had one of each volume. You could only get them out for _3 hours_ at a time. Years later I was in a bookstore with my girlfriend a the time and I saw the 3 volume set for _$NZ 500_. She secretly went back the next day and brought them for me for my birthday. We are now married.

<comment><USER8> She's a keeper.

</comment></comment><comment><USER9> This goes beyond foreign versions of textbooks.

A friend recently recommended "The Broken Sword" by Poul Anderson. The trouble is, the text of the 1954 work was watered down in 1971. So it's apparently important to read the right edition, or so Michael Moorcock warns. [1]

I've had small online booksellers assure me they have the edition I want. When I open the package in the mail, it's never the right version. When I contact the merchant to ask how I can find the right edition, they just refund my money and stop talking to me.

Other sales people have told me they have no warehouse access, they have no way to confirm what's getting in the boxes. The easiest way for them to find out the edition of a book is to just ship it to me and have me let them know.

You'd think you could have a meaningful discussion with a bookseller about editions. I know it's not something that matters for every sale, but you'd think at least those few who choose to deal in books would occasionally notice that not all books with the same title look identical, and start to wonder why.

We've moved from a world where I can put my hands on a book, glance at the copyright page, feel the paper, see the condition, to one where every version of a work, from annotated to abridged, can be lumped together as a fungible commodity.

I know, Bezos moves a lot of paper, this isn't going to keep him up at night. But if I get one "old man yells at clouds" rant, this goes in mine.

[1] [http://www.theguardian.com/books/2003/jan/25/featuresreviews...](http://www.theguardian.com/books/2003/jan/25/featuresreviews.guardianreview18)

<comment><USER10> There's a (not so small) online bookseller with the version you're after

[http://www.amazon.co.uk/The-Broken-Sword-Fantasy- Masterworks...](http://www.amazon.co.uk/The-Broken-Sword-Fantasy- Masterworks/dp/0575082720)

Apparently the Gollancz Fantasy-Masterworks versions are true to the 1954 version.

<comment><USER9> My latest attempt was with one of the booksellers on Amazon claiming to have that edition. I sort of gave up on the site after that fell through.

I'll give the .co.uk version a try, thanks.

</comment></comment></comment><comment><USER11> The most upsetting part about this is that some of Knuth's valuable and limited mental energy was wasted because of some idiot publishers trying to make a buck and being sloppy.

<comment><USER12> Most likely much time. The unique part of this case was _blogging about it_. There's a whole bunch of those books out there.

</comment></comment><comment><USER13> This is really strange.

Low price editions, or LPE's are the best things to have happened to Indian students. Without them I couldn't have cleared my engineering exams. And I have never faced problems like these in the past nor do I remember any body among my friends report such problems. In fact we only have praise for LPE's.

I am wondering if this is like a one-off goofup on the part of the publisher. Which it can very likely be.

And the price has nothing to do with it, basically because eventually everyone realizes that only thing that results from high prices is piracy. So you might as well sell at a decent price which customers are ready to pay.

</comment><comment><USER14> There's a reason why the version you bought was Rs 400, not Rs 5000. That much of a price differential should be a red flag.

<comment><AUTHOR> Actually almost all the Indian editions of the book are much more cheaper than its US based price in Dollars. And when you look at the paper quality, it feels like the price is justified.

Also not to look over the fact that both are published by PearsonEd. The US version by Addison-Wesley and the Indian version by Dorling-Kindersley. Both are PearsonEd subsidiaries.

<comment><USER15> Indeed. My current copy of CLRS3 is a like-new Eastern Economy Edition paperback. I paid $20 or $30 for it off Amazon versus $92 list price or $55 on Amazon for the hardcover, and I considered that to be a good deal.

<comment><AUTHOR> Yes. CLRS I had ordered almost the same time as TAOCP and although I was skeptical at the beginning, I was surprised that it was a good edition.

The biggest problem is though, once we've bought the Indian edition, we wont buy the original edition(obviously). This makes it difficult for us to gauge how much off the edition we own is from the original one.

<comment><USER15> I used the Eastern Economy Edition version of CLRS2 in a course I was taking. I never found a difference other than page numbering (which was accurately reflected in the index and table of contents), so I think you're okay on that one. :-)

</comment></comment></comment></comment></comment><comment><USER16> The books you have are just fine. The books were high quality when they first came out. Thousands of us studied the first printings without ill effects. Besides, you have the opportunity to test your reading by looking for errors. Just relax and enjoy a masterpiece.

</comment><comment><USER17> How the art of reading articles was ruined for me: By using pt 8 fonts...

<comment><AUTHOR> Sorry about putting you through that. Will fix it. Ctrl+ for now please? :)

<comment><USER17> Hahaha. Yes, actually Ctrl + mouse wheel up. I just couldn't stop myself from taking a shot at the title.

My apologies. I never meant it to be serious. :) Btw, the subject in the text is indeed interesting and disheartening at the same time.

<comment><AUTHOR> Haha. No its okay. UI sucks, you didn't like it. That is fine. No need to apologize. I am a CSS handicap. :/

Yes indeed it is disheartening. It is a magnificent book(from what I've read till now) and its a shame to see Dr. Knuths efforts being so badly treated.

</comment></comment></comment></comment><comment><USER18> Makes a good case for advancing digital versions of text books...

<comment><USER2> If there is any book that you should get in paper form, it is TAoCP.

This is one book where the author has taken great care, and decades of work, to truly build the book from the ground up.

The book, the fonts, and the style were developed for paper. Knuth even has 5 other volumes of books containing the instructions and source code to reproduce almost every single curve, stroke, and space you see in the books.

I think advocating digital publishing is probably good, but not for all things. Books shouldn't be treated as source code with continuous deployment. Even one word on one page can massively restructure the rest of the document, making it extremely difficult to coordinate and fix.

What I think should be fixed is the dissemination of authentic books at a reasonable price, for especially students who typically don't have much money at all.

<comment><USER19> Don't forget the typesetting: Knuth wrote TeX because he was unhappy with the alternatives.

<comment><USER20> He didn't forget the typesetting. He (the parent) was basically writing about the typesetting.

</comment></comment></comment></comment><comment><USER21> > _My biggest concern was that if in the future I end up buying a new book, > how can I be sure it is the same book that I expected to be delivered, > without any page messups or other oddities._

Just buy the American edition, problem solved.

<comment><AUTHOR> Kind of beats the point of having regional editions so that users can get books at a reasonable price, doesn't it?

<comment><USER22> Is there any way you could find it at a library?

<comment><AUTHOR> Libraries usually keep Indian editions of the book. I haven't checked for TAOCP but that was atleast the case with Kernighan and Ritchie.

<comment><USER22> Do you have access to a university library? One thing about Knuth -- he gets cited a lot, so I figure I'll absorb some of the choicest parts without having to go to the source. I have to admire your ambition to just charge through it.

<comment><AUTHOR> Its actually a fun read once you start approaching it sequentially. I haven't read all of it yet, but whatever I have read, its been interesting and not that difficult.

</comment></comment></comment></comment></comment></comment><comment><USER23> _We 've moved from a world where I can put my hands on a book, glance at the copyright page, feel the paper, see the condition, to one where every version of a work, from annotated to abridged, can be lumped together as a fungible commodity._

Yes - really a rather profound change. The entire way new books are produced has changed as a result as well. Print-on-demand in particular can result in you literally having a "one-off" edition of a book. The benefit is quicker integration of corrections. Am not sure we really fully understand some of the negative consequences...

</comment><comment><USER24> I always say that pirating games and films was simply better in every way than paying for them. Better quality, support, more convenient formats, minus the DRM. My conscience has been hardened by all the times i have been screwed over by crippling DRM when using something I have paid for. Pirated versions, of course have this removed for you.

Sadly, It seems the same is beginning to apply to books as well. Publishers should take heed of this unless they want to follow the fate of music and movie industries.

</comment><comment><USER25> Imagine getting a Xeroxed copy of the illegal version of the book.

<comment><USER15> Lions' commentary on Unix was passed around for years like this before it was allowed to be officially published. There's a grand tradition of samizdat in academia for stuff like this (mostly pre-prints, though).

<comment><USER25> I was hinting at the latest Xerox fiasco.

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

</comment></comment></comment><comment><USER26> Those "reprint editions" could actually be useful. Consider the section of Volume II called "How Fast Can We Multiply?" (or something close to that).

That section has undergone major changes for each edition. The current edition is fine if you just want to know the best answer (as of the time that edition was written). However, if you also read the earlier two editions, you will get a deeper understanding of the material.

</comment><comment><USER27> Offtopic: Concrete Mathematics is the best book I've ever read. If you have a chance get it. It requires very very little pre knowledge of math.

<comment><USER28> I searched it on Amazon and saw numerous reviews saying you need a strong grasp of discrete mathematics, which is hardly "very very little" knowledge of math. I didn't study serious discrete math until my upper classes in undergraduate school.

<comment><USER29> I can confirm that it's pretty math heavy. I was considered a math genius in my school and I was having trouble with the later chapters.

<comment><USER27> Yes, the later chapters are tough. But I'd definitely say you don't need much preliminary discrete math in the first couple chapters. Let's say up to chapter 6 (Special Numbers)

</comment></comment></comment></comment><comment><USER30> The fonts on this page are too large. Make them smaller!

<comment><USER31> And zooming in does not make a left-right scroll bar. That's what I had to do to read it. That font is really, really tiny on my 1900 x 1200 screen

<comment><USER32> "Control +" is your friend.

<comment><USER31> That's what I did; but it's still a poor, customized-beyond defaults, resolution. I'm curious to load that page in high DPI mode for users with vision impairments and see if it increases in size.

</comment></comment></comment></comment><comment><USER33> Slightly off topic but can anyone recommend a good book on algebra to get back up to speed before attempting to read these?

<comment><USER34> "Concrete Mathematics" by Graham, Knuth and Patashnik is probably the best preparation for tackling TAoCP, though it is not light reading either.

You could also look at "Mathematics for Computer Science" by Lehman, Leighton, and Meyer. It is available at [http://courses.csail.mit.edu/6.042/fall10/mcs- ftl.pdf](http://courses.csail.mit.edu/6.042/fall10/mcs-ftl.pdf) .

<comment><USER33> Perfect, many thanks.

</comment></comment></comment><comment><USER35> so where would be a good source of quality books in India?

<comment><AUTHOR> As of now, I order books mostly over Amazon. They ship the 'real' edition. Its expensive but that's better than the other alternative.

Also, I never claimed all the Indian books are flawed. You wouldn't know until you buy one. Your best bet would be to check one out from a library, use it, figure it out for yourself and then decide whether to buy an Indian edition or the real one.

<comment><USER35> Thanks for the Amazon recommendation.

I am an expat (repat?) living in rural India and do not have access to libraries.

</comment></comment></comment><comment><USER36> I honestly don't understand how you can live in India and expect shit like this not to happen. People in India don't even have the reasonable expectation of riding a public bus without getting raped to death, how cold you possibly expect the authorities to care about counterfeit books?

India is a beautiful place, with lots of brilliant, talented people, but until their local and federal governments start observing and enforcing the rule of law, it's going to remain one of the shittiest countries to live in.

<comment><USER37> > People in India don't even have the reasonable expectation of riding a > public bus without getting raped to death

That was very, very offensive. Are you an Indian? or at the least been to India? My mother has been using public transport for 25 years (now traveling upto 150Kms for her job). She never had a problem. Show some data and or shut up your arrogant mouth.

<comment><USER38> I think he's referring to a recent spate of rapes in India that received a lot of exposure in the US press.

TIME just posted an article about high-profile gang rape in India a couple days ago: [http://world.time.com/2013/09/02/india-fury-over-gang- rapes-...](http://world.time.com/2013/09/02/india-fury-over-gang-rapes-sign- of-changing-nation/)

<comment><USER37> Yes, I got that. Here's my take on it, which might contradict most of the stories out there. I don't think the many number of such recent cases is a new occurrence. It's just that the media is using 'Rape cases' as their 'News topic for the year', making sure they make a big deal out of such cases, which is a good thing.

But media concentrating so much on this topic is because people are finally ready to talk about such stuff. I've heard of dozens of rumors of rape that were allegedly subdued over the last few years. I think the Delhi rape incident was the tipping point.

I don't think rape cases have increased, I think the reporting and public outcry have gone up. India is finally dealing with the most shameful parts of a society whose discussion was until now anti-cultural, any discussion related to sex is anti-cultural. In our movies the most just thing for a rape victim was to get them married to the rapist, that was considered giving the victim a life, go figure that out.

Despite all that, I and several other people go by our day mostly care free. There is a sense of security in our social lives. Shit still happens, where doesn't it not happen. But this shit is not new, it is not unique to us. Making such lame shallow comment about a culture is insensitive.

<comment><USER36> It isn't a shallow comment. Receiving Justice in India is largely a function of gender and caste. I mention it not because I look down on India, but because I see so much potential in that country that may never be fulfilled if it doesn't fix its government, and its social attitudes towards women and poor people.

I don't think that there is a dramatic increase in rapes in India, its just that information flows more freely now. I agree that its getting attention because people in India are finally ready to talk about such issues. When I talk about India being a shitty country, I'm talking about the government, and the people who allow the caste system to persist. Many average Indians are outraged by the way that rape victims are treated, yet the government just wants everyone to act like its OK to punish the victims.

For what its worth, I bitch about the United States just as much if not more than any other country, because we have been fucking up a lot lately too.

<comment><USER39> > It isn't a shallow comment.

It is, because it reeks of irony, cultural chauvinism, and a fundamental Western bias.

> Receiving Justice in India is largely a function of gender and caste.

Replace gender and caste with money, and your statement becomes correct. In fact, there is quite a bit of reverse discrimination when it comes to the caste system.

Your earlier comments show a complete lack of understanding and context of Indian culture, so I won't bother picking them apart. All I can say is, it must take a scary level of indoctrination to draw the logical conclusion that "no wonder there are so many rapes in this country!" from "error in reprinted CS book".

<comment><USER36> I'd be a cultural chauvinist if I went around telling everyone how America is awesome and can do no wrong. I actually spend a lot of time complaining about my own country's problems, so I don't really understand this accusation.

It would be ironic if I were on here denying the problems that my own country faces, while commenting on India's. But as I said, I spend a lot of time talking about that as well, so irony doesn't make sense either.

What is the context of Indian culture that makes institutional corruption, gender / class discrimination, and the demonization of rape victims OK? Once again, please keep in mind that I'm not talking about all of India, just the corrupt government institutions and wealthy individuals that are comfortable living in the middle ages.

I don't see why this is such a controversial view, if you made a comment about corruption in America, I'd be more inclined to agree with you than to act like my personal honor has been besmirched because my country isn't perfect.</comment></comment></comment></comment></comment></comment></comment>


How to Hire a Great Marketer for Your Company - <AUTHOR> http://blog.mixrank.com/how-to-hire-a-great-marketer-for-your-company

<comment><USER2> Great tips and I would definitely add another one:

"Make sure your marketer is readily willing to implement automation tools to increase their efficiency".

As many new tools, MixRank included, become available, you want to be sure your marketer is not armed with a knife at a gunfight.

Disclaimer: I am not affiliated with MixRank, but know one of the founders fairly well and fully endorse their vision and product.</comment>


Show HN: Deep Learning Shirt for Charity - <AUTHOR> http://some1else.tumblr.com/post/124922361439/deep-learning-shirt-for-charity

<comment><USER2> $30 for a shirt with a screen printed image from some random deep learning paper? You don't even cite the paper. Assuming the source is published in some venue then the publisher (ACM, IEEE, etc.) owns the copyright of that image and while i haven't heard of IEEE going after people for copyright infringements this seems to be pretty cut and dry.

Also, using the language, "for Charity", doesn't sound great when you link to a tumblr blog instead of the actual charity website.

The whole thing just looks shady as hell.

<comment><AUTHOR> The price is steep because charity. I used output from Caffe[1] which is open source software. You can get a similar output yourself, just by running their Python notebook[2]. The festival website is linked within the post[3]. I am using Tumblr to see if it's a viable medium for mini fundraisers.

Thanks for the feedback though, I will set up a landing page instead.

[1]: [http://caffe.berkeleyvision.org/](http://caffe.berkeleyvision.org/)

[2]: [http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/ex...](http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/00-classification.ipynb)

[3]: [http://kudplac.si/portfolio/tknp/](http://kudplac.si/portfolio/tknp/)

<comment><USER2> Looks like the filters from the notebook are a re-organized view of figure 3 from [http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf](http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf) (as the caffe page cites at the top). I'm not a lawyer, so i don't really know if making a 'new' image using the components of the copyrighted image is derivative or not.

> Thanks for the feedback though, I will set up a landing page instead.

Please do, if this is really legit, it's in your best interest to set it up in the most professional way possible. It'd probably be better to get the organizers of the festival to put the content of the post in one of their pages and you link there.

<comment><AUTHOR> The first layer only contains basic features, which are shared among different sets of images[1]. It seems that the ImageNet photos themselves are indeed very protected[2], so I should probably use another dataset as input. Plugging in my iPhone camera roll should result in very similar filters. It will be very interesting to see how much they differ.

Update: The author of Caffe just got back to me with word that the filters are in public domain, therefore safe to use as design elements.

[1]: [http://i.stack.imgur.com/Hl2H6.png](http://i.stack.imgur.com/Hl2H6.png)

[2]: [http://www.princeton.edu/main/administration/legal_complianc...](http://www.princeton.edu/main/administration/legal_compliance/copyright/)</comment></comment></comment></comment>