Optimize for readability first. What slows down developers when reading code - <AUTHOR> http://va.lent.in/optimize-for-readability-first/ <comment><USER2> The most common form of unreadability I see is overly abstracted code in Java, littered with patterns that obscure the kernel of logic, forcing you to do global code searches in order to see through all the indirections.

<comment><USER3> I'll go even further and say this is essentially the only form of readability I care about. The article talks about things like "unnecessary one-liners" with the ternary operator as an example.

I don't care at all about one-liners, whether or not they're immediately understandable. If I'm trying to understand how to find a fix a bug or add a feature, then if, as the author did, assume that the obvious bad code things like meaningless variable names and spaghetti control flow aren't there, then the only hard problem is "where in the code does this thing happen". Make that problem easy to solve, and I can spare the 10 seconds it takes to understand a ternary operator. Hell, I can spare the 10 minutes it takes to understand some weird nested list comprehension. Stick a comment telling me what you're doing, and I may not even need to bother.

The same is true with low-level optimizations. If you need to do something clever, then comment it, and we're fine. Obviously one shouldn't go overboard, but I don't see anything wrong with the kind of premature optimization in which the programmer sits down and immediately knows of a fast way and a slow way to do something and chooses the fast way (within reason, of course, and that's a subjective judgment, but it's one I'm OK with).

Basically, make your code easy to approach. Make it as easy as possible for me to go from, "I need to change what happens when the user does X" to finding the code that governs that behavior. If all that code is in one tidy little location, then aside from the obvious need for good variable names, sensible whitespace, etc., write it however you like. I'll figure it out.

<comment><USER4> Exactly! There is nothing wrong in complex code as long as it is isolated from the rest of the code and well documented in terms of its API.

</comment></comment></comment><comment><USER5> _When by Go to Declaration you get to an interface or an abstract class and have to figure out what implementation there might be used. It gets worse with Dependency Injection,_

This seems far-fetched to me and doesn't have much to do with readability anymore. Moreover most of the time this is imo how code _should_ be. If you start programming with readability in mind and as such start throwing away standard design practices because they lead to one more click or less readability, you are doing it wrong. That comes dangerously close to using copy-paste instead of a function because it is clearer since you can see the implementation directly. I'd argue that you should not have to figure out what the implementation is. That's the whole point of using interfaces (and dependency injection for that matter) - if you have to figure out what implementation used then you are either the implementer or the code is wrong somehow, like it is violating substitution/dependency inversion principles. Or you are studying the code in-depth, in which case you have to go through all implementations anyway. Calling all that 'readability problems' is a bridge too far.

<comment><USER6> When you are searching for a bug, you do need to understand the implementation. Of course by definition something is "wrong". Calling a function is fine by the author since you can easily jump to its definition. But if the actual function call is determined at run-time based on XML configuration, then you first need to figure out how that fits together for the particular case you need to investigate.

<comment><AUTHOR> OP here. You both are right. I'm not saying that DI and interfaces are bad. Of course not. I'm just trying to find a balance between modularity, loose coupling and code graph connectivity. Of course it's not just black or white.

</comment></comment></comment><comment><USER7> "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." by Brian Kernighan

this is one of my favorite quotes ever

</comment><comment><USER8> "Programs must be written for people to read, and only incidentally for machines to execute. " - Abelson / Sussman

</comment><comment><USER9> In the 1980s, someone wrote an essay promoting "throw-away" code. Essentially he said every module (a) should be small in size, and (b) should have documentation that describes what the module does.

Someone maintaining the code then has the option of keeping the interface, deleting the code and re-writing it, rather than try to understand the thought process of an overly clever programmer. I've always found this useful when I write code others have to maintain.

</comment><comment><USER10> I've always thought that what makes code hard to read is the fact that several persons are usually working on it. Beauty is in the eye of the beholder as we all know. Some developers like snake case, others prefer camel case. Some prefer 4-space indentation, while other can't stand it and much prefer 2 spaces. Some like braces on the same line, some others prefer it on the next line.

What really bothers me is that editors in general force people to share a codebase formatted for a given style that may or may not satisfy everyone.

And the worst is that I don't see why that has to be. Ideally "code" would be some form of abstract syntax tree and the editor would apply a user-generated "stylesheet" on top of it to display the code as the user wants to see it.

Upon save, all the style would go away and only the abstract representation of the code would go to the shared repo.

Not an easy thing to make happen for sure, but that'd be awesome.

<comment><AUTHOR> If you work in a team you absolutely MUST enforce a coding standard. It better be a community standard most of developers use. All team members must use either tabs or spaces and have IDE configured to automatically apply styles.

It will save A LOT of time later.

<comment><USER10> I (respectfully) disagree. The editor should take care of adapting the codebase to the standards the programmer likes. Trying to force 20 developers into a "consistant" style only makes room for a soft consensus that doesn't satisfy anyone in the end.

If we can do it for web pages (with CSS) there's no reason why we couldn't be able to do it for a source file.

<comment><AUTHOR> In any IDE you can set up code formatting options. By pressing a button you are essentially applying this CSS you are talking about. You can write however you want but when saving a file you (either manually or automatically) should execute reformatting in IDE.

I agree with you that having CSS-like option would be better, since code is data, CSS is formatting options. But you'd have to teach all other tools you use to work with this CSS approach. For example for git source files are just text. Git doesn't understand code semantics. For its diff routine tabs changed to spaces == every line of code changed.

There's no much use for a VCS if every commit changed everything.

</comment></comment></comment></comment><comment><USER11> I'm sure it's been said many times before but the book Code Conplete 2 is a great follow up read to this article.

</comment><comment><USER4> "[Scala] is essentially a write-only language (please don't quote me on this!); "

I'm sorry, I quote you on this.

If you ever compared Hadoop codebase (Java) with Apache Spark codebase (Scala) you'd know this is BS - Spark code is order of magnitude more readable and easy to understand compared to Hadoop. Lack of side effects and lack of low- level mutable shared state protected by locks everywhere are two of the many reasons.

Of course, you can write terribly unreadable code in any language, and probably those academic languages with rich functionality and expressiveness make it a little easier to abuse features, or to choose right features for the job. But on the other hand I'd argue they make it easier to write readable code, once you care about readability and learn how to do this. Writing readable code is a skill you have to master. It is not something that comes for free in no time.

</comment><comment><USER12> I've recently begun digging into Haskell; it has a lot of interesting and novel features. However, I can't get over it's syntax. It often uses non- alphanumeric characters in place of function names. Many functions are poorly named, e.g., `elem` vs Python's `in`. I strongly prefer the more natural English style syntax; even when you know a language well, it reads faster. That being said, Haskell is awesome for numerous other reasons.

500 line functions are the devil, they're harder to read, test, modify, and reason about. They tend to encourage code that isn't DRY, or reusable. The only benefit they have is an _almost_ always insignificant performance boost, at the cost of everything else.

Also magic isn't terrible if it's used in moderation, and it's well documented. Though it usually results in things being substantially harder to GREP.

<comment><USER13> "I can't get over it's syntax"

I think there is a syntactical pain barrier for a lot of languages. However, once you are through that barrier you stop noticing the syntax.

e.g. When I first looked at Python I remember thinking "significant white- space - that is _evil_ ". However, I forced myself to write some Python and after a fairly short time I didn't notice that aspect anymore and now I think significant white-space is actually pretty sensible.

I've had similar experiences when starting out with Common Lisp, PostScript and a variety of other things that don't look like a variation on C.

I would agree that Haskell does look a bit weird - but _everything_ looks weird the first time you see it. Indeed, I can remember seeing C for the first time when I was 16 or so (early 80s) and thinking that looked weird compared to the Basic I was used to...

<comment><USER14> I think line noise operators and single character names are bad in any language. Haskell is among the worst offenders, but C++ isn't much better. At some point this frustrated me so much that I started making my own language. Semantically it was pretty much a dialect of ML, a statically typed, eagerly evaluated language with mostly immutable data, but syntactically it aimed for extreme readability:

1) All keywords and standard functions have full English names, no abbreviations.

2) Keywords are UPPERCASE, types are Capitalized, values and functions are camelCase. Easy to tell the difference at a glance.

3) Mandatory type declarations everywhere. Limited type inference within expressions, but that's it.

4) Only one kind of syntactically significant parentheses, instead of () [] {} <> as in C++ or Java.

5) No two-character operators. Instead of x != y you have to write NOT (x = y). Sorry!

6) Significant whitespace.

The code looked something like this:

        GENERIC(Type) FUNCTION identity(value: Type): Type
          RETURN value

I have a lot of code written in that dialect, just for my own amusement. It's pretty verbose and boring, but extremely easy to write, impossible to misunderstand, and sticks to memory like nothing else I've ever tried. I still want to finish an implementation someday.

<comment><USER15> That is a bit close to pascal. I have think in something similar, but extend the idea:

#Naming conventions. ENFORCED BY THE COMPILER by default

#For type/class/interface

Str #Title-case mean public

_Str #private

___Str #protected

#For functions, properties

isPublic #Camel-Case mean public.

_isPrivate #private

___isProtected #protected

PI = 3.1416 #All CAPS means CONSTANT

I wonder how do mutable vs. inmutable. I have think in:

thisIsInmutable

thisIsMutable*

Because if is only a declaration point (using for example let vs var) but not the rest of the use of the name, you lost the ability to know if the thing mutate or not. The other idea is doing this only for functions:

fun List.Add(self*, values:Array)

Or like in other languages

fun List.Add!(values:Array)

The other idea (derived from the fact the Lexer/AST give far more info than the text) is color-mark the vars and differentiate by color and/or font style between mut/inmutable, functions, types, vars, etc

</comment></comment></comment></comment><comment><USER16> This is a great write up and should be necessary read for every novice (and not so novice) programmer.

That said, I would compose list "What makes code hard to understand?" differently:

      1) improper naming of functions / variables (if you can't name it properly, you can't develop it)
      2) excessive documentation where not needed (document only non-obvious stuff)
      3) *complex* one-liners (because simple one-liners actually help readability)
      4) and 5) can stay. :)

The main point is valid though. I would phrase it like this: optimize for correctness first, readability close second, and don't optimize for performance until you can identify the significant gain ( _always_ by measuring it!).

<comment><AUTHOR> I don't mind improper naming because all the functions are essentially just nodes in code graph. Of course it helps if you can figure out what they do just from their names, but you have to read code anyway.

Same for excessive docs. Sometimes you can find huge walls of text before every function, or meaningless javadoc comments which say that function GetData "returns data". But those are usually needed for 100% docs coverage which might be enforced by corporate policy.

<comment><USER3> > Of course it helps if you can figure out what they do just from their names, > but you have to read code anyway.

This is, I think, the root of the (very minor) disagreement I have with your article.

I really _don 't_ want to have to read the code anyway. There may be 250,000 lines of code in a moderately sized system. If I have to read a significant fraction of them to figure out what's going on, that's the biggest sin you as the original developer can commit by a couple of orders of magnitude.

I want it to be obvious where to look for the code that controls whatever it is I want to change. If you make it easy for me to find those 50 lines of code, I don't care if you write them in assembler. 50 lines of _anything_ are vastly easier to deal with than 250,000 (or god help you million) lines of the absolute best thing you can write.

<comment><AUTHOR> Proper naming helps but you can't 100% trust it.

bool allwaysReturnsTrue() { return false; }

This is of course an extreme example (8

<comment><USER3> Bad names are bad precisely _because_ they force you to read a bunch of irrelevant code to have any hope of understanding what the code is doing. It's the same problem that over-abstracted code presents. In both cases, there's no forest I can look at -- just millions of individual trees.

In a weird way though, bad names are actually better than many real-world problems. Once I find that code, I can change the name and the problem goes away. If you have a 100 line function full of one-letter variables, that's probably terrible. But I can spend a week poring over that function, figure out what they all do, and change the names. From that point, the function is fixed.

I have no hope of fixing the problem with a big mess of fetishized design patterns. The confusion in many of these systems is baked into the core of the architecture in the form of a dozen layers of abstraction and indirection between me and figuring out the behavior of the system. Usually the only way to fix that is "rm -rf" and starting over from scratch.

</comment></comment></comment></comment></comment><comment><USER17> Making use of "chunks" makes code better to read. A function is essentially a proper chunk (whereas a comment is a bad way to do the same thing). Depending on the paradigm, I usually enjoy code that has tiny units, but many of those - i.e. a function with 100 lines is harder to read than 100 functions with one line each. Ideally each name adds proper meaning to the code so that the intent becomes clear. Code like this is usually easier to change, reuse and test (tdd).

This can go the wrong way - many people mentioned how too many abstraction layers in big java projects are a pain, and I agree, as they often make the code more meaningless and abstract, rather than concrete. Oh yeah and pattern names do the same thing.

<comment><USER18> > i.e. a function with 100 lines is harder to read than 100 functions with one > line each.

I understand where you come from, but I disagree with that particular example. 100-lines long function is harder to read than nessesary, but can be understood without problems.

100 functions doing the same work will be a nightmare to keep in head at once, at least for me. If you refactor one function into 100 you're not doing it right.

<comment><USER19> In this case (of 1 function split into 100) each of them is probably used exactly once. The effect on readability, especially if they are defined in an order of execution, is similar to placing a comment (function name and args and return value) next to every single line in the 100 line function. No matter if the comment was actually needed or not there. So I agree, it will probably result in worse readability than keeping the function as one, but commenting sections of it and extracting only repeated patterns into separate functions.

<comment><USER18> The biggest problem are relations between the functions.

In one function control flow is so simple we don't think about it. It's sequence. In 100 functions either each call the next one (and even if the 100 functions are placed in calling order I cannot assume that when reading the code - I must do 100 ctrl+clicks to see the control flow), or there's another function calling all of them (but what's the point - we still have 100-line function that way), or there's some more complicated calling sequence and I have to draw it somewhere to understand it (sorry, can't keep 100 things in my head at once).

To understand the code I have to follow the control flow through these 100 function. I don't think any 100 lines of code in one function can be harder to read than that.

<comment><USER17> And this is where meaning is relevant. Good naming is important to convey the level of abstraction. What you describe is as if you were to compare the functioning of, say, the liver, by looking at its cells. Proper naming conveys what you are looking at and you can chunk things together. If all the functions are named at the same level of abstraction, of course the code will be much worse to read.

If all the names are just a and b, well, of course it is harder to follow the flow of a program because the use and meaning of the functions has to be infered by their definition. Good names help identify paths of flow, but I rarely see this separation in a clear way, resulting in the problen you describe.

<comment><USER18> Even with perfect naming you have to jump down to the bottom level to see the details. And details are the only thing that matters in the end.

You can't put all the details in the name of the main function (otherways just change the name of that 100-lines-long function and keep it - if it can be named perfectly (and shortly) without skipping any details - it's OK as it is, no matter the size).

</comment></comment></comment></comment></comment></comment><comment><USER20> I'm using "Optimize for readability first" from now on instead of the usual. I'm not sure if I'd call that 'optimization', but it definitely gets the point across a lot better, especially to newer developers.

</comment><comment><USER21> I'm getting closer & closer to make this statement a rule:

"Code need to be that good - no one in a team can write any better"

If you, knowing current requirements, wrote a perfect code - it will still become messy at some point. Feature by feature new things will appear here and there. Functions size will grow, this CASE statement will grow etc. But still the "core" of it will be strong.

If you, knowing current requirements, deliberately wrote a "good enough" code, what will happen with next change? The code won't survive it and will be deleted(at best case). Therefore, bad code is completely useless from the start.

</comment><comment><USER22> An additional point that solves some of this - learn the difference between declaration and implementation. Think, why you care about the declaration? Why would you generally want to navigate to the declaration instead of the implementation.

The shortcut keys are similar, but just a little bit extra to navigate to the implementation over the declaration. Ctrl+F12 instead of F12 in Visual Studio, Ctrl+Alt+Click instead of Ctrl+Click with Resharper. Even easier, your IDE may support changing the default keybindings.

</comment><comment><USER23> Use a proportional font for code reading! I really can't stand reading archaic type writer fonts anymore that are only optimized for ascii art.

<comment><USER24> The problem with that is that it doesn't work when you have code (and comments) formatted in neat columns. Since plain text doesn't have any portable way to handle tabstops, everything has to be padded out (after the initial indent) with extra spaces. Characters must have equal widths or nothing lines up properly.

This is pretty common in long repetitious declaration blocks, at least when the code is written by someone that cares about formatting. It vastly improves readability. Example:

       int   some_variable     = 100;     // Foo
       float another_variable  = 1000.0;  // Bar

The gofmt tool actually does this kind of column formatting automatically.

<comment><USER25> Kind of strikes me as something the editor could do ad-hoc. Maybe the tab character could return to let programmers tell the editor to align the adjoining lines according to the tabs. Would work well at least in your example.

<comment><USER23> Elastic tab stops: [http://nickgravgaard.com/elastictabstops/](http://nickgravgaard.com/elastictabstops/)

You could also pad your spaces in the editor so that they align along a global axis. This does fix your code to a particular editor, however.

<comment><USER24> Yeah this is nice. All we need now is for this to be supported in all major text editors and we're set!

The only possible issue (not sure how it's handled, can't remember if/how gofmt handles it either) is when sometimes you actually want something to be misaligned because the width is so far out of the norm, e.g:

      int const1   = 10;  // There's lots of space here for a long comment
      int const2   = 5;   // Here too, unless the tabs get moved too far right
      float const3 = ( const1 * 123.45 ) / MAGIC_CONSTANT; // Not here.

Normally when this happens I try to regroup the code so that "plain" constants are together and long formulas are in another group, but sometimes the order is important for some reason or doesn't make logical sense to regroup items, so the formatting has to suffer a bit.

<comment><USER25> As long as you rely on the tab character to signal the programmer's intent on inserting an elastic tabstop, that's not an issue. In this case, insert a \t in front of the comments on the first two, but not the third line. All three lines could have \t's in front of the equals character so align on it.

The other nice thing is that it degraces quite gracefully in non-supporting editors.</comment></comment></comment></comment></comment></comment>


We can't get enough of audiobooks - <AUTHOR> https://www.theguardian.com/books/2019/jul/13/listen-up-rise-of-audiobooks-steven-poole <comment><USER4> I was very disappointed to see this article complain about Audible DRM without mentioning the variety of DRM-Free audiobook providers.

• downpour.com

• libro.fm

• audiobooksnow.com

(The last of these has a handful of DRM'd books, so you need to check the listing first, but the vast majority are DRM-free.)

While none of these retailers have as large a library as Audible, their offerings are more than decent, particularly if you don't mind hopping between sites sometimes. This isn't vodo.net, or even gog.com.

Note that like Audible, Downpour and Libro.fm have subscription plans, which are all-but required if you want books at a reasonable price. Unlike Audible, however, it's easy to game the system by subscribing and quickly unsubscribing.

I know that Audible DRM is currently easy to remove, and that's great, but we should support the true DRM-Free providers where we can, or they might disappear. And if that happens, who knows what Audible will do.

––––––––––

Honorable mentions:

• audiobookstore.com sells DRM Free audiobooks, but they always seem to cost much more than on other sites, even with a subscription plan. I've also never found a book that was available here but not on one of the cheaper DRM-Free stores.

• Graphicaudio.net offers DRM Free downloads if you don't mind paying a couple dollars extra per title. But these are very much not normal audiobooks.

<comment><USER5> > Unlike Audible, however, it's easy to game the system by subscribing and > quickly unsubscribing.

You can do this on Audible without problems. I have an Audible library of 15 books that I accumulated over a few years through various promotions, never paying more than 33% the normal cost of a subscription.

<comment><USER4> I have a few issues with how Audible subscriptions work:

• The cancellation process requires many more clicks. If your process is to subscribe → buy → cancel each time, this gets very annoying.

• You can't buy additional credits without outright changing your overall subscription plan.

• If you cancel your plan, you immediately forfeit any unused credits.

<comment><USER6> So use your credits before you cancel? Also why do you need to buy more credits? You can buy audio books directly for $ once you exhausted the credits. I use credits for audio books that cost more than the price of a credit and $ for audio books that cost less.

<comment><USER7> I've been in this situation before.

The unsubscribe process ends up taking hours of time because now you need to find 1-5 books to get before you cancel.

It's also frustrating because they won't allow you more than 5 credits, so if you have 5 credits, they will take your monthly payment and give you nothing in return.

Worse still is if you click on the wrong thing on Amazon it will re-activate your audible account automatically. I've had my audible account accidentally re-activated multiple times and not noticed (my amazon email goes to a non- primary email)

All in all I've made many payments with max credits and gotten nothing in return, purchased a ton of books that I'm only partially interested in, and actively cancelled the service at least 3 times (including being forced to waste time shopping for books to complete the task every time)

If you don't see this as a consumer trap, it's because you haven't tried to get out and stay out yet.

<comment><USER8> The limit on credits is what ultimately made me cancel Audible, I wouldn't care if I could keep stacking them up for a year but I go through long phases of not purchasing audiobooks so after a while I noticed I wasn't getting new credits while paying a subscription and realised that... It's their business model, like a gym, Amazon makes more money out of people not using their credits than from using them.

</comment></comment></comment></comment></comment></comment><comment><USER9> An anecdote from me: Before I discovered audiobooks I rarely read non technical books, especially fictions. I just couldn't find enough time to finish books at a satisfactory pace. What's more, I couldn't enjoy many types of exercises and because of that I just didn't exercise enough. I find the activity of doing those types of exercises by themselves or even with music is too low in information density, that I just became bored after a while.

Now with audiobooks I read many non technical books while I do those types of exercises I couldn't enjoy before. If a book is not great I dont find it a waste of time. The combination of audiobooks and exercising is the right amount of information density for me to enjoy the moment. The result? I exercise much much more now.

Also I started to use the local library for audiobooks. Comparing to the effort of borrowing paper books or device restriction of borrowing ebooks, borrowing audiobooks is just a much better overall experience.

<comment><USER10> Not sure how you exercise to audiobooks, unless maybe its running or something like that. Up-tempo music really helps increase my cadence. I've tried w/ podcasts and audiobooks and am forced to switch back or else just find myself half-halfheartedly working out.

<comment><USER11> > _Not sure how you exercise to audiobooks_

If you lift weights, there's a lot of waiting involved between sets. You can listen to stuff while you're idle, and then hit pause as you're doing your reps.

When you're just starting out you may only need 90s rest, but as you progress to higher loads, that will rise to (say) three minutes, and then even longer the more 'advanced' you get.

</comment></comment></comment><comment><USER12> Audiobooks just don't work for me, I would continuously zone out. I'm curious if people listening to them a lot simply have the same thing going but accept it, or if they are able to maintain focus on the spoken words better ?

Another issue I have with them is that I can't quite skim to a paragraph of interest.

<comment><USER13> Same thing happens to me, I have to really pay attention while listening to an audiobook, otherwise I lose the thread.

Also, why are audiobooks 5 times more expensive than their dead-tree version?

[https://www.amazon.com/Leviathan-Wakes-James-S- Corey/dp/0316...](https://www.amazon.com/Leviathan-Wakes-James-S- Corey/dp/0316129089)

[https://libro.fm/audiobooks/9781478998938-leviathan- wakes](https://libro.fm/audiobooks/9781478998938-leviathan-wakes)

That's crazy.

<comment><USER14> It's a production with actors. Sometimes expensive ones. It's surely along the same continuum that explains why a 90 minute movie or season box set is more expensive than the book it's based on that takes weeks to consume. Wouldn't surprise me that consumers value it higher than "just a book."

Another way to look at it: that's 21 hours of content for $35. Doesn't seem crazy compared to, say, going to the movies or buying a $60 video game that might not even have 10 hours of gameplay.

</comment></comment></comment><comment><USER15> Since they mention education but only seem to have mostly bad things to say about audiobooks in that context (unless I missed something, I skimmed that part) I would like to add how this has changed dyslexics relationship with education and with books in general. My brother is dyslexic and before I think he never read a book ever. This year he got a audio book he wanted as a Christmas gift and he was super happy. That the library of Audio books is expanding is a great thing. I do however agree with the article that the prevelent use of closed formats could be very bad in the long run though. I do think audible is a good deal but I don't like that they use closed formats. There are however still libraries and the increase in audio books can luckily be seen in their available stock as well.

<comment><USER16> What surprises me with respect to dyslexia is how poor accessibility options are in modern operating systems.

If I understood the research correctly, dyslexia researchers get material improvements in reading speed when they increase the amount of space between words and lines. The gist of the explanation given was that dyslexics basically struggle to separate out the word they're trying to focus on from the surrounding wall of text.

Put another way, while this is fine for normal readers:

        quick brown fox jumps
        over the lazy dog

Changing it to this makes it easier to read by dyslexic readers:

        quick  brown   fox   jumps

        over   the   lazy   dog

Perhaps OS designers aren't unaware of it (hint hint if you work on an OS); or perhaps the research isn't as conclusive as I recollect. If the former, it seems like a no brainer to throw in an accessibility option to enable this OS- wide.

<comment><USER17> Has there been any research/discussion about how this would work for non- dyslexics (I know it would be an option, so not an issue; I'm just curious)? I find myself wanting to go from "quick brown" to "lazy dog" in the second one, even reading it slowly, and I'm not really sure why.

<comment><USER16> Insofar as I can recollect, sort of, at least if you infer what happens when the space between words or lines is too large. The gist of the issue for a dyslexic reader, as I understood it anyway, is a focus problem.

Picture an ellipse of sorts over the word you're trying to focus on as you read. A dyslexic person will struggle to get the ellipse on that word, and instead gobbles up part or all of the text around it (parts of the words before and after, and parts of the words above and below) - or not enough of it? - leading to fatigue and slow read speed.

If memory serves me well:

\- By increasing the space enough, you make it simpler for a dyslexic reader to focus on each word, improving reading speed. (Anecdotally I find web typography more readable with slightly increased line height and word spacing, so methinks it's not just dyslexic readers who benefit.)

\- By increasing the space too much, however, you make it harder for readers (dyslexic or not) to follow the flow of text (words become disconnected, if you will, as you've experienced in the second example), and that ends up degrading the reading speed.

\- Every reader (dyslexic or not) has an optimal spacial arrangement.

You can kind of see the effect in action by increasing the line height, kerning, and word spacing in an html document. Increase either of those three too much and the text gets harder to read. Increase one or more of them slightly above the default values and the text will be more comfortable to read.

</comment></comment></comment></comment><comment><USER18> One problem I have with audible is that because I'm paying around $15/month I feel the need to use my credits on books that cost more than this. So I miss out on shorter books, plays, etc I'd like to read. I have a bunch of books in my wishlist that are around $9 and I won't burn a credit on them.

I guess that's part of their business model... get you to spend money in addition to your subscription.

<comment><USER19> I wish someone would make a netflix for audiobooks. I'm guessing licensing is an issue.

<comment><USER20> Depending on where you are, this may be freely available to you right now through your local library.

Talk to your local library about whether they're on Overdrive / Libby. If so, you can listen to unlimited audiobooks, ebooks, magazines, and comic books 24/7\. It's fantastic. It's free. Yay public libraries.

<comment><USER21> Also, keep in mind that, depending on where you live, you may be able to carry cards for multiple libraries. In California, for instance, many major public libraries only require state residency. So, while traveling within the state, pick up library cards for as many libraries as you can. When I was living in California, I had library cards for Los Angeles County, Los Angeles City, Santa Monica, San Jose, San Francisco, Berkeley, and Oakland, and I could use the e-resources of any of these libraries.

Additionally, there is a plugin for Firefox called "Available Reads" that allows you to enter your Overdrive account information for your various library cards. Then, when browsing goodreads, the plugin will show you the Overdrive availability of the books you are browsing at all of the libraries at which you are a member, and provide links out to the catalog entry for those libraries' copies of the ebooks/e-audiobooks.

</comment></comment></comment></comment><comment><USER22> > Since the 1980s, cognitive psychology has consistently established that > recall is indeed better after reading (printed) text instead of listening to > it, a conclusion bolstered by a 2010 study (David B Daniel and William > Douglas Woody), which found that students did worse on a test if they had > listened to a podcast of a scientific article on child cognition rather than > reading it.

I wonder if any of these studies allowed the subjects to rewind. I skip back constantly when listening to audiobooks, because I zone out or get distracted. If you were to study my comprehension while taking away that feature, I'm sure I'd score lower than reading with my eyes. Conversely, if you had me read with one of those apps that shows you one word at a time, and didn't let me rewind, I'm sure I would score lower on that than on audio.

<comment><USER23> Same here. The 30 second rewind is key.

My 1-hour commute each way is mostly sitting in slow or stop & go traffic on the same freeway. So 95% of my brain is available for comprehension. And I can always rewind if I get distracted by actual driving.

I can honestly say that audiobooks on my commute have changed my life. For whatever reason I just can't find a comfortable enough spot to read an actual book for more than 30 minutes at a time - and even that feels like a chore. It bothered me for 2 decades that I didn't read enough. Now I get 2 hours a day where I am transported into another headspace, inspired, engaged. I actually look forward to my commute.

The only downside is when I come down off Mt. Everest and show up at work - <USER2> motivation to do my job is pretty low. :)

</comment></comment><comment><USER24> Did y'all know macOS has a built-in text-to-speech system that is pretty decent?

Go to System Preferences > Accessibility > Speech and set a keyboard shortcut, then you can turn any piece of text into an audio book by simply selecting it and pressing the text-to-speech keyboard shortcut. You'll need to set the Speaking Rate pretty high for this to be useful.

It works great for news, blog posts, HN discussions, and amazingly powerful proofreading tool for writers.

More info with screenshots here: [https://docs.google.com/document/d/1mApa60zJA8rgEm6T6GF0yIem...](https://docs.google.com/document/d/1mApa60zJA8rgEm6T6GF0yIem8qpMmnaBFYOgV32gdMc/edit#)

<comment><USER25> The Mac line has had text to speech functionality since the very beginning, even being somewhat showcased at the first reveal of the Macintosh by Steve Jobs. [https://youtu.be/2B-XwPjn9YY?t=208](https://youtu.be/2B-XwPjn9YY?t=208)

Although, I imagine the quality of the reader has greatly improved since 1984.

<comment><USER24> > Although, I imagine the quality of the reader has greatly improved since > 1984.

Exactly. I've tries a number of text-to-speech options before and found the voicing to be almost unusable, but the Alex voice in macOS (at least since 10.5) is pretty good. It even does the right context-dependent thing for polysemy cases, e.g. "I live in the mountains" vs. "I went to a live concert".

</comment></comment></comment><comment><USER26> I recently started recording some articles I wrote as audio. For the few I have tested, it made a significant difference. Some readers went out of their way to tell me how much they enjoyed the audio version.

Most people get distracted too quickly to finish reading an article. But with audio, the story becomes the distraction that keeps them listening to the end.

<comment><USER27> I would also prefer to hear your tone of voice because it will tell me a lot that your writing can't. For example, if you're saying something slightly contentious (as is common in tech nowadays!) I would be able to tell if you're joking, trying to provoke me, or are playing devil's advocate solely by your tone and the framing.. whereas in the written form, it could be hard to tell.

</comment></comment><comment><USER28> Many people decide they don't like audiobooks because they don't approach them correctly. For example, pair your audio with your expectations of how you'll listen. If you intend to listen while doing a cognitive task like working or driving in dense traffic, leaping headlong into a brand-new series is likely to make you lose track because you can't keep your focus on the words 100% of the time. For those scenarios sticking with a lighthearted podcast or a book you've read/listened to before is best, and save the new stuff for mowing the lawn or riding public transportation.

If you have a hard time getting through the beginning of some audiobooks as I have, I've found it useful to "prime the pump" by reading the first few chapters of a book and then switching to the audio version once I'm familiar with the names and setting.

<comment><USER29> Exactly. I use audiobooks mostly on tedious tasks daily. Like washing dishes, feeding the washing machine, dryer, ironing, etc. Often I tend to bundle those tasks together for a longer listening experience.

Other then that it's great for commute on trains, planes, taxis, or bike or if you go somewhere where waiting is expected.

It takes some time to get into though. I have struggled with it in the beginning so I started with a book I read already some time ago so it wouldn't be such a big deal if I miss something. Now it became almost the only way I consume books for entertainment.

<comment><USER30> >I started with a book I read already some time ago so it wouldn't be such a big deal if I miss something.

This is where I'm at in learning a second language. The audiobook will keep marching onwards, so I won't get road blocked by things I don't know yet. Because I already know the story, it's never longer than a minute or so before I manage to catch the plot thread again. It's also been helpful to read along with the printed book as the audiobook is running.

</comment></comment></comment><comment><USER31> I've been reading for more than 50 years and listening to audiobooks for the last 30 or so. I find I get different things out of the two formats. When I listened to Lord of the Rings (by the excellent Rob Inglis), there were all sorts of turns of phrase and whole sections that I didn't remember from my previous readings (multiple).

But this article is spot on for me, I can't listen to audio books where I'm trying to learn something while doing anything other than driving. Some non- fiction is also simply too dense to effectively learn from while listening, I want to stop and reflect, re-read and make notes.

I started listening to "The Hard Thing about Hard Things" on Audible and quickly abandoned it for the hard back. My dead tree copy has numerous notes and a few dozen stickies as bookmarks.

</comment><comment><USER32> Audiobook paired with a good set of noise cancelling headphones on an early train is as good as a commute gets.

Your 20 second trip to the (home) office is not a commute. I do those too sometimes :)

<comment><USER33> How do you deal with the excruciating slow speed of audiobooks? Even on 2x speed I feel I can do twice as fast by reading with my eyes and get better retention. Anything faster that 2x makes the speech unintelligible, but reading fast feels like things get more coherent.

<comment><USER34> I've heard this a lot. I always listen at normal 1x speed and that usually seems plenty fast as my mind gets busy with visualizing the scenes and characters and filling in bits of detail and whatnot for realism. I wonder if folks who speed it up have their minds similarly engaged or if they're just having a much lesser experience. To me it'd be like trying to watch a movie on fast forward.

<comment><USER30> Not necessarily lesser, but different. My brain doesn't generally visualize anything, but it's good at building a semantic web that connects cause and effect. If you ask me to describe the physical characteristics of a character in a book that I read, I probably can't, unless it has an effect on the plot. But I have no real trouble keeping track of what's going on in books like _The Count of Monte Cristo_ where everyone has half a dozen names and different motivations they're willing to show to different people.

I also listen to things at 1x speed because I don't care for the audio artifacts from the speedup process, but I have to be in the right mood for it. If I'm too energetic, the book won't hold my attention and my mind will wander to other things— I'll mentally shut it off and have no idea what's going on when I try to resume the book.

</comment></comment></comment></comment><comment><USER35> For me audiobooks are a way more relaxing alternative to podcasts in that they strip away the need to choose what to listen to for several times as long and, usually, once I'm in the mood to listen to one I can stay in that mood for a long time.

Listening to Robert Caro's gigantic history books a couple of years ago war an extremely pleasant experience. Literally a month or two of no podcasts at all and just this pair of extremely deep well written biographies.

<comment><USER36> I just listen to podcasts in the order they get published. Alternatively, you can pick a podcast that started long ago, and just binge on the archive - <USER3> Duncan's work alone is enough to fill probably three or four months.

That said, I listened to the Power Broker, and fully recommend it.

<comment><USER37> I highly recommend binging the back catalog of Hardcore History[1] if you haven't already. Yes, you have to pay for the older episodes, but it's a tremendous amount of really great content. My favorite individual episode is "Prophets of Doom": [https://www.dancarlin.com/product/hardcore- history-48-prophe...](https://www.dancarlin.com/product/hardcore- history-48-prophets-of-doom/)

[1] [https://www.dancarlin.com/product/hardcore-history- compilati...](https://www.dancarlin.com/product/hardcore-history-compilation- episodes-1-49/)

<comment><USER36> Yeah, I've heard many hours of Hardcore History, but while it's certainly good, Dan Carlin's style - both the writing and the speech - frankly tire me a bit. There are too many times when it's too over the top. I much prefer Mike Duncan's or Mark Painter's styles.

</comment></comment></comment></comment><comment><USER38> Since the beginning of this year I've listened to 9 audio books. That is 9 more books then I read in the past 5 years. I like the idea of reading but prioritizing time for it meant that it took months to complete a book, if I completed it at all. Now I listen while I walk to work, do the dishes, drive, etc.

<comment><USER39> I know how you feel! I listened to "Do Android Dream of Electric Sheep" in less than a week and finished "Game of Thrones" in 3 weeks because of audio books. Before that I could barely finish a short book in a month, and a large one like "Game of Thrones" would take me most of a year to be honest.

</comment></comment><comment><USER40> I read a lot of audiobooks on YouTube recently. Fascinating how a service so public can be so full of copyright violations. I guess I know now why upload filters are the new big thing.

<comment><USER14> Though, sheepishly, trying to listen to audiobooks on Youtube is why I ended up paying for Youtube at one point: so I could turn my phone screen off while listening. Maybe Youtube knows this. ;)

<comment><USER40> Yes, listeing to stuff while screen is locked seems to be one of the motivations for teople to pay for a youtube subscription (apart from getting rid of Ads of course). As a VoiceOver user, I dont care so much. Tripple- tapping with three fingers will turn the screen off/on (screen curtain). This at least saves a bit of battery. Interestingly, ads dont really bother me as most audiobook providers haven't enabled ads anyway. You can easily listen to 10 hours of pratchett or dick without a single second of advertisment on yt. If ads are enabled, they can lead to pretty hilarious situations. When I was listening to an audiobook of GoT on YT recently, it contained quite a bit of ads. Funnily, one of the ads regularily heard was an audible ad. And the book was clearly stolen from audible. So in the end, YT was passing money from audible to the ebook thiefs. How ironic. Oh yeah, but hacking videos are apparently illegal now on YT. Go figure. Looks to me like yt is creating its own pretty arbitrary law.

</comment></comment></comment><comment><USER41> Blinkist sounds interesting, even if it feels more like cheating than regular audio books. I already feel a bit guilty saying I read book X, when I really listened to it.

Their website doesn't explain much and the reviews are vague as usual. Does anyone have a personal reference for it, or know how it works? Is it real people reading or a computer voice? I presume the shortened texts are using something like [https://smmry.com/](https://smmry.com/)

<comment><USER42> I have been using Blinkist on a daily basis for the past few months.

I'm pretty satisfied with the subscription as it's a great time-saver, in 15mins I either find out that:

\- the book is not worth spending hours of actual reading

\- I enjoy the summary and it makes me want to read the whole book

\- or I like the summary, copy the highlights into personal notes, and carry on

Real people are both reading and summarizing the books, so it's much higher quality than the automatic shorteners.

<comment><USER43> That.

And even without trendy 'blinkist' I used to take a similar approach by first reading some prepatory materials before investing time to read the book. Listening to an audiobook is just another way for me to complement but no replacement.

I would not say this is fool proof.

You will never be able to get the "key takeaways" of every book by reading some summary. Sometimes the key takeway might be the way a book is written, how something is repeated while other things are left out that are most valuable.

Likewise quotes that once meant nothing to you, you will only understand after studying material by the other in depth, etc.

just some thoughts.

</comment></comment></comment><comment><USER44> graphic audio presents the stormlight archives

greatest listening experience.ever. epic fantasy on another level

<comment><USER45> If you enjoy the Stormlight Archives I would also highly recommend the Lightbringer series of books by Brent Weeks.

I won't spoil anything besides saying that the series has a number of really memorable plot twists and a very interesting magic system.

Simon Vance does a fantastic job narrating the audiobooks and I'm eagerly anticipating the fifth and final book of the series which is due for release in October.

<comment><USER46> It's a very good series! The shadow series of him is very great too.

</comment></comment></comment><comment><USER47> I feel like I'm the only one who doesn't like audio books. I also feel it's faster to just read a real book, and I retain a lot more information when I read.

<comment><USER48> You're not the only one. I don't dislike audio books, but compared to text it's just not as immersive. When reading a a good text book I get transported into it. I visualize whatever author wrote and eventually it's not even reading - it's more like a flow of information.

With audio books I don't get that - which is OK for some types of books, but definitely not something I'd pick for fiction.

<comment><USER49> I listen to audiobooks a _lot_ and I generally love them but sometimes I do miss the ability to easily skip back and re-listen to a particular short section again - yes you can skip back a fixed amount easily but that takes you to a random point in the text.

Local, sentence/paragraph level, navigation in audiobooks is really bad.

<comment><USER50> This is something I've noticed with podcasts as well. The tools and players available are atrocious and I don't understand why everybody puts up with them.

<comment><USER51> Which players have you tried?

I find the players have lots of microfeatures I wouldn't even have thought of - like if I've stopped playing a podcast in Pocket Casts & pick it up a couple of hours later, it rewinds a few seconds so I get the context of what I was listening to again.

Pocket Casts is nowhere near as good since the NPR acquisition, and probably not as good as Overcast or Castro or any iPhone clients, but I definitely wouldn't say it's atrocious.

<comment><USER50> All of them. And most of them are glorified radios. The few that do expose functionality for navigation and bookmarking within a podcast episode (beyond rewinding or FF by x seconds), they make it _way_ too unintuitive to use and make you use too many clicks to use it. And there's almost no functionality around saving and organizing the episodes you've listened to. Hell, most podcast apps don't even provide a way to check your played history in a sane way (if at all). Where in the fuck is the Evernote of podcast apps? I want to tag episodes, organize them into folders, link different episodes, bookmark certain spots of an episode, _tag the bookmarks_ , add comments/notes at certain times AND TAG THESE AND ORGANIZE THESE, etc.

<comment><USER51> Okay, I admit - that is an absolutely brilliant idea. What you've described is exactly how I use Pocket with blog posts (highlighting, searchable note taking, tagging) but for podcasts. Count me in.

I know Overcast made some attempts at timecode bookmarking & sharing snippets, but I don't think their approach is the solution. (I'm on Android so I've never got to try it.)

[https://www.cultofmac.com/622288/how-to-share-podcast- clips-...](https://www.cultofmac.com/622288/how-to-share-podcast-clips-with- overcast/)

<comment><USER50> Yeah. That interactive, metatextual layer is missing for me for podcasts. I have a decent process (that I'm still refining) for saving and organizing websites/articles/books/pdfs/notes, and if I'm looking for something, I can find it reasonably quickly, but podcasts are this blackhole where information and context go to get lost.

> [https://www.cultofmac.com/622288/how-to-share-podcast- > clips-...](https://www.cultofmac.com/622288/how-to-share-podcast-clips-..).

Okay, that feature is pretty damn cool. Add that to my must-haves in my dream podcast app.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER52> I'm not usually an 'audiobook' guy, but, currently listening to How to Change Your Mind by Michael Pollan, which is read by him. He's an excellent speaker/reader and it's nice to hear him read it exactly how he meant it to be read.

</comment><comment><USER53> I've been a fairly heavy user of Audible until this spring when I started to go back to regular, physical books. If you're reading books with lot's of graphs or pictures in them, the Audible experience is kind of subpar. Also, the experience of "browsing" audiobooks is kind of clunky and there's effectively no way to search the book.

I will say that the audio version of The Economist is pretty great. If an article has pictures or graphs in them, I can just open the article from the app and listen to it simultaneously. I hope more magazines/newspapers would add similar functionality to their offering.

<comment><USER54> I'm always reading/listening to two books at once, one audio-book, and one in a visual format. A lot of technical or older books aren't available in any electronic or audio format, and so I want to always be in the habit of reading visually so that I can accommodate those.

</comment></comment><comment><USER55> Listening to books is just too slow. For the right kind of book with a slower narrator, I _might_ be able to listen at 2x or 2.5x and still understand it. But why not just devote my full attention, read it at 8x and probably have better recollection than from passive listening?

Other books require more work and I probably read at 1x speed with frequent pauses and re-readings. I'd never understand those if they were audio.

The one time I might go for an audio book is when outside exercising or commuting, but that's when I listen to music or podcasts.

<comment><USER56> Have a try to synthetic speech books, I use espeak to create my audiobooks at 1000wpm for non-technical books.

</comment></comment><comment><USER57> I am really surprised at how popular they are. I listen to a lot of podcasts, but when I want to read, I read. Listening to someone else read a book....doesn't feel right to me.

<comment><USER58> Reading is tiring. I spend all day looking at text at work. Audio books are an escape from that. They free me to do something else too. I use them in the following scenarios: strapped into the decompression machine at the chiro, stretching at home and winding down for bed with the lights off to stimulate melatonin. I couldn't read a book in any of those situations and they cover 100% of my book consumption. I didn't read books at all before audio books (at least not since I was a child, except for studying purposes).

I agree that a good narrator makes a huge difference.

</comment></comment><comment><USER59> Totally relatable. Plus somehow I have noticed that I work out for more time while listening to audiobooks when compared to working out with blasting music. I use this service called auditus.cc to convert all my epubs. And the fun thing is the reading voices available are pretty varied so if I start getting bored from one voice, I make sure I use another one next time.

</comment><comment><USER60> Not only audiobooks. Do you have "radio theatre"? In my country we have it - it's an awesome form.

<comment><USER61> It's one thing that I love to get a hold of from the BBC, things like the HHGTTG radio play and others are just fantastic. I'm not fully aware of a lot of others but there's some podcasts like Welcome to Nightvale and the other productions that the group does that are also wonderful. I think that's where a lot of those kinds of things have ended up because it can reach a much larger audience and is easier to fund because of that (from ads and from sales and donations depending on how they do it).

<comment><USER60> In Poland there is a special division of the public radio (Teatr Polskiego Radia) producing the auditions. Hard to find a weak or uninteresting production. Unfortunately not many new are appearing recently. Some commercial radios tried to copy the form and produce something similar but it was nowhere near the artistic and quality level of PR's (ended up with something loud and vulgar).

</comment></comment></comment><comment><USER62> The trend reminds me of McLuhans literate and tribal man

[https://www.nextnature.net/2009/12/the-playboy-interview- mar...](https://www.nextnature.net/2009/12/the-playboy-interview-marshall- mcluhan/)

</comment><comment><USER63> I didn't start using audiobooks until this year, but they've markedly improved my ability to fall asleep quickly. It used to take at least an hour, and now I'm usually out within 30. Except when I get to the climax :p

</comment><comment><USER64> They have to be done the right way. There's a known talk radio show host who also writes books. I tried one of his audio books and it was not read by him, but by someone else. I couldn't continue with it and got the print version.

</comment><comment><USER65> I love audiobooks (and anything media that comes with audio too) for learning languages. Inflection and hearing what's written is hugely beneficial to understanding, and it's much more memorable for me.

</comment><comment><USER66> I started buying audiobooks during my time in the Bay Area with round trip daily commutes of 2.5 hours.

Now I'm in a car for just over 3 hours a week and I'd rather lounge around with my e-ink Kindle.

</comment><comment><USER67> I am hopelessly addicted to audiobooks. I'm much too hyper active an attention deficit to read these days, Unmedicated by the way, seems like an interesting idea worth pursuing

</comment><comment><USER68> For me audio books are great when I listen to a book which I have read long time ago. This way I can revise my favorite books, and I wont worry if I miss some sentences.

</comment><comment><USER69> i personally dont like them very much as they tend to force the pace and you might miss quite a bit. im a slow reader who tends to process everything. unless its boring then i just skim. you can't really do that with audiobooks. plus they are quite expensive.</comment>


SourceForge suspends mirroring, creating Community Panel to review practices - <AUTHOR> http://sourceforge.net/blog/project-mirroring-policies-will-be-revisited-with-our-community-panel-existing-mirrors-removed/ <comment><USER2> I'm going to guess that the damage is done, and any respectable project has already made steps off of SourceForge.

</comment><comment><USER3> > With that in mind, SourceForge pledges to present third-party offers only > with the projects that explicitly opted-in to that program.

As long as those offers are there ("malware" or not), there is still a problem. I can not recommend software that uses such offers to others, otherwise I need to then perform surgery on their computers to remove the anti-user results of the offers.

Making money is important, but being pro-users should be more important.

</comment><comment><USER4> I saw a screenshot showing that Sourceforge was being blocked and classified as a malware distribution site by Chrome -- that could certainly explain the sudden change of heart. Good riddance to Sourceforge, though.

<comment><USER5> That's funny but it's not blocked for me. That's the only time I've visited SourceForge on purpose in a long time.

<comment><USER6> Blocked by uBlock, not specifically Chrome.</comment></comment></comment>


Anyone experience caching issues with web apps - iOS/Mobile Safari? - <AUTHOR> http://stackoverflow.com/questions/8829420/anyone-experience-caching-issues-with-web-apps-ran-in-full-screen-mode-ios-mobil

<comment><USER2> I've noticed that hitting the back button on mobile safari often lands me on a cached version of a page (e.g. yesterdays HN front page instead of the current one), and a few google searches showed a number of forums with people describing the same thing. Seems like it could be a similar issue.</comment>


Stackblitz – Online VS Code Editor for Angular and React - <AUTHOR> https://stackblitz.com/ <comment><USER2> Creator here — thanks for posting our project! For more info, check out my Medium announcement post here: [https://medium.com/@ericsimons/stackblitz- online-vs-code-ide...](https://medium.com/@ericsimons/stackblitz-online-vs- code-ide-for-angular-react-7d09348497f4) :)

Happy to answer any q's & would love to hear your feedback!

<comment><USER3> Is it actually a modified version of VScode (As sourcegraph does) or are you just using the Monaco editor? As some mentioned in other comments i would also be insterested in running vscode frontend in the browser while havinf the backend in a VPS. Thanks and congrats on the project it's great!

<comment><USER4> Yes, that's one use case (desktop/web interop) where using something Electron.JS might actually make sense (to the extreme detriment of battery life, memory usage, and CPU usage).

</comment></comment></comment><comment><USER5> This looks really cool, just one quick question - I'm not really interested in all that Angular/React stuff, I just want my favourite VS Code in the browser (as a 'thin' client between my browser and my VPS, for example). Is this thing modular to allow for this, or is this meant to be just an Angular/React tool? Thanks!

<comment><USER2> Thanks! And great question — I don't think we're not targeting that sort of use case unfortunately, but we will allow you to do full git in browser pretty soon here. Right now we only support React & Angular but we're opening up custom templates that will let you configure any loaders, compilers, etc :)

<comment><USER6> It would be nice to be able to launch it with a blank template as it seems to be flexible enough to work with anything that doesn't need config e.g. Vue ([https://stackblitz.com/edit/react- ng1kyn?file=index.js](https://stackblitz.com/edit/react-ng1kyn?file=index.js))

</comment></comment></comment><comment><USER7> This looks really really well done! Ideal for trying out components and sharing demos.

Your medium post mentions

> These are the two key technologies that really enabled us to pack all of the > functionality inside of your web browser with virtually no server-side > involvement.

Can you elaborate a bit about how this is achieved?

Thanks and congrats for the launch!

<comment><USER2> Thanks for the kind words! And absolutely, take a peek at this GH thread about it: [https://github.com/unpkg/unpkg- website/issues/35#issuecommen...](https://github.com/unpkg/unpkg- website/issues/35#issuecomment-317128917)

<comment><USER8> Creator of [https://plnkr.co](https://plnkr.co) here. Amazing work on StackBlitz. Looking forward to figuring out how it all hangs together. Very novel approach indeed.

Anecdotally, I was the one who contributed ?json support to unpkg for a related use-case (in browser editor). OSS at its best, moving everyone forward. I use use the feature to provide a similar (but more limited) package injection. Check out [https://next.plnkr.co/edit/](https://next.plnkr.co/edit/) (book icon in toolbar of html panes) to see it in action.

</comment></comment></comment><comment><USER9> Once went vuejs, mind blown how good it is. Any word on vuejs support?

<comment><USER2> Vue support should be landing in either late Aug or early Sept :)

</comment></comment><comment><USER10> One thing that made me smile on [https://stackblitz.com/edit/ball- demo](https://stackblitz.com/edit/ball-demo):

The dependency placeholder. Funny for those who remember, useful for those who don't.

<comment><USER2> I'm glad you caught that :)

</comment></comment><comment><USER11> The performance here was quite good! I'm impressed.

<comment><USER2> Thanks! We spent a _ton_ of time nailing down perf to ensure it ran fast even on lower end CPU's :)

</comment></comment><comment><USER12> Very nice! good job. Looks really similar to [https://github.com/CompuIves/codesandbox- client](https://github.com/CompuIves/codesandbox-client) though.

And this is the online editor: [https://codesandbox.io/s/new](https://codesandbox.io/s/new)

<comment><USER2> We started StackBlitz long before CodeSandbox was released: [https://medium.com/@ericsimons/our-goal-was-to-port-vs- code-...](https://medium.com/@ericsimons/our-goal-was-to-port-vs-code-npm-and- webpack-loaders-to-run-entirely-in-your-browser-and-still-8751f39e5b0f)

</comment></comment><comment><USER13> This is AWESOME!! Great work. I noticed that the GitHub repo is missing source code; when do you plan on releasing it?

</comment><comment><USER14> Yeah like the look of this, makes me wonder if one day I can code on a chromebook

<comment><USER15> Not to hijack, but I've written directly on this topic in case it's useful:

[https://headmelted.com/coding-on-a- chromebook-84335cce96c8](https://headmelted.com/coding-on-a- chromebook-84335cce96c8)

There are options around (including my own scripts at [https://code.headmelted.com](https://code.headmelted.com)) and the situation is advancing steadily in terms of the tools available.

<comment><USER14> Looks good, I'd like to try this though [https://blog.lessonslearned.org/building-a-more-secure- devel...](https://blog.lessonslearned.org/building-a-more-secure-development- chromebook/)

</comment></comment></comment><comment><USER16> Very nice, seems quite similar to [https://codesandbox.io](https://codesandbox.io)

</comment><comment><USER17> Apparently it doesn't have Sass Support which kind of makes it not viable for me. Otherwise pretty great for hacking up small projects when you don't want to setup your whole environment yourself.

<comment><USER2> Sass support is landing late Aug or early Sept :)

</comment></comment><comment><USER18> Congrats! it looks really good. Can you tell me how do you compute the package.json tree on your servers before requesting unpkg? Also, are you using AWS Lambda's?

</comment><comment><USER19> This is insanely cool. Having worked with SystemJS + JSPM dependency hell in a large project I can't imagine making it all work this seamlessly in a browser.

</comment><comment><USER20> This looks great, but why is it better than say, plnkr? Other than the tooling and some features like offline use etc. It's essentially the same yeah?

<comment><USER2> I think our announcement posts covers this well: [https://medium.com/@ericsimons/stackblitz-online-vs-code- ide...](https://medium.com/@ericsimons/stackblitz-online-vs-code-ide-for- angular-react-7d09348497f4)

tl;dr — we're trying to create the first _fully in-browser IDE_ , not a playground :)

<comment><USER21> The first? c9.io has been around for ages, right.

<comment><USER2> When I say _in browser_ I mean that the _browser itself_ is compiling, bundling, hot reloading, & serving the app — it's not using any resources on a VM somewhere in the cloud.

</comment></comment></comment></comment><comment><USER22> Looks great, is there any way to add VS Code extensions / configure the build process (linting, testing etc...) / Is that on the roadmap?

</comment><comment><USER23> On mobile: If I try to uncomment by hitting backspace on phone keyboard, instead of erasing it duplicates the word left to the marker. :)

</comment><comment><USER24> Has anyone tried setting up angularfire2 or firebase in a project yet?

</comment><comment><USER25> This is v cool! Nice job

</comment><comment><USER26> Are there plans to add react-native?

<comment><USER27> There's a decent IDE-in-a-browser for React Native at [https://snack.expo.io/](https://snack.expo.io/)

<comment><USER26> Neat!

</comment></comment></comment><comment><USER28> Is there Source Control integration?

<comment><USER2> Not yet, but that's absolutely on the near-term roadmap!

</comment></comment><comment><USER29> Ember 2 is dead? I don't use Ember or Ember 2 and never have but curious why it's not part of the supported frameworks. Same for Vue. Feels like people who make tools are opting to support the frameworks currently most popular. What happens if they fall out of favor in a couple of years?

<comment><USER30> What about putting the effort to support Vue or Ember? What happens if they fall out too?

They never suggested those frameworks are dead or inferior. They just made a product and launched it.

I mean I imagine adding support for each framework takes a lot of work and if the audience is too small then they might feel the time was better spent making the current three frameworks work well.

This is the idea of mvp right?

They just released it. Should they have waited until they had X framework that Y person feels they are missing? Maybe 50 frameworks added later they can release it and you'd be happy at that point?

Seems like more negative with nothing really added.

I thought HN had more quality comments but i've been seeing these kind of low- effort comments that are mostly negative that seem more about complaining then being constructive. I hope you can understand where I am coming from and I hope if you enjoyed their product they are considering adding support for a framework you enjoy.

</comment></comment><comment><USER31> test

<comment><USER32> Creator here — thanks for posting our project! For more info, check out my Medium announcement post here: [https://medium.com/@ericsimons/stackblitz- online-vs-code-ide...](https://medium.com/@ericsimons/stackblitz-online-vs- code-ide..). :)

<comment><USER33> Your blog post 404s for me :(

That aside, it astonished me how quickly intellisense popped up. This is great.

I believe Microsoft hosts a similar app iirc</comment></comment></comment>


F-Droid at 36c3 - <AUTHOR> https://f-droid.org/de/2020/01/09/f-droid-at-36c3.html <comment><USER2> I want to love F-Droid I really do. Finding apps is just miserable because whatever CDN they use, if any, does not play well with New Zealand and scrolling though apps just shows blank icons. Eventually they load but scrolling back up they are blank again, there is no caching.

Same with screen shots, it can take 15+ seconds for screenshot thumbnails or full screen shots to load. It is like being on dial up.

I know it is open source and I should not complain.

<comment><USER3> Aurora Droid and Aurora Store are sleek alternatives for the F-Droid and Google Play clients. They use the same sources for content, but the apps feel much snappier and look pleasant.

[1] [https://f-droid.org/en/packages/com.aurora.adroid/](https://f-droid.org/en/packages/com.aurora.adroid/)

[2] [https://f-droid.org/en/packages/com.aurora.store/](https://f-droid.org/en/packages/com.aurora.store/)

<comment><USER4> Not sure about Aurora Droid but the Aurora store wont have the same build guarantees that come with using fdroid. Something to note. Installing malware through a proxy is still installing malware.

<comment><USER3> Aurora Droid comes with a customizable list of package repositories, including an F-Droid repository mirror.

Aurora Store fetches packages from the same source as the Google Play client. There's a legitimate benefit to having access to the Google Play catalog without depending on Google Play Services or owning a Google account, and not all apps on Google Play are malware.

<comment><USER4> > There's a legitimate benefit to having access to the Google Play catalog > without depending on Google Play Services or owning a Google account

Definitely agree, use store personally, have done all that is possible to degoogle my phone but the reality is that certain play store apps are essential for modern living. Yalp was once good but find it unusable now. Aurora store has good UI and seems to handle the proxy accounts better, or at least they are not being banned so quick.

</comment></comment></comment></comment></comment><comment><USER5> The note on Timeless at the end is very exciting.

[https://repeatr.io/welcome/what-is- timeless/](https://repeatr.io/welcome/what-is-timeless/) explains timeless as a set of tooling for reproducible builds with a broader and more hash-based mandate than what's out there currently. While early, it seems like it's a reasonable path towards getting a reproducible system that won't fall apart as fast over time, by vendoring the dependency system in the same way modern language-specific package managers do, but at a language-agnostic/distribution level.

<comment><USER6> Is there any particular difference with [https://nixos.org/nix/](https://nixos.org/nix/) which is backed by academia and has years of experience? Never heard about Timeless though.

FWIW, I'm using Nix to package Android app builds in a reproducible way (for React Native apps).

<comment><USER7> I've gone through their website and I think I have a reasonable grasp of the difference. Unlike NixOS and Guix which enforce a store, all builds are performed in a container[0] and produce a self contained executable[1].

I speculate that the container approach will make porting slightly easier as dependancies can be placed where they are expected, thus no patches are required for project build systems. On the other hand producing a self contained executable seems more difficult, and I wonder if they'll go with an AppImage like approach to minimise patches required.

Overall the vision has overlap but the end result is very different from that of NixOS and Guix.

[0]:

> Typically, we use an executor which uses "linux containers". However, for > the most part, we try to consider that an implementation detail. Executors > might also be simple chroots; or virtual machines; or other interesting > kinds of sandboxing. Nor are executors strictly limited to the Linux > operating system; it's simply the most common place to work. > [https://repeatr.io/design/executors/](https://repeatr.io/design/executors/)

[1]:

> Radix "Packages" are similar to packages from other linux distributions… > however, we're aiming to do something not like linux distributions: our > vision for Radix Packages is that they go anywhere, with or without the rest > of a distro associated with them. [https://repeatr.io/welcome/what-is- > radix/](https://repeatr.io/welcome/what-is-radix/)

</comment></comment></comment><comment><USER8> I saw the meetup in the schedule but didn't end up going because I wasn't sure what it would be about. Looks like some interesting topics were discussed! And indeed, the congress app updates were on time this year, that was very nice.

</comment><comment><USER9> I like the idea of f-droid but when I used it felt like searching GitHub while expecting more of an app store experience.

Now maybe that makes sense for what for what f-droid is but often I couldn't tell what some apps even did... if they would work on my phone (a surprising number did not)...

</comment><comment><USER10> Link should point to /en/ rather than /de/

</comment><comment><USER11> Almost every android app I use is from the f-droid store, due to being on a unrootable phone so no ROMing for me. I love it, but it isn't perfect so it's nice to see work still being done on it.

</comment><comment><USER12> > _@Bubu distributed almost 5000 F-Droid stickers, through the congress > sticker exchange boxes and by giving them to interested assemblies (Matrix, > Nextcloud, FSFE)._

Stickers, really? Is it major thing needed to include in _36c3_ report?

<comment><USER13> Sticker swap is important to a significant sub-subculture of hackers. [https://twitter.com/tvidas/status/1162771218715557889](https://twitter.com/tvidas/status/1162771218715557889)

[https://twitter.com/spacerog/status/1197613616171749376](https://twitter.com/spacerog/status/1197613616171749376) & [https://twitter.com/spacerog/status/1204056842999156736](https://twitter.com/spacerog/status/1204056842999156736)

<comment><USER12> I know what does stickers mean for hackers, and I also has stickers on my laptop.

But... I mean, that, as its significant sub-subculture, it should be placed as last line in this article; not at the core list.

Maybe I'm not sub-subhacker. Yet.</comment></comment></comment>