InfluxDB v0.9.0 released with developer and production support - <AUTHOR> http://influxdb.com/blog/2015/06/11/InfluxDB-v0_9_0-released-with-developer-and-production-support.html <comment><USER2> Are there any plans to run @aphyr's jepsen CAP testing system on influx? It doesn't give me a ton of confidence that you're redoing your clustering pretty much from scratch a 3rd time in a pre-1.0 piece of software.

It would also be excellent if you could post more on the not really CA and not really AP aspect of your new clustering design, and why no one has really done that before (from what I can tell). Why that is the best path forward.

Thanks for releasing such awesome OSS software.

<comment><USER3> We will be doing that testing in the future. I've already talked to Kyle about our design. We'll iterate on his and other smart people's feedback. That's one of the reasons the clustering alpha right now :)

<comment><USER2> This seems reasonable, thanks. Keep the blog posts coming, they're great!

</comment></comment></comment><comment><USER4> For people curious where the clustering support stands:

"From the InfluxDB clustering design doc we've implemented the write path to replicate data to other nodes. We've implemented the per write request consistency levels and hinted handoff, ensuring that server reboots and short outages are quickly recovered from and consistency is restored.

What's missing are anti-entropy, distributed queries, joining new servers to a cluster, and tools for replacing servers in a cluster. We'll start development on some of these features in the 0.9.1 release cycle and more in the 0.9.2 cycle. They will be merged into releases once they're stable and tested."

</comment><comment><USER5> Super excited about this. Congratulations on the release!

I've seen Prometheus bash a little on InfluxDB regarding storage requirements [1]. Is this something that has been addressed? Is it even something worth worrying about?

1\. [http://prometheus.io/docs/introduction/comparison/#data- mode...](http://prometheus.io/docs/introduction/comparison/#data-model- storage)

<comment><USER3> We will be starting work on a new storage engine or an optimized version of what we have now that will add compression. Tentatively, that will start in the 0.9.3 release cycle.

First rule of software: make it work, then make it efficient

<comment><USER6> I hope you guys collaborate with the RocksDB team. Column families [0] seem like a great fit for time series.

[0] [https://github.com/facebook/rocksdb/wiki/Column- Families](https://github.com/facebook/rocksdb/wiki/Column-Families)

</comment></comment></comment><comment><USER7> Blog post with more useful information: [http://influxdb.com/blog/2015/06/11/InfluxDB-v0_9_0-released...](http://influxdb.com/blog/2015/06/11/InfluxDB-v0_9_0-released- with-developer-and-production-support.html)

The lack of an upgrade path from 0.8.x makes me feel pretty stupid for trying out that version. Then again, they don't have upgraded client libraries for Python either, so we wouldn't be ready to upgrade anyways...

<comment><USER8> Thanks! We updated the link from [https://github.com/influxdb/influxdb/releases/tag/v0.9.0](https://github.com/influxdb/influxdb/releases/tag/v0.9.0).

</comment></comment><comment><USER9> Finally! congrats @pauldix & co. Go checking that influx 0.9 wasn't out yet was the only thing that made me feel better about missing deadlines at work, looks like I'll have to find something else :)

<comment><USER3> Sorry to ruin a perfectly good excuse :)

Lies, damn lies, and delivery estimates

</comment></comment><comment><USER10> How can you release a product with such an outdated doc? Seriously, I literally copy-pasted the example of data insertion from the github README and I get 'Time Serie Name is required.'

The Getting started mentions the line protocol, and the link to 'learn more about it' talks about the POST body being JSON (a malformed JSON cause I get the same error in the UI when trying to insert it). Which one is it?

<comment><USER11> The libraries also weren't updated :) -> see [https://github.com/influxdb/influxdb- python/issues/193](https://github.com/influxdb/influxdb-python/issues/193)

The issue behind is that "name" has been renamed to "meassurement" \- [https://github.com/influxdb/influxdb/issues/2564](https://github.com/influxdb/influxdb/issues/2564). They implemented that change on 2015-05-21 in rc31

</comment></comment><comment><USER12> I wonder when they are planning to replace their shitty DEB and RPM packages with something built properly and with proper post-install and init scripts. Currently they're using ridiculous interactive script that clamps together fetching code, compiling it, packaging artifacts (in fact, it _contains_ some artifacts (sic!)), and shipping packages to Amazon.

<comment><USER3> Have a recommendation for what we should be doing? More than happy to update how we package to make things easier or more idiomatic

<comment><USER12> 1\. Split all the above-mentioned steps to separate scripts or makefile targets. It's ridiculous to mix them; how are people supposed to build InfluxDB inside networks that don't have access to internet?

2\. Learn how to build RPMs and DEBs the proper way (Debian source package, SRPM) instead of cutting corners with FPM. It fails to include dependencies, and full description, for instance, or to mark files as configuration.

And yes, your binaries _do_ have dependencies.

Also, your DEB metadata is broken, according to lintian.

3\. Learn where to put which files in Linux. LSB wasn't agreed on for nothing.

4\. Rewrite your post-install script to something that fits your target distributions' conventions. This most probably means two scripts, for Red Hat and for Debian. For instance, under Debian your packages create service user that doesn't fit the rest of the system (UID above 500, home under /home, usable shell).

<comment><USER13> I've wanted to create (deb) packages in the past, but found a large number of conflicting instructions on the "right way". Is there an approach / howto-doc you would recommend?

<comment><USER14> The right way is to provide a debian directory with the appropriate packaging metadata.

Use git-buildpackage and associated tools (git-dch etc) to build the packages natively (or allow others to build for their Debian based distros).

<comment><USER13> Thanks, but it's still not obvious to me what to do. Looking at this: [https://wiki.debian.org/PackagingWithGit](https://wiki.debian.org/PackagingWithGit), git-buildpackage documentation seems to suggest either creating a separate branch, or packaging tarballs, both of which seem different to what you're suggesting where I just create a debian directory.

Do you have a different document or an example repo with the debian/ directory? This is why I've resorted to FPM in the past - the deb tools seem so simple, and I'm sure they are simple for people that have done it before, but the documentation for FPM is much more direct and thus people (such as myself) use it, even though we know it's not "right".

</comment></comment></comment></comment></comment></comment><comment><USER15> Has anyone been adventurous enough to use the 0.9 release candidates or previous versions to collect and analyze application & server metrics with statsd, Grafana, etc.? How has it worked for you? Any recommendations?

I've been waiting for 0.9 to hit, so I guess I'll find out myself soon enough.

<comment><USER16> My server ran out of disk and now I can't 'list series' in InfluxDB and my graphs are empty. Need to investigate...

(0.8.8 + statsd + grafana)

</comment></comment><comment><USER17> Minor typo in [http://influxdb.com/support/](http://influxdb.com/support/)

"Purcahses" for InfluxDB development support provide...

<comment><USER18> Also, their support options don't seem to have prices? Why publish a list of different tiers if you have to ask for a quote anyways?

</comment></comment><comment><USER19> Go Paul and Todd! Go!

</comment><comment><USER20> Homebrew still has version 0.88. Will 0.9 be coming soon?

<comment><USER3> yep, should be getting updated in the next day or so. We're on it ;)

</comment></comment><comment><USER21> The download link is currently throwing access denied :(

<comment><USER3> looking at it, should be fixed in a few minutes

</comment></comment><comment><USER22> wouldn't pay for a developer plan when the docs are so out of date. Update the docs, and I'll see what I really need paid support for.</comment>


A Calculus Analogy: Integrals as Multiplication - <AUTHOR> http://betterexplained.com/articles/a-calculus-analogy-integrals-as-multiplication

<comment><USER2> That's a very nice explanation. I'm going to have to file that one away for when my kids are ready...</comment>


The Sophisticate's Guide to Passwords - <AUTHOR> https://medium.com/policygenius-stories/the-sophisticates-guide-to-passwords-4bb6b5d9ecb5?utm_content=buffer0b492&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer#.uymfhi6p1 <comment><USER2> Despite admitting that...

> Attackers use programs that try all words in a password dictionary, which is > typically just a file of commonly used words in a given written language. > These programs will even use combinations of these words, and permutations > based on common replacements of letters with numbers or symbols

The author then goes on to say...

> Compare the password "B5s9z-Qx" with the password > "SophisticatedpwsRock!!".... The first would be 72⁸, or 722,204,136,308,736 > possible passwords. This would take a desktop PC roughly 3 days to crack. > Compare that with our second password, which would be 72²² or > 72,663,267,215,268,556,211,671,874,973,277,863,542,784, that's a lot of > possibilities.

This is a contradiction. A 10-letter word does not add as much entropy as 10 random characters. If you assume it does, you will cripple your security.

Do not follow this advice on passwords.

<comment><USER3> Seems like you decided to quote the article, yet ignore the actual advice.

>Password length is 99% of password security. Password complexity is a distant second when it comes to modern password security.

He doesn't say to use a common 10 letter word with no complexity, which you infer with your comment. It's also comparing 72^8 with 72^22. The point of the article is that length trumps complexity. Not sure how you came to your conclusion.

<comment><USER2> My point is that 72^8 and 72^22 is an invalid comparison to determine the relative strength of those passwords.

B5s9z-Qx is 72^8

SophisticatedpwsRock!! is something like number_of_common_words^2 + 26^3 + 10^2. In other words, two common words, three lowercase letters and two symbols.

You can put each of these passwords in Dropbox's zxcvbn ([https://dl.dropboxusercontent.com/u/209/zxcvbn/test/index.ht...](https://dl.dropboxusercontent.com/u/209/zxcvbn/test/index.html)) to see this more clearly.

They give a guesses_log10 of 8 for "B5s9z-Qx" and 12.76155 for "SophisticatedpwsRock!!". In other words, the latter is stronger, but it's not 72^14 times stronger. That's where the article messes up.

An attacker isn't going to crack "SophisticatedpwsRock!!" by trying 72^22 options. Just like an attacker isn't going to crack "password" by trying 72^8 or even 26^8 options. They're going to try 1000 or so options of super common passwords for "password" and some combination of dictionary words, abbreviations, symbols, common transformations, etc for "SophisticatedpwsRock!!". This makes the search space much, MUCH smaller than 72^22.

<comment><USER3> >My point is that 72^8 and 72^22 is an invalid comparison to determine the relative strength of those passwords.

That's fair, but you're talking about directly attempting to crack as opposed to rainbow tables, which I believe was the authors intention, mapping the full key space. In this case, the exponents still hold.

>Do not follow this advice on passwords.

Additionally, maybe your first comment's point wasn't well articulated, since the author's work has proven true in your own tests for the passwords given, length trumps complexity. I would also argue that he doesn't say anywhere do not use complexity, he specifically points out however that banks use complexity as a mask of security while limiting length.

<comment><USER2> Length does not trump complexity.

"Internationalization" is 20 letters long, but it will be cracked in seconds by even a moderately sophisticated attacker. (zxcvbn gives it guesses_log10 of 4.34708)

The only way to measure password strength is to estimate the number of guesses necessary to crack the password. That means figuring out how many possible passwords could have been chosen for whatever method you are using to pick your password. In the case of "SophisticatedpwsRock!!", the method is something like: common adjective with a common transformation (capitalization), relatively common abbreviation, common noun with a common transformation, common punctuation, common punctuation. The number of possible passwords using that pattern is what you should be interested in, because that is how the attacked is going to get your password, not by trying every possible combination of characters.

For a simple example, the passwords "i like salt" and "you like pepper" should be considered equally strong (or equally weak as the case may be) since they follow the same pattern for generation. Any system of determining password strength which gives them significantly different strengths is misleading. In this case, if we followed the method the author used, we would say "you like pepper" is 26^4 times stronger, which is absurd. (zxcvbn by comparison gives them both almost the same rating: guesses_log10 of approximately 8.)

You cannot take a password picked by one method (common words) and score based on another method (characters). Passwords are only as strong as the easiest possible way to guess them. If you generate 8 random characters and they happen to spell "password", your password is still weak because it can be guessed by a much easier method than going through every combination of 8 characters.

Find the easiest way to approach guessing a password and see how many tries it would take using that method. That will give you the strength of the password. Counting characters will not.

<comment><USER3> >"Internationalization" is 20 letters long, but it will be cracked in seconds by even a moderately sophisticated attacker. (zxcvbn gives it guesses_log10 of 4.34708)

Literally nothing to do with the article and an absurd choice for a password to make your (misguided) point. Length does trump complexity, however once again I'll repeat, the article doesn't say complexity doesn't matter. It does. It says it does.

Sorry my man, I think you missed the point of the article entirely. I also think your knowledge about how passwords are cracked in the wild is off base. Your theoretical thought experiment here isn't how it's done. Also the Dropbox password calculator you provided proves it. Every single character added to a decent password adds guesses_log10 assuming moderate complexity.</comment></comment></comment></comment></comment></comment>


Stealing from Arc: [+ _ 1] in Common Lisp - <AUTHOR> http://www.bradediger.com/blog/2008/03/stealing_from_arc.html

<comment><AUTHOR> I'm new to Lisp, so naturally thought that readtable hacking would be fun. ;-) Here's the result of porting Arc's anonymous function syntax to CL.</comment>


The Journalistic Legacy of David Foster Wallace - <AUTHOR> https://longreads.com/2017/12/07/derivative-sport/ <comment><USER3> I've heard a lot of bad things about Wallace's journalistic ethics - <USER2> misrepresenting the actual story, not the big lines but lots of the details, for stylistic effect. He was not a rigorous searcher of actual truth, just some kind of idealized "emotional truth", and in an era where "alternative facts" is considered an acceptable way to respond to an outright lie, that's not something to emulate. It's been a while so I don't have the exact links to the articles that mention this. (I think some of it was in the biography of Wallace by DT Max.)

Also, that cruise ship essay makes him look like a complete asshole.

It kind of reminds me of that book, The Lifespan of a Fact, about the protracted struggle between "literary journalist" John D'Agata and fact- checker Jim Fingal.

This kind of thing pisses me off, even if it's considered great writing. I've personally been interviewed by a rather well-known journalist (my only interview of my life, I am neither famous nor notable), and in the resulting piece there were questions I was never asked and answers I never gave. Thankfully the false words he put in my mouth were not so bad, but what if it had been something actually important? So this kind of stuff leaves a bad taste in my mouth.

<comment><USER4> Have you read David Lipsky's "Although Of Course You End Up Becoming Yourself" or seen The End of the Tour? It may not change your opinion of DFW much, but it shows what it was like trying to get answers from him on some of the stuff you mentioned (not the ethics stuff as much as what his style means, maybe). It's a pretty detailed account of a Rolling Stone writer (Lipsky) following and interviewing him right after Infinite Jest was published, but it ends up mostly being about the stuff in the last few lines of your comment.

</comment></comment><comment><USER5> Read Wallace's fiction, especially his novels, for serious (but laugh-out-loud funny) literature. The non-fiction is somewhat hit-and-miss, with the glaring brilliant exception of his nearly-always-overlooked book on mathematics ("Everything and More"), which should be required reading.

<comment><USER6> String Theory is one of my favorite essays of all time. Discusses the incredible gap between journeymen, low-ranked tennis pro's and the elite players in both ability and quality of life, as well as the gap between journeymen and highly competive amateurs.

Definitely recommend Infinite Jest like probably anyone else in this thread, but would recommend reading his non-fiction first. Jumping into Infinite Jest, I thought Wallace was some wierdo crank for a long time before I "got" his style and what he was going for. Even then, it took a long time before I enjoyed it and he very quickly became one of my favorite authors.

I think Infinite Jest and GEB are two of the only epic books that accomplishes so much, but in two entirely different contexts. They both build intense, well founded and well structured frameworks that lead up to epic resolutions, despite being respectively fiction and non-fiction.

</comment></comment><comment><USER7> I'd agree with the more critical takes. I've read something like 3/4 of his collected short non-fic at this point and it's _very_ uneven, and the gems one does find among the rest tend to be of the semi-precious sort.

<comment><USER8> Who do you like for short non-fiction? Just collecting recommendations.

<comment><USER9> Not the parent, but I like String Theory [1], which is about non-superstar pro tennis, and A Supposedly Fun Thing I'll Never Do Again [2], which is about a vacation on a cruise ship.

The second one looks a lot like snarky "I'm the only cool person here" journalism, but IMO that sort of (typically bad) journalism exists in large part because Wallace could do it really well.

Oops, I misread your comment as "what", not whom. For whom, I dig George Saunders. Here's a piece he wrote about a visit to the mysterious "Buddha boy" a while back [3]. Saunders to me is pretty much Wallace's spiritual successor as far as style and tone goes.

[1] [http://www.esquire.com/sports/a5151/the-string-theory- david-...](http://www.esquire.com/sports/a5151/the-string-theory-david-foster- wallace/)

[2] [https://harpers.org/wp- content/uploads/2008/09/HarpersMagazi...](https://harpers.org/wp- content/uploads/2008/09/HarpersMagazine-1996-01-0007859.pdf)

[3] [http://reprints.longform.org/the-incredible-buddha- boy](http://reprints.longform.org/the-incredible-buddha-boy)

<comment><USER10> I'll second George Saunders! I highly recommend his "CivilWarLand in Bad Decline" (a novella plus a collection of shorts). I have not heard him compared to DFW before. Maybe I should give DFW another try.

<comment><USER9> Please do. They're similar to me as adept mixers of high (both are plenty virtuosic/"pretty" when they want to be) and low (both are great at slapstick) style and write with a kind of scientific eye for details. Saunders has described this as "if you put a welder to work making dresses". And there's almost always a basically earnest emotional core underneath everything.

</comment></comment></comment></comment></comment><comment><USER11> On a trip to coastal Alaska some years back, I saw a small launch packed shoulder-to-shoulder with cheerless, unprosperous looking people, motoring along the shoreline -- but away from the harbor. A local explained that these were cruise ship workers out for a sightseeing tour, a perk of their jobs. The boat would however never land on shore, because the workers had no visas. And might perhaps try to escape.

"Supposedly Fun" brought that moment back for me in a rush. Wallace could not feel at ease being "pampered" by workers themselves forced to maintain a facade of permanent delight. Such a feeling could only make alien to him most of his fellow passengers. Unlike them, he had to see the workers as complete human beings coequal with himself every way, except for what opportunity the world had denied them. With such empathy, he joins Dickens, Melville, Orwell -- and in other ways as well, Hunter S. Thompson.

So yes, DFW chooses sides, and his contempt for callous, oblivious passengers shows. But the real vitriol he reserves for interviewees in the management class, none of whom will give a straight answer to his plain questions about the crew's welfare. A certain whip-wielder in the officer's quarters -- "I wish him ill".

And best of all, the Press Liaison at corporate who tells him "The people on board -- the staff -- are really part of one big family..." To which DFW responds: "...the preterite staff lived in mortal terror..." (footnote 13)</comment>


Ask HN: Foursquare Alternative? - <AUTHOR> I like swarm / foursquare for logging locations I visit. What I used to like is that I could subscribe to the foursquare iCal feed and see my checkins on my calendar.
Foursquare has stopped supporting this feature. I have tried using other options (like IFTTT). But nothing works well.
Are there alternatives to foursquare, in particular, that support "subscribing" via calendars or let me visualize the time series of my checkins easily? <comment><USER2> In this day and age, is it a good idea to constantly share your location to the public?</comment>


Programming Languages are the Least Usable, but Most Powerful User Interfaces - <AUTHOR> http://blogs.uw.edu/ajko/2014/03/25/programming-languages-are-the-least-usable-but-most-powerful-human-computer-interfaces-ever-invented/ <comment><USER2> Yeah. I've come to realize that the hard way.

It is also what it comes down to w.r.t. code-over-config.

To make a system sufficiently configurable, you end up having to re-invent a turing complete language inside it's configuration files, so it starts looking more like lisp.

This is due to the [1] Inner Platform effect.

The only interfaces I know of that's expressive enough to drive a turing complete language is either flowcharts, or actual code.

This is kind of why I feel that systems like gulp are just superior to grunt, because ultimately the config format can never be expressive enough to solve all the problems, and there's just so much less work to write-what-you-mean, the first time. properly.

This also relates my newly adopted philosophy w.r.t. software complexity. [2] Simple vs Easy.

[1] - [http://en.wikipedia.org/wiki/Inner- platform_effect](http://en.wikipedia.org/wiki/Inner-platform_effect)

[2] - [http://daemon.co.za/2014/03/simple-and-easy-vocabulary-to- de...](http://daemon.co.za/2014/03/simple-and-easy-vocabulary-to-describe- software-complexity)

<comment><USER3> > To make a system sufficiently configurable, you end up having to re-invent a > turing complete language inside it's configuration files...

Isn't source code basically a configuration file for the compiler/interpreter?

> because ultimately the config format can never be expressive enough to solve > all the problems

And if so, I don't think this statement is quite true. Source code is expressive enough.

Configuration files give us flexibility but not expressiveness. Source code, as it exists today, gives us expressiveness but not flexibility[1].

This disparity should be a big red flag that we are doing something really wrong.

This disparity, in my opinion, is caused by the abstraction we use to communicate information between systems within source code: parameterized sub- routines.

A programming language that doesn't use parameterized sub-routines is basically a configuration file. This gives us both expressiveness and flexibility.

[1] Flexibility is within the context of config-vs-source code and ops post. Programming languages are very flexible when you know them.

<comment><USER4> _Isn 't source code basically a configuration file for the compiler/interpreter?_

Source code is input, not configuration. Every time you run the compiler, you give it different source code. The whole point of the compiler is to transform source code.

Configuration is "input" that is not expected to change very often, but that the application developer can not guarantee will never change. Configuration falls into a few categories:

1\. Context-specific inputs that can not be predicted or discovered automatically by the application. (For example, the DNS zones the process is expected to host - named.conf)

2\. Inputs that are not expected to change very often, but should be easy to change if necessary. (ssh client or server settings)

3\. For applications with interactive user interfaces, customization and changes to the default interface.

For the vast majority of applications, a text file capable of expressing simple data structures is more than sufficient. Others advocate using only a database, but only to make configuration dynamic so explicit reloads aren't necessary, not to make it more like a programming language.

The source-vs-configuration question is usually only be an issue when dealing with large, complex applications with very general specifications.

<comment><USER3> > Source code is input, not configuration. Every time you run the compiler, > you give it different source code.

Interpreted languages (JIT) re-interpret the same source code every time they are run (though they don't have to).

What about monkey patching ([http://en.wikipedia.org/wiki/Monkey_patch](http://en.wikipedia.org/wiki/Monkey_patch))? An example usage is altering behavior (the source code) based on running the code in a testing environment -vs- production (as one example).

How about dependency injection? How about lambda expressions?

What about best known practices like favor composition over inheritance? If we hard code a solution using inheritance that is input but if we build out a solution using composition that is a configuration?

These are all tools available to programmers that provide ways of changing behavior at the source code level even though that behavior may not change very often.

This is starting to look like a real gray area to me: input -vs- configuration.

I guess we can try and distinguish between the types of input a system consumes (based on the static nature of the input) but I don't know how useful that is as an abstraction.

<comment><USER4> Monkey patching is 3rd-party modification to the application itself; or specially modified inputs that simulate such a modification. It's not configuration.

Dependency injection is a software design pattern. There's no point calling it configuration.

A lambda expression, from a programming perspective, is just an anonymous function, a function so trivial it does not need an associated identifier.

        > If we hard code a solution using inheritance that is
        > input but if we build out a solution using composition
        > that is a configuration?

No, a solution using composition is not configuration. Maybe it might help to think of the intended audience:

Configuration is intended for end-users or system administrators, NOT programmers. Configuration specifically refers to inputs that you _remove from code_ and place somewhere that is (a) easily modified by anyone and (b) very hard to break.

All of the tools or techniques you list are targeted at programmers (and programmers doing programming, not configuring their text editor or IDE).

        > This is starting to look like a real gray area to me:
        > input -vs- configuration.

Of course it's a grey area. Configuration is ultimately a type of input. But there's still a semantic distinction to make, just like there's a semantic distinction between a desert and a grassland even though the border between the two isn't distinct.

Also, I should make it clear there's an assumption we're talking about application configuration, not configuration in the ITIL sense, where it has an extremely generic meaning.

        > I guess we can try and distinguish between the types
        > of input a system consumes (based on the static nature
        > of the input) but I don't know how useful that is as
        > an abstraction.

Primarily, the distinction informs decisions about how access to various options and features are provided. Do you require the code itself to be modified? Do you make it a compile-time flag? Do you have the application load it from a default file in a standard location (like /etc/myapp.conf) or do you read the input from stdin? It's possible to have a solid understanding of where to put things without actually using the word "configuration" but why not just use the term since it is already there?

<comment><USER5> Code vs config is not _supposed_ to be a grey area, but it quickly becomes one when you try to make the application so configurable that you're actually moving business logic to the config files. That's why that is an anti-pattern.

<comment><USER4> I upvoted your comment, but the reality is that the grey area is easy to find.

Consider apache's httpd.conf. It includes support for fairly advanced features like conditionals, scopes, and sub-configuration of 3rd party modules. In some environments, for example, it may be quite sensible to include some bits of what might technically be considered "business logic" in something like URL rewrites.

Consider DNS records. Not named.conf, but the actual zone data itself. Is that configuration or is it data? Do you check zone files into a configuration repository with your other files, or do you treat them more like a database to be modified on the fly and just back it up periodically? It probably depends on how dynamic the records are expected to be.

Consider emacs: it uses lisp as its configuration language.

On the other end of the scale, you have very small single-purpose scripts that are easily hand-editable. If you have a script that's no more than 1K, maybe you simply put an "options" section at the top with some defaults that can be changed by modifying the code directly. Or maybe your script is so small that even that amount of overhead is pointless.

It's important to remember that just because there is a grey area doesn't mean that just because you might stuck there, everyone is. But it doesn't mean it can't be confusing sometimes.

<comment><USER5> Yeah, at a certain point you cross over from configuration into scripting. Emacs Lisp is definitely in the scripting zone, on purpose.

Yes, Apache has a crazy amount of configuration in httpd.conf, and supports conditionals and scopes, to the point where they had to write a syntax checker for it. I would actually consider httpd.conf a good example of the "softcoding" anti-pattern.

A certain amount of configuration is good, and deliberately providing a scripting DSL language for your program is also good if appropriate.

But when you inadvertently cross over from normal configuration into absurdly complex configuration that resembles a crappy scripting language, giving you the feeling that you're in this big grey area between code and config, that's an anti-pattern.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> I think it's a massively fascinating question to ask "Why didn't something like hypercard become the web?"

And please don't knee jerk some story about some Apple decision making. That doesn't matter. If the hypercard model had the value I think it does, someone else should have surfaced and gained momentum.

That didn't happen, and while I don't have the answer for why, I think it would shed some light on why "code as a user interface" for non coders has had only limited successes (Spreadsheets, SQL).

<comment><USER7> It's arguable that Excel is the most widely used "programming language" depending on your definition. If you've spent much time around certain business professionals, you'll see that they really push spreadsheets to do unexpected things to solve their problems.

I've actually wondered why there hasn't been more exploration into visual / declarative programming since it has the appeal of being very easy to get started.

<comment><USER2> > visual / declarative programming ... has the appeal of being very easy to > get started

Does it, really? I spent the last 2 years building systems that ran off of workflows (as in flowcharts), and I think now that they don't make the big hurdle (capability for abstract reasoning) any easier at all.

They are fine to document and communicate things, but as input they are just flawed (except for some very very specific niches).

<comment><USER3> > building systems that ran off of workflows (as in flowcharts) > but as input > they are just flawed

The flaw is to assume there is only one mental model that Visual Programming Languages should operate under: say only workflows for example (a mistake all VPLs I've seen have done). This is like assuming that there should only be object-oriented programming when there are other methodologies we use as programmers to form mental models such as declarative programming, functional programming, structured programming, etc.

It doesn't make much sense to code out mathematical equations using flow charts.

A VPL which supports multiple mental models is able to best represent behavior based on specific business domains. The right tool for the right job.

<comment><USER8> Functional VPLs have the same abstraction/scaling up problems as OO VPLs. The problem is that we (as human beings) don't know how to communicate very efficiently without our words, and visual embellishment is not directly useful.

<comment><USER3> > The problem is that we (as human beings) don't know how to communicate very > efficiently without our words, and visual embellishment is not directly > useful.

To me, this sounds like someone in the literary field of the arts telling an artist or musician that those fields of the arts are not directly useful.

Music and art? Those visual (and aural) embellishments are not directly useful.

There was a great HN post ([https://news.ycombinator.com/item?id=7543691](https://news.ycombinator.com/item?id=7543691)) on visually stunning math concepts. What you are implying is that coding out a mathematical equation as opposed to representing it using actual equations ([http://i.livescience.com/images/i/000/036/119/original/minim...](http://i.livescience.com/images/i/000/036/119/original/minimal- surface.jpg?1359485766)) is a visual embellishment that is not directly useful?

> Functional VPLs have the same abstraction/scaling up problems as OO VPLs.

This could be a problem with VPLs or it could be a sign of some root cause problem(s) with how we code today. Perhaps, there are better programming abstractions/methodologies that work equally well as words (source code) and as VPLs.

<comment><USER8> I'm all for art and music, but can you converse with it? They obviously communicate something that is quite different than "buy eggs on your way home from work." Could you communicate this to your SO without using words, using a picture or music? There is a good reason why pictionary is a challenging game. And just as well, artists and musicians are probably not very interested in communicating such utilitarian trivialities through the artifacts they create. Art is not meant to be efficiently communicative, but to influence us in other, perhaps deeper, ways.

> This could be a problem with VPLs or it could be a sign of some root cause > problem(s) with how we code today. Perhaps, there are better programming > abstractions/methodologies that work equally well as words (source code) and > as VPLs.

The language center of our brains evolved 50-100 thousands of years ago, which eventually led us to technology and civilization (things really pick up after we discovered writing at about 10kya). The reason we use words for programming is that we are biologically evolved for that. Are you seriously suggesting that there might be a better way for us to communicate and express ourselves concisely?

<comment><USER9> >Art is not meant to be efficiently communicative, but to influence us in other, perhaps deeper, ways.

[http://upload.wikimedia.org/wikipedia/commons/e/e2/OrteliusW...](http://upload.wikimedia.org/wikipedia/commons/e/e2/OrteliusWorldMap1570.jpg)

[http://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Joy...](http://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Joy_Oil_gas_station_blueprints.jpg/800px- Joy_Oil_gas_station_blueprints.jpg)

[http://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Exp...](http://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Exploded_view02.jpg/800px- Exploded_view02.jpg)

[http://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Maq...](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Maqueta_turbina_hidroel%C3%A9ctrica.jpg/800px- Maqueta_turbina_hidroel%C3%A9ctrica.jpg)

[http://upload.wikimedia.org/wikipedia/commons/2/2e/Radial_en...](http://upload.wikimedia.org/wikipedia/commons/2/2e/Radial_engine_large.gif)

<comment><USER8> I see plenty of words there. Visual notation is great for conveying spatial relationships, no doubt about that, and spatial layouts can work well as secondary notational aspects, there is nothing to argue about there. But would you want to read war and peace in dataflow diagram format?

<comment><USER9> I'd read a story written as a dataflow diagram if it made good use of the format.

War and Peace has been made into a movie at least half a dozen times.

<comment><USER8> How about War and Peace performed by mimes?

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Obviously there's lots of research to be done on the best ways to design programming languages and the best ways to teach them.

However, the headline presumes there can be some universal standard of measuring what we can "usability" that's somehow separate from the practical "usefulness" of the tool itself. Tools that do fewer things can be made easier to use that tools that do many things. Turing-complete programming languages can be made to do anything the computer can do, which is a lot. And so there's going to be a hard limit on how "usable" they can be. Not to say we're even close to reaching that limit, but you'll never make a programming language that's as "usable" as a screwdriver, and that's okay.

<comment><USER11> Well, I'll admit that a rather debatable claim. But article provides reasonably good backup for that claim using the tools of professional user interface design, a field that has become a lot more systematic in recent years. Towards the end of the article, he describes a number of metric which can be used in measurement of programming languages as task-accomplishment tools.

</comment></comment><comment><USER12> Reminds me of the different ways the environment is set up in Windows and Linux. In Windows, when you want to edit your environment variables, there's a simple configuration utility with a list of them, you click and edit and it all takes effect immediately. In Linux, there's a chain of events where different shell scripts are ran in some way at different levels of the bootup process depending on strange and arcane factors, so when you edit ~/.profile that only takes effect in your terminals and not in applications started by the DE, but also not in tmux, because it's not sourced by ~/.bashrc somehow. And once you puzzle out the chain of command and edit everything you have to log out and back in. And when you want to make changes to the global environment, there's /etc/environment, /etc/profile and /etc/profile.d/yourscripthere.sh. Only one of these is the right choice but only for a specific distro, DE and shell combination. Oh, and if somehow you manage to source a script twice your PATH gets duplicate entries in it. Not technically a problem, but it kind of irks me.

</comment><comment><USER13> The "glue-language" philosophy underlying Tcl can strike an optimal balance between usability and power:

[http://www.yosefk.com/blog/i-cant-believe-im-praising- tcl.ht...](http://www.yosefk.com/blog/i-cant-believe-im-praising-tcl.html)

Shells partition away sophistication.

<comment><USER2> Tcl is actually really powerful and fun.

Everything is a string is a bit quirky, but it's just lisp-like enough to allow you to do some really nifty things.

I don't ever want to write anything seriously in it again though, and I can't see myself starting a new project with it.

<comment><USER14> I wrote many lines of Tcl back in the early .com days, as we had an in-house server stack based on Apache, similar in certain ways to AOL Server, but doing ORM stuff people only discovered a decade later with Ruby on Rails.

Only used a few times later to script Websphere via Jacl.

However, nowadays I don't have any reason to touch it as well.

</comment></comment></comment><comment><USER11> Wow, there are many ways to go with this...

I would claim that natural language is the most usable and the most powerful user interface. We humans have been relating with it for quite a while and there's no sign of a let-up.

And most programming language either contain fragments of natural natural language or can be translated into such fragments. Yet, the author is right, programming languages are "least usable". Indeed, consider SQL was created specifically to be usable like a natural language but it now considered more unusable than even an average programming language. What gives? (I have my suspicions but I wonder what people think).

<comment><USER15> Utterances in any natural language are always ambiguous, often hopelessly so. It works out because the speaker and listener are cooperating towards a shared goal; the removal of this assumption of cooperation is why contracts and legal codes get longer and longer over time as they try to deal with the fact that they can't actually specify anything the way they'd like to.

The computer isn't like another person, and we'd really prefer to have it do what we say rather than guess what we want and act accordingly. Indeed, we are not yet able to have a computer guess what we want to any respectable accuracy.

(Think of it this way. In some languages you can provide compiler hints that say, for example, "this variable will usually be an integer, so please optimize for that". A natural language consists basically 100% of compiler hints and 0% of instructions.)

<comment><USER11> _The computer isn 't like another person, and we'd really prefer to have it do what we say rather than guess what we want and act accordingly._

From the point of a view of a programmer, yes.

But isn't this kind of the division point between a "good user interface" and a programming language.

Lots of user level system _are_ intended so the computer guesses what you want and does that.

</comment></comment></comment><comment><USER16> Turing-complete config files do not sound like proper config files :)

<comment><USER17> It's an antipattern the inexperienced frequently fall into. Just one _little_ extra bit of functionality, and ... whoops! Suddenly, you _can_ program there, so now you will _have to_ program there.

Same applies to markup languages. TimBL held HTML back from Turing- completeness for ages, then JavaScript came along.

<comment><USER18>
      > ... whoops! Suddenly, you can program [in the
      > configuration files], so now you will have
      > to program there.

What's forcing a user to configure a system if they don't need to make changes? Why is it preferable to use something functionally restricted rather than a programming language to configure a system?

<comment><USER2> you need to develop the sense to know that just because something could be made configurable doesnt mean it should be.

what software doesn't do is often as important as what it does do.

<comment><USER18>
      > you need to develop the sense to know that just because
      > something could be made configurable doesnt mean it
      > should be.

That doesn't explain why one shouldn't use a programming language when things are configurable.

<comment><USER19> I'll take a stab at it, please feel free to critique.

All my reasons come down to complexity. Competing against our righteous need to make software do cool stuff, is the fact that everyone writes software that breaks all the time. Configuration that can perform arbitrary computation can put our programs into literally any state, making it that much harder to make them robust and correct.

It also opens up the risk that people won't configure their software correctly because they don't understand the configuration. And it even opens up attack vectors - what if there's a buffer overflow in your configuration interpreter, or a resource link that lets configuration files do arbitrary things to a system?

But I think one of the biggest risks is fragility. Configuration files that can do arbitrary computation will be made to do so. Software that gets used by lots of people will end up with towers of complexity built into the configuration, to the point that removing or refactoring them risks bugs, edge cases, or breaking a particular feature or misfeature that someone relies on. Better to control the complexity in the first place.

<comment><USER18>
      > Configuration that can perform arbitrary computation can
      > put our programs into literally any state...

Considering that it's generally a poor design that expose the full state of an application to all parts of the same application (think: "global state"), then yes, it holds that exposing the entire application state to the configuration system is also a very poor design. I would think that if a user could set three values via configuration, then those three values would be the only state exposed.

      > It also opens up the risk that people won't configure
      > their software correctly...

We can always find someone who can't configure the system, regardless of how the configuration is done. If we're worried about making configuration "safer", then the system should be more careful about what configuration values it accepts i.e. implement robust validation.

      > But I think one of the biggest risks is fragility.

Systems that can't adapt to unanticipated needs of their users get replaced by systems that can adapt. It's why many pieces of mature software develop this robust configuration ability (often hiding under the label "api", "scripting interface", "plugin framework", etc.)

      > Software that gets used by lots of people will end up with
      > towers of complexity built into the configuration, to the
      > point that removing or refactoring them risks bugs, edge
      > cases, or breaking a particular feature or misfeature that
      > someone relies on.

This is not a inevitable. Many mature systems have successfully incorporated fully programatic configuration [1] without turning into "towers of complexity". (It probably says something about the application's architecture if it's so tightly coupled to it's configuration.)

[1] Unix is the poster child for this.

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> Yes, yes they are. I'm not a programmer, but a user with a refined taste for java--hah just kidding! Clojure isn't so bad though. Java is an interesting interface or programming language because you need an autocomplete editor i.e. another interface to really enjoy it. Don't forget maven and ant for libs and builds.

But some people are probably comforted by java ui maybe because it is so structured.

Edit: remember ant and maven.</comment>


A new book about Oscar Wilde's last years - <AUTHOR> https://www.prospectmagazine.co.uk/arts-and-books/wilde-about-paris-the-sex-drink-and-liberation-of-oscar-wildes-lost-years <comment><USER2> Previously submitted 12 days ago: [https://news.ycombinator.com/item?id=17561750](https://news.ycombinator.com/item?id=17561750)

<comment><USER3> Thanks!</comment></comment>


Electric Sheep on Ubuntu Linux 17.10 - <AUTHOR> https://blog.openbloc.fr/compiling-electric-sheep-on-ubuntu-linux-17-10/ <comment><USER2> I have spent so many hours staring at Electric Sheep, thinking and wondering about how it works, that I finally looked it up, and found the papers about it!

It took less time to read the papers than it took to stare at the screen all day tripping out and wondering, but I like to do both.

The Flame Algorithm

Flames are algorithmically generated images and animations. The software was originally written in 1992 and released as open source, aka free software. Over the years it has been greatly expanded, and is now widely used to create art and special effects. The shape and color of each image is specified by a long string of numbers - a genetic code of sorts.

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

The Fractal Flame Algorithm

[http://flam3.com/flame.pdf](http://flam3.com/flame.pdf)

Evolution and Collective Intelligence of the Electric Sheep

[http://draves.org/aoae07/draves-aoae07.pdf](http://draves.org/aoae07/draves- aoae07.pdf)

The Electric Sheep and their Dreams in High Fidelity

[http://draves.org/npar06/npar06draves.pdf](http://draves.org/npar06/npar06draves.pdf)

infinite evolving crowdsourced artwork

[https://github.com/scottdraves/electricsheep](https://github.com/scottdraves/electricsheep)

Copyright Spotworks LLC GPL2 Licensed see [https://github.com/scottdraves/electricsheep/blob/master/cli...](https://github.com/scottdraves/electricsheep/blob/master/client_generic/COPYING)

2015.05 moved from code.google.com repo 2011.01.30 based on revision 1546 on sf.net

The Electric Sheep is a cyborg mind. It harnesses the collective intelligence of 450,000 computers and people to create abstract art with mathematics and Darwinian evolution. The result is seamless, organic, and infinite. See also [http://electricsheep.org](http://electricsheep.org) and [http://scottdraves.com](http://scottdraves.com) .

The rendering engine is a separate project at [https://github.com/scottdraves/flam3](https://github.com/scottdraves/flam3)

</comment><comment> w-ll Can the author of Milkdrop please open source or release another version purely as a a/visualizer.

<comment><USER3> Milkdrop _is_ open-source :)

[http://www.geisswerks.com/about_milkdrop.html](http://www.geisswerks.com/about_milkdrop.html)

</comment></comment><comment><USER4> Electric Sheep ships with Slackware, which I've always found to be a really cool little feature. Certainly one less thing to install :)

<comment><USER5> Slackware is perhaps the most underrated current Linux distro. Not much has changed on the surface in the past decade or more, yet underneath it's a thoroughly modern system that is just fine for daily use.

I find it amusing that Electric Sheep must be compiled by the user for Ubuntu (the "user friendly" Linux) yet is one-click-easy to install on Windows and macOS, and is installed by default on Slackware.

</comment></comment><comment><USER6> I just learned about checkinstall. That's really cool!

<comment><USER7> Me too! Is this how deb packages are usually made?

<comment><USER8> No, generally there is a debian directory with things like rules, control file, copyright etc.

A .deb is basically a tarball with some manifest information. You can build 'non-standard' packages in this way (also see FPM[1] - which will do this and more rpm etc). However if you ever want to upstream a package, there are guidelines that debian produce around this.

[1] [https://github.com/jordansissel/fpm](https://github.com/jordansissel/fpm)

</comment></comment></comment><comment><USER9> the main website: [https://gold.electricsheep.org/](https://gold.electricsheep.org/) (there are installers for mac and windows)

</comment><comment><USER10> I'm gonna highjack this thread to ask if anyone has any recommendations for scifi books to read after DADOES and Neuromancer. I sped-read them both after seeing the new Blade Runner and absolutely loving it and both of those books, though PKD's writing is a little 'different'.

<comment><USER11> If you want to delve into PKD's... different thinking. A Scanner Darkly, and The Three Stigmata of Palmer Eldrich.

If you want another sci-fi detective noir, Altered Carbon fits the bill.

<comment><USER12> There are some PKD stories that have fallen into public domain - read them here:

[http://www.gutenberg.org/ebooks/author/33399?sort_order=rele...](http://www.gutenberg.org/ebooks/author/33399?sort_order=release_date)

(PS: does 33399 have some relevance to PKD? Paranoia seems relevant!)

<comment><USER13> Standard Ebooks has a nice PD edition of those: [https://standardebooks.org/ebooks/philip-k-dick/short- fictio...](https://standardebooks.org/ebooks/philip-k-dick/short-fiction)

</comment></comment></comment></comment><comment><USER14> Man thats a throwback!

<comment><USER9> what's new is the subscription version in high definition. it's 10x better than it was...

<comment><USER2> No, it's 1.0e+10 better! ;)

At one point I though you'd completely changed the algorithm and put in a new rendering engine or something, because it started doing stuff like I'd never seen it do anything like before.

But it kept on doing even more stuff like I'd never seen it do anything like before, so I asked you about it, and you said no you hadn't rewritten it, and what it looks like is out of your hands and no longer under your control at this point.

<comment><USER9> thanks don!

</comment></comment></comment></comment><comment><USER15> If you want make Fractal Flames (which is the algorithm that makes Electric Sheep videos) try apophysis7x

This is a windows tool that works sufficiently well with wine. [https://sourceforge.net/projects/apophysis7x/](https://sourceforge.net/projects/apophysis7x/)

</comment><comment><USER16> I love it, but I hate the registration options and I do not want to pay $$ for this.

Maybe I'd be happier if there were a 'mine bitcoin' option instead?

</comment><comment><USER17> I like the name, but...do the computers _care_ about the sheep?

</comment><comment><USER18> I needed to run automake --install-missing

</comment><comment><USER19> So it's a screensaver, with voting?

<comment><USER2> And sheep shagging!

<comment><USER18> Are you the same Don Hopkins who ported SimCity?

<comment><USER2> Yep. Spot and I hung out together at CMU, when he was working with Andy Witkin doing amazing graphics stuff, and I was working with Brad Myers doing Lisp user interface stuff. That was when I finally bit the bullet and learned X-Windows so I could hate it better, and started porting SimCity from NeWS to TCL/Tk. (The unix-haters X-Windows chapter was the result of that.)

[https://www.cmu.edu/homepage/creativity/2012/winter/spot- on....](https://www.cmu.edu/homepage/creativity/2012/winter/spot-on.shtml)

[https://www.cs.cmu.edu/~aw/people.html](https://www.cs.cmu.edu/~aw/people.html)

[http://www.donhopkins.com/drupal/node/69](http://www.donhopkins.com/drupal/node/69)

[http://www.art.net/~hopkins/Don/unix- haters/x-windows/disast...](http://www.art.net/~hopkins/Don/unix- haters/x-windows/disaster.html)</comment></comment></comment></comment>


Design of machine intelligence must read - <AUTHOR>

Design of machine intelligence must read
[1 paradox]Why 0.999... is not equal to 1?
Written in 2012
The current mathematic theory tells us, 1>0.9, 1>0.99, 1>0.999, ..., but at last it says 1=0.999..., a negation of itself (Proof 0.999... =1: 1/9=0.111..., 1/9x9=1, 0.111...x9=0.999..., so 1=0.999...). So it is totally a paradox, name it as 【1 paradox】. You see this is a mathematic problem at first, actually it is a philosophic problem. Then we can resolve it. Because math is a incomplete theory, only philosophy could be a complete one. The answer is that 0.999... is not equal to 1. Because of these reasons:
1. The infinite world and finite world.
We live in one world but made up of two parts: the infinite part and the finite part. But we develop our mathematic system based on the finite part, because we never entered into the infinite part. Your attention, God is in it.
......
相关阅读 ★概率论:完全可能性的理论与现实图景 ★悖论问题的统一解 ★从延安文艺座谈会到人类社会的未来 ★发现号航天飞机——自然算法伟大的飞矢变换 ★星际争霸1的AI设计思路:以人族开局为例 ★诸神之战在星际争霸1的实现[001]AI游戏的发端
More info, two other download points(written in Chinese): (1)speedyshare.com/DQz9y/AiforSC.rar (2)filerio.in/kw4cl2l2y3qi <comment><AUTHOR> [http://devsbuild.it/forum/industry-discussion/general- develo...](http://devsbuild.it/forum/industry-discussion/general-development- debate/4498)</comment>


Why Rent or Buy, When You Can Rasterize. - <AUTHOR> http://typophile.com/node/64534

<comment><USER2> > If you think for a moment how exactly non-standard fonts are used in the web > design, it will immediately make perfect sense. They are used sparingly for > headers, menus and such and they are always rasterized.

Non-standard fonts are used sparingly precisely because they have to be rasterized.

<comment><USER3> You took it out of the context.

He is talking about the state of affairs and how that creates an immediate opportunity for type designers willing to sell rasterized versions of their fonts, not suggesting an alternative to the @font-face support.

<comment><USER2> > here is an idea that can be easily implemented right now and that will cover > the 100% of the web design community needs.

</comment></comment></comment><comment><USER4> There seem to be a lot of complaints about the fact that images of text break accessibility. That is completely untrue, as long as the designer also includes alt text. I use a text-based web browser from time to time, and I've found that most designers do a good job of this.

This also doesn't break resizing any more than any other design element on the page would. Try going to any blog and resizing; the layout breaks. That's just how it goes if you want a page that looks nice. (Even HN doesn't resize nicely, and it doesn't use any images at all.)

So basically, this is a non-issue for 98% of the users. For the 1% of the users that use w3m without images enabled, they can still read all of the text. The 1% of users that are blind, can still have all the text read to them by the screen reader.

Sometimes I think people make these arguments because other people have made the same arguments for years. It's like a disease....

</comment><comment><USER5> personally, i'll stay w/ typekit. the commenter (on typophile) who raised issue with images not being 100% accessible has a real point: now that i can use non-standard fonts in a standard way, ill take scalable text over an image.

</comment><comment><USER6> is this what they are talking about? <http://skrrl.org/font>

</comment><comment><AUTHOR> Startup idea, anyone ?

<comment><USER7> The idea is OK, but one needs to have connections in typographic community to execute it. Going foundry by foundry and convincing them to take their heads out of DRM hole and consider simpler, unsexy options such as this one. This can translate into a lot of effort.

<comment><USER4> If you are allowed to buy a font to make images for your website, why wouldn't you be allowed to sell those images to others? Professional web designers do it all the time.

(Video rentals are similar. First sale, and all that.)

</comment></comment></comment><comment><USER8> Stupid idea. That's what's already done _today_ and it's not good enough: doesn't reflow, doesn't zoom properly, does not work for dynamic texts (eh buddy, ever heard of FUCKING BLOGS?), isn't that great for accessibility, SUCKS a lot for the mobile web, and so on and so forth. Why, oh why do I have to state the fucking obvious here?

<comment><USER9> Skip the profanity and you have a cogent argument in there somewhere.

</comment></comment><comment><USER10> Great concept, but who needs a service? This should just be an open source plugin. I dump all of my local fonts into a folder and then just <%= render_text "Hello World", :typeface => "Comic Sans", :height => "400" %> \-- add a cache and this would be splendid.

PS. By "local fonts" I mean [http://thepiratebay.org/torrent/4475069/Font_Collection_(65_...](http://thepiratebay.org/torrent/4475069/Font_Collection_\(65_000__fonts\))

<comment><USER7> I wish I could downvote you for a sheer ignorance.

> who needs a service ?

Foundries do. You know, the people who actually _make_ your "local fonts". Also those who recognize what a complex task the type design is and want to compensate them for their work.

<comment><USER10> Yeah, okay, well if you still cling to the antiquated concept of IP then I won't downvote you for sheer ignorance.

<comment><USER11> Listen, we don't much tolerate hostile assholes around here - so if you're just going to hurl insults at other members of this community from the comfort of your chair, then please do us all a favour and GTFO.

To address your rather poorly communicated point though: the concept of IP isn't going to disappear, especially not overnight. To pretend that we don't need to find solutions around the IP minefield is unwise at best.

<comment><USER12> I didn't think he acted like a hostile asshole. That comment about sheer ignorance had already been made to him, he was just handing it back.</comment></comment></comment></comment></comment>


Ask HN: What skills should an aspiring web developer focus on? - J-dawg

I'm an aspiring web developer looking for my first role. I keep finding junior roles which are low paid yet have very long lists of required skills, and I often fulfill no more than ~50% of the requirements. As a result, I find myself running around like a headless chicken trying to learn everything, dabbling with different languages and frameworks and doing endless tutorials. This approach is just getting me frustrated and depressed, as nothing seems to stick. What approaches should I try when it comes to learning new things? Seeing as it's impossible to learn everything, how do I pick which skills (languages, frameworks etc) to focus on?
Here's an example taken straight from an ad for a job paying £18,000 per year. (This is a fairly low salary for the UK, it's about 1.5x the minimum wage).
•Proficient use of HTML5, CSS3, Javascript, Photoshop •Sound knowledge of JQuery, Ajax and PHP and cross browser requirements •Proven responsive web design and progressive enhancement techniques •Experience of working with tabular HTML emails and deployment platforms
•Working knowledge of Flash, After Effects, Edge or HTML 5 animation
•Comfortable with CMS platforms including Wordpress / Drupal / Umbraco etc •Keen interest in the application of new trends and software developments
•Attention to detail and the ability to QA own work
•Ability to multi-task and prioritise
•Excellent communication skills •Team player - cross departmental teamwork required
They seem to be asking for an awful lot for £18k - an experienced Javascript and PHP developer, who also knows Photoshop, Flash and 3 different CMSs. I feel like it would take months to aquire all of these skills, are they really expecting a candidate to have all of them? If not, which ones should I concentrate on? <comment><AUTHOR> A common phrase my colleagues often hear out of me goes something like this: "The two greatest works of 21st century fiction are technical job descriptions and the resumes that were written to match those descriptions." A high percentage of the time they aren't looking for all of those skills at all, and sometimes none of those skills at all. They just hope that description will attract resumes. They have cast a wide net and are looking to see what they will catch.

I put out an "intern" level job description about 5 years ago now. At first I put down the bare minimum skills we needed. We were not only willing to train but expected we would have to, so the description was little more than "Good personality", "desire to learn to develop software", "can type", things like that. We got zero response. So I added in more and more things until I had a wide enough net to get the right person. We hired a person who had two years of school under his belt and hadn't worked in a professional development position at all. He had no idea how to develop and was scared to death that he didn't have the skills we needed! We convinced him it would be fine and we would train him. He did a lot of learning on his own after he took the job and we did a lot of helping him with training. He didn't make much but he learned a lot. Fast forward 5 years and now he's quite an adept engineer and works consulting in the DevOps area of things, doing exceptionally well (better than many of the people who trained him!).

A few take aways for you: First, don't try to learn everything in a job description before going in for an interview. You might find that they don't really want all of that stuff anyway.

Second, if you want to know the best skill you can work on as a Web Developer it is simply your personal and speech skills. I hired that guy above because he was nice to talk to, easy for the team to get along with, and honest. He was also obviously smart but definitely new in his skills. His personality got him the job.

Finally, as for actual technical skills, HTML, CSS, and Javascript in general will get you through most of the "technical" questions in a junior interview. Keep up on those and you'll do fantastic.

Edit: I obviously can't type today. Fixed some of the many typos.

<comment> J-dawg Thanks for your post, I found it encouraging. I still don't quite understand the logic behind posting intimidating-looking job ads. It seems the likely outcome is scaring away the "shy but potentially good" candidates like the guy in your example, while favouring self-confident types who are able to talk up their skills and blag their way through. Maybe this is even deliberate?

Your post has given me some hope. I'd love to find a role like the one in your example.

<comment><AUTHOR> Again, one of the biggest problems I had was when I didn't add enough things to the job description, people didn't apply. I think people are just conditioned to look for lists of skills. The entire job hunt is currently a mess in this business.

I did, and still do, have to "weed out" a lot of the horrible candidates. A lot of people can talk up their skills and brag through an interview and you have to be quite careful.

If I can help you further in finding your first gig, I would be glad to. Feel free to kick me an email at my HN username at that giant Google owned email service ;) you'll find something great! Keep your chin up and you'll make it.

</comment></comment></comment><comment><USER2> All the answers that the other guys provide is awesome, but let me give you an answer from the other side of the pond...

There is just one skill you need:

The ability to persevere and actually build something that other people can/will use.

Once you're there (like really really there), you won't need some role where they paint a rosy picture but you end up doing WordPress hacks for a living (although to me personally, I'd never overlook any type of work that puts food on the table).

Also, you'll become more confident in yourself and end up doing things like 12 startups in 12 months [1].

Truth be told, if I had to run a survey on HN right now and ask just one question: "How many of you are coming to HN everyday hoping to be inspired but haven't written one line of production-code for some idea you have?"

I will get at least 40 "Yes" answers. Take that answer and multiply it for bigger communities, because while we're all reading about awesome Growth Hacks or that 1 guy who builds cool side-projects, the rest of us are doing jack.

[1]: [http://www.wired.com/2014/08/12-startups- in-12-months/](http://www.wired.com/2014/08/12-startups-in-12-months/)

</comment><comment><USER3> They're not expecting a professional with all of that. They probably don't know what they're asking and just copied and pasted acronyms from another job openings.

You should be skeptical with jobs requiring both coding skills and artistic ones. Photoshop is a nice tool, but hardly a requirement for a web developer. Same for Flash nowadays.

Focus on core web technologies: HTTP, HTML, CSS and Javascript for browsers. These will give you strong background to understand more technologies and tools.

<comment><USER4> If you're doing frontend work, then Photoshop will almost certainly be used at some point, so it'd be useful to have at least some working knowledge of it (i.e. slicing, picking colours etc).</comment></comment>


Ask HN: Which industries have most people have never heard of? - <AUTHOR> What are examples of industries and companies that do exist, and that most people have never heard of?
One example is to open one's wallet and look at the back of the cards. Odds are, at least one of them will say "Gemalto," which is the largest SIM card manufacturer and has about 50% of the world market for banking cards. Most people don't know that this is a several billion dollar industry.
What are other examples?
Idea for this thread came from https://news.ycombinator.com/item?id=23534319 <comment><USER2> That's a great question; I suspect that there are quite a few pretty big $ software firms doing vertical market software enterprise apps for specific types of enterprises/entities with unusual requirements who are happy that few know how successful they may be. Are there dominant software providers for any of the following (bigger than mom-and-pop businesses, with many organizations in the industry): 1\. Large construction projects 2\. Paper mills 3\. Motion picture production 4\. Oil and gas drilling 5\. Cattle ranches 6\. Local property tax assessment and collection 7\. Traffic ticket and traffic court management 8\. Water works and/or Sewer plant management 9\. Prison management 10\. Automobile junkyards 11\. Parking lots and parking structures 12\. Independent bookstores 13\. Rental property management 14\. Exercise clubs 15\. School districts 16\. Churches ???

Somebody spill the beans, please.

<comment><USER3> My favourite one is a CMS, which stands for Crematorium Management System.

<comment><USER4> Most of the funeral industry has been bought out by private equity interestingly. A single firm, Providence Equity, now controls most of the "Death Care" industry in the US. Also yes that is the official term.

[https://provequity.com](https://provequity.com)

</comment></comment></comment><comment><USER5> Overhead cranes.

They move everything in the supply chain. From raw material and resource extraction, to ports, to manufacturing facilities and paper plants, and even standing up rockets for NASA and SpaceX.

Every time I tell people I work for a crane company, they think cranes that build buildings, which are totally not our industry.

</comment><comment><USER6> Possibly not what you're after, but I recently found out about Ambergris ([https://en.wikipedia.org/wiki/Ambergris)and](https://en.wikipedia.org/wiki/Ambergris\)and) gather there's a fair few other substances prized and explicitly collected by fragrance companies.

</comment><comment><USER7> There's an unassuming building down the road from me that looks almost deserted. Little do people know a big chunk of the worlds physical currency is printed there.

[https://www.cranecurrency.com/contact/](https://www.cranecurrency.com/contact/)

</comment><comment><USER8> Molex.

They make connectors, interconnects, cabling, and switches for everything from cars to aircraft to computers to smartphones.

</comment><comment><USER9> Ykk for zippers, though they got noticed a few years ago but the interwebs.

</comment><comment><USER10> Taiwan Semiconductor Manufacturing Company, the largest semiconductor company in the world. Apple, AMD, Intel, Nvidia etc are all its customers.

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

<comment><USER11> I think this is pretty well known. But I'd say most regular people haven't heard of ASML, which apparently produces the equipment used by all these fabs.

<comment><USER12> If we are listing companies like ASML might as well also name drop companies like KLA-tencore, Tokyo Electron Limited, lambda research. List goes on and on. These companies are actually of strategic importance as semiconductors are of strategic importance to many countries.

What is more surprising to me that some of the more commonly known brands are also semi equipment manufacturers. For example, although ASML has a virtual monopoly (a real monopoly on anything beyond n10 I think) their main competition are Nikon and cannon. Especially on the mature nodes.

</comment></comment></comment><comment><USER10> From the original discussion, steel is a great example: [https://news.ycombinator.com/item?id=23534663](https://news.ycombinator.com/item?id=23534663)

</comment><comment><USER13> Electromagnetic compatibility - every company that manufactures any kind of electronics has to deal with it but the circle of people who do it is comparatively very small.

</comment><comment><USER14> It's probably not a billion dollar business, but inMusic has a strangehold on cheap/budget MIDI gear (Alesis, Akai, M-Audio, Numark).

</comment><comment><USER15> Patio11's Law: The software economy is bigger than you think, even when you take into account Patio11's Law.

</comment><comment><USER16> I think ASML makes the chips for companies that design them (like NVDA).</comment>


Make a Doom level, part 2: design - <AUTHOR> http://eev.ee/blog/2015/12/30/you-should-make-a-doom-level-part-2/ <comment><USER2> Even if building for Doom may look outdated, this article has very solid insight at the start about level design that can be applied to any physical game.

The idea to look at levels as works of art, and design them using the same principles is a nice one. This brings a lot of artsy theory baggage (regarding storytelling, layout and aesthetics). I hand't thought applying those to the assessment of a game level before, not explicitly.

<comment><USER3> I haven't played Doom 2 much, so the following comment is only regarding Doom 1.

I've always found the level design of both Marathon [0] and Dark Forces [1] much better compared to Doom 1. Both games had levels which in my opinion gave the player much better feel that they're in environments that could be real.

Both games were released around the same time as Doom 2. I only played a little Doom 2, because it bored me for containing so little story.

\---

[0]: [https://en.wikipedia.org/wiki/Marathon_(video_game)](https://en.wikipedia.org/wiki/Marathon_\(video_game\))

[1]: [https://en.wikipedia.org/wiki/Star_Wars:_Dark_Forces](https://en.wikipedia.org/wiki/Star_Wars:_Dark_Forces)

<comment><USER4> Looking for Dark Forces custom levels was my gateway drug to the QMODEM, BBS, and news groups back in 1995. Similar to Doom's wad files, dark forces had gobs. Eventually a dos base editor, DFUSE, was released, but I remember one level creator (dons3d, I think) that came out with a level created without any gui based tools. He plotted out all the X, Y, Z coordinates for the vertices, calculated texture stitching offets, enemy locations, etc by hand. It was amazing. Just the act of adding a door that slid open involved a special scripting language, coordinate geometries, texture lining, etc.

That man was my hero. I learned so many technical and spacial skills by trying and failing to make a good custom dark forces level.

Good times.

</comment></comment></comment><comment><USER5> An odd, but very enjoyable and in depth commentary of the DOOM modding community and DOOM in general is done by Liz Ryerson in her "DOOM mixtape" series. I think the later tapes are more interesting, but feel free to skip around.

[https://www.youtube.com/watch?v=zJDeaa7aXQ8&index=1&list=PLE...](https://www.youtube.com/watch?v=zJDeaa7aXQ8&index=1&list=PLEdRlER1F5rF1YMwLG66KPmMuv0h2OWiU)

</comment><comment><USER6> Doom2 levels are awesome. Far better than Doom 1's in my opinion. So, if you want to play Doom, I recommend Doom2.

<comment><USER7> I highly recommend the "Whispers of Satan" add-on campaign [0], played through a modern source port like Zandronum [1]. Beautiful level design [2]. Good difficulty curve. Clever secrets. Just a great overall set that uses the DooMII engine/monsters to maximum effect.

[0] [http://www.paulcorfiatis.com/wos/HTML/wos_index.htm](http://www.paulcorfiatis.com/wos/HTML/wos_index.htm)

[1] [http://zandronum.com/](http://zandronum.com/)

[2] [http://www.paulcorfiatis.com/wos/HTML/wos_screens2.htm](http://www.paulcorfiatis.com/wos/HTML/wos_screens2.htm)

<comment><USER6> Awesome, thanks.

</comment></comment></comment><comment><USER8> FreeDoom is nice too, and it works for ANY doom2 wad, even for the GZdoom ones.

Oh, and for hardcore GNU folks, Gloome has no propietary code, it loads freeDoom and/or brutal doom and any GZDoom game.</comment>


Ask HN: How do I find and recruit the talented, ambitious, bright and young? - <AUTHOR>

I am an HR manager for a large west coast firm.  I'd like to find a way to effectively recruit those who are talented, ambitious, bright and young and place them in to our executive/manager career tracks.  However, even though we post on job boards and our own website, the quality of the candidates is underwhelming.
Moreover, just looking at a resume doesn't tell me the mindset and motivation of the person.  While I can usually grasp what kind of skills a person may bring to the job, I have a hard time deducing the soft skills like attitude, communication, and teamwork one has.
Therefore, it is tough to know beforehand whether the person will work out as hoped and if we should invest our time and effort into bringing on a person who we know so little about.
The problem is that the interview process is a highly artificial and IMHO flawed way to assess a candidate from both the POV of the employer and candidate.
Do you know of any better way to find and employ the best candidates out there? <comment><USER2>
      Young?

So you're saying you intend to practice age discrimination? Well, as a Libertarian I think you have the right to do so if you want, but I think you should ask yourself if it's really a good idea or not.

Maybe just going for "talented, ambitious and bright" would be good enough? Actually, Donny Deutsch said something in his book ( [http://www.amazon.com/Often-Wrong-Never-Doubt- Business/dp/00...](http://www.amazon.com/Often-Wrong-Never-Doubt- Business/dp/006056718X) ) about how the thing to do is hire older (30+) folks who "haven't done anything yet" and are hungry to prove themselves, given an opportunity. I personally think there's a lot to be said for that approach... but what would I know, I'm an old fart (37 in a week). :-)

</comment><comment><USER3> Honestly, the answer is to recruit FOR a company that is interesting and engaging that those people are clamoring to come work for you. Look at Google and 37Signals. The best and brightest aren't interested in working for some no name company that is doing boring things. Yes, you will still have to cut through the lame people, which is a skill in itself, but you have zero chance of getting the best and brightest if you're not interesting to them.

<comment><USER4> Yes. Yes. Yes. You can't expect great people to work for you unless you're a great place to work.

</comment></comment><comment><USER4> If you're looking for really great minds, you ought to expect the quality of _most_ of the candidates you run into to be underwhelming. The trick is getting past that.

I kind of agree with your comment on resumes, but I'd twist it... If a resume doesn't tell me the mindset and motivation of the person, it's a 'No'. In specific, I tend to look for two things on a resume for someone early in their career:

1\. Passion & Personality, _somewhere_. The last great resume I got had the following objective: "I want to work with smart people on a great team making awesome software." Perfect. Any resume that uses the words great, awesome, love, or even hate gets my attention. I need someone who cares.

2\. Demonstrated interest. It's unbelievable how many people will tell me they love writing software, but they've never written any that wasn't for an assignment or a work project. Especially when it comes to young people, they better have written something. I don't care what it was, or how well it went.. I want to see that they're interested enough to have materialized passion and enthusiasm as a project. If you're not hiring in the software field, I'm sure there are other facets.. evidence of attempts at entrepreneurship, demonstrated leadership in community activities, etc.

Suuuper fast litmus tests that can be done at the resume, or 10-minute-phone- screen level.. and they'll weed out a depressingly large number of candidates.

Beyond that, I'd suggest that interview processes vary wildly and it's possible (no offense) that yours is highly artificial.. doesn't mean they all are. Change your process. Specifically, find ways to get candidates to demonstrate Doing The Job in their interview. It's hard, but it sounds like it's your full time job, so sweet! You ought to have the time :)

For the record, the resume I mentioned was someone that we hope to hire.. and we found him via one of the HN: Who's Hiring threads - <http://news.ycombinator.com/item?id=1438505>

Cheers.

</comment><comment><USER5> Sorry but I have to call you out. In a recent post, you said:

 _I've been browsing job boards and I come across time and again a requirement for a college degree to land the position. Yet when I read the description of what the employer wants of its employee it is not clear that one (the degree) has anything to do with the other (the job)._

Yet as an HR manager yourself, you essentially say, anyone over 30 need not apply. I just don't get it - how do you reconcile criticizing others for asking for a college degree ( _possibly_ irrelevant) all the while placing a requirement on youth (unethical, and downright illegal)?

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

I am not ranting by the way, I really just can't get my mind around the two posts being made by the same person. Can you explain?

</comment><comment><USER6> How about instead of using the resume / cover letter combination you ask a series of interesting questions similar to the YCombinator application?

This will 1) weed out all of the people who spend minimal effort on a job app and just spam their resume / cover letter everywhere, and 2) will give you answers to questions you actually care about. The more unique/interesting the questions the more unique/interesting candidates it will attract. UChicago used this method in their "uncommon application" to attract a class of really smart, unusual people who were passionate about learning.

I haven't had a chance to use this method though ( I just thought of it recently), so I make no guarantees. Good luck!

<comment><USER7> Yeah, I was going to say something like this as well. Make it challenging to apply.

</comment></comment><comment><USER8> I'm on the west coast and I see a wide range of talent at events that I go to. I primarily go to events in tech and entrepreneurial related topics like docstoc events, marketing/seo talks, lean startup, etc. I'm looking to network and meet people I can possible partner up with for future projects. I usually get to know the person and get some references after i've met them but it beats having to read a resume and read through the BS. I've met some great companies and people so far and references are always rock solid when I ask for help through these people.

</comment><comment><USER9> Look at what they've done. A portfolio, a (completed) project, a (completed) website can say a lot about their attitude and approach to things.

I'd say for someone to really fit your bill (talented/ambitious), they would have to have some tangible deliverable accomplishments somewhere. Not just talk, grades, etc.

Look for what they've done in their community. If they're young (i.e. from college) those that excel at communication are usually pretty engaged in the community and have held some leadership positions. Resident Life? Coaching? TA?

</comment><comment><USER10> Be where they are. Discuss with them. Exchange code with them. When you find the best, the ones you're interested in hiring, ask them to come work for you. I've hired a dozen excellent people to my department in the past couple of years. Only half of them have applied on their own without any prior interaction.

</comment><comment><USER11> Internship!</comment>


Lumi – A new way to find things that interest you - <AUTHOR> https://lumi.do/

<comment><USER2> It's an interesting idea, but you've pushed the privacy vs convenience line too far for me. No way I'm going to give a 3rd party app access to my browser history.

</comment><comment><USER3> You will get much better feedback if you can show it off without requiring registration.

</comment><comment><USER4> Would be nice to have a tour to give your potential users an idea about what it actually is before requiring a signup.

</comment><comment><USER5> "[sign up with twitter] or sign up with email". I choose twitter, authorize, then it drops me to creating an account with email.

</comment><comment><USER6> Nice, I created an account with my email, then it asks me to install a browser plugin, which I don't want to do at this time. It says it "works best when you add the extension to your browser" but gives me no option to skip. I don't feel comfortable installing a plugin without getting to know the service a bit better, so I guess I will pass for now.

</comment><comment><USER7> FYI: after creating an account they will ask you to install a browser plugin - that's how it works.

<comment><USER8> and that's why I abandoned it immediately.

</comment></comment><comment><USER9> It is a bit much to upload your browsing history and install a plugin. I just went through all of that and gave the service a try. So far I've found at least a handful of articles that I enjoyed reading that I may not have found otherwise.

I suppose it's worth it if they're not doing anything nasty with my data. I'd like to think that the Last.fm guy isn't up to any dirty tricks with Lumi... if you're skeptical about privacy concerns, this may not be for you, but I'm enjoying it so far. Also, I'm a former web news editor and still have a serious jones for news, so this was a perfect fit for me.

</comment><comment><USER10> Lame. Asks for twitter account AND to install a chrome extension? And it doesn't let you continue unless you do that? And it has some 1990s style polling mechanism /install?retry=1 ?? Beh.

</comment><comment><USER11> When you are on the browser, you can do a lot more with that context. Try [http://pugmarks.me](http://pugmarks.me) \- done by ex-Google News engineers.

It gives you related news when you visit a LinkedIn profile, related articles for anything - works especially well for long shelf life content. Next, your New Tab is converted into a mirror of your recent interests, where experts on the topic you are reading are shown.

</comment><comment><USER12> That looked interesting, but I don't have a Twitter account. Oh well, another service that doesn't serve most of the Internet. =/

<comment><USER13> You can signup with an email address too.

</comment></comment><comment><USER14> I decided to try it out. That Mac OS installation video is wonderfully clever.

I was weary of giving Lumi access to my browsing history, but then I remembered how many companies already have access to it.

It's still not done processing my browsing history, so I have no idea if it works.

<comment><USER15> I think you mean wary, not weary (unless you're fatigued from giving access to your browsing history)

</comment></comment><comment><USER16> Really slick design. I'm guessing most regular folks won't think that hard about sharing their browsing history; if you expect privacy on the internet, you're being silly. And if you put a big juicy button on a pretty page, most folks will click it.

</comment><comment><AUTHOR> A friend just launched Lumi, "A new and easy way to find things that interest you", and thought it would be nice to send some HN traffic/ feedback. Any and all ideas welcome!

<comment><USER17> It should be noted that said friend is a founder of Last.fm.

[http://techcrunch.com/2013/07/11/last-fm-founders-throw- the-...](http://techcrunch.com/2013/07/11/last-fm-founders-throw-the-lights- on-lumi-a-site-that-uses-your-browsing-history-to-recommend-new-content/)

<comment><USER18> If it's anything like Last.fm, it should be really good at recommending super popular sites that the user already knows about and does not use.

</comment></comment></comment><comment><USER19> uploading your browser history.. Fuck

</comment><comment><USER20> This is not fair!! You must ask for permission if I want to share my browsing history or not! WTF!</comment>


Twitter rolling out reply-limiting feature to all users - <AUTHOR> https://www.theverge.com/2020/8/11/21362514/twitter-reply-limiting-features-all-users-harassment-rollout-available-now <comment><USER2> This will presumably pair with their anticipated rollout of a subscription service, if/when that happens.</comment>