Show HN: Skov – A visual programming environment - nicolas-p http://skov.software/en/ <comment><AUTHOR> This is coming close to the way I envision we'll be programming in the future.

This goes from traditional 1-dimensional text-based programming to 2-dimensional visual programming.

What I envision is a 3-dimensional augmented-reality programming language where program elements will be floating around in 3d space around us and we use an augmented-reality interface to interact with them.

It'll also enable us to do IoT programming in a very literal sense.

For example if you look at an air conditioner, light switch, or some other network-connected appliance that's in front of you in the real world then the augmented-reality display will overlay the interface exposed by that device.

Let's say that you're looking at your phone (not the screen but the actual object). Since this is a device with a GPS chip your AR interface will indicate that you can do location-based programming with it.

Then you create the equivalent of an if-condition specifying a 10m radius around your current location.

if (phone is within 10m of current location) {

}

Now you look at a lightbulb in the room and your interface shows you that the lightbulb has a method for turning on.

You draw a line from the then-branch of the if condition to the light bulb.

You've created a program that turns on the light bulb in your room whenever you're within 10m of this room.

<comment><USER2> I've been using Unreal Bluescript since past few months. It's probably as practical and large scale as any visual programming system ever have been designed. There are many good things about it, for example, it "compiles" instantly. There is even some visual debugging. You can change a variable name and it gets refactored automatically. It gives you definitive errors right away instead of waiting for compilation. It has nice abstraction of subroutine and macros.

However, I have to disagree that visual programming will actually become more mainstream than programming mechanism for less savvy users. As soon as Blueprints gets bigger (equivalent to may be 200 lines of code), it becomes absolutely unwieldy. You will find yourself clicking all over places all day long. It becomes very hard to parse giant graphs. It becomes hard to keep layout of what is where. It simply doesn't scale. Compare this to even lousy speed of typing 40 WPM, ability to write 1000s of lines of code and be perfectly at peace with everything. Ability to quickly copy paste, refactor, move around by blazing fast keyboard navigation as opposed to just two buttons on mouse.

I was using Hololens other day and created bunch of objects around my room. It became overwhelming just after dozen of objects around me and my hands were getting tired by expensive gesturing all over place. A code that would fit in to 13" display probably takes significant portion of 3D space because each "if()", "while()" etc must be represented by space consuming graphic objects and forest of connections between them. Humans are good at absorbing small graph but as soon as nodes and connections starts climbing they become frustrated. This is why small toy examples look good in visual programming but no one seems to write 10,000 lines of code in those systems.

So keep your expectations accordingly. Visual programming is good for people who don't want to be full time developer but whose job entails them writing may be 100 lines of code every other week.

<comment><AUTHOR> So I think programming will eventually become a tool used by everyone rather than something for only for programmers and other tech-savvy individuals. It'll be something that everyone uses the same way basic arithmetic is a tool that everyone uses these days. These days programming is reserved for the few because in order to program you have to learn a language with very specific grammar and the level of abstraction is still quite low. The underlying operations being expressed by current languages are not themselves intuitively hard to understand but the average person is prevented from doing so because of the language barrier. The level of abstraction that the average programmer is working with is moving continuously higher. In the past there was a time when the average programmer was working at the level of assembly language but today the average programmer is working at much higher levels of abstraction. There are obvious disadvantages to current visual programming systems as you've described but it may be the case that we just haven't developed the right abstractions and interfaces that work best for visual programming.

<comment><USER3> I doubt that will happen.

There is a distinction between incidental complexity - complex tools and languages - and inherent complexity - the problem itself, it's domain and the emergent properties of it all combined with a Turing complete machine.

You can't really do much to reduce the inherent complexity, and even professional programmers are struggling with the inherent complexity in all but the smallest problems.

Some programmers are even struggling more than others which suggests to me that programmers need to be a bit above average IQ to be efficient, and it might even be a lower limit were nothing useful happens at all.

What could potentially happen is that we could invent AI agents that could help us tackle some of the inherent complexities, and maybe non professionals could string together intents that will be interpreted by AI, but that won't happen soon.

Edit:

The insights about incidental and inherent complexity is not mine. They were popularised in the great book The Mythical Man-Month by Fred Brook that have many insights that are applicable to software development in general apart from those insights that are applicable to writing large operative systems.

As the book is 40+ years old and the follow-up essay "There is no silver bullet" \- that expand on the complexity topic - is 30 years old, there is little reason that we are still trying to invent the silver bullet.

I guess it could even be described as a failure of the educational systems, because I'm sure there is a lot research in information theory that have been done or at least should have been done, that touches these topics.

<comment><AUTHOR> In many cases what differentiates a programmer who is better at dealing with inherent complexity than another has a lot to do with the ability to apply the right patterns, tools, or strategies under the right circumstances.

This ability is largely influenced by having been exposed to similar problems in the past and having applied various strategies to solve those problems. One reason why a lot of programmers struggle is because our current educational systems do not expose students to computational thinking at an early age. They've simply not have had enough exposure to that kind of thinking.

Even though computational thinking draws on computer science as a formal discipline the insights are applicable to various other domains and virtually everyone will benefit if they're able to apply the same kind of thinking to other problems in their personal and professional lives. Without having to solve any problems specific to computer science people can still acquire the ability to effectively apply computational thinking by solving other problems in their lives because the inherent complexities of those other problems are going to have some similarities to the inherent complexities in designing software systems.

Now some people may already have highly developed computational thinking abilities without ever having touched a computer because intuitively they've understood how to solve analogous problems in a different domain. Such people may be far better at dealing with inherent complexity than some or most professional programmers but they could never apply those abilities in this domain due to the barrier to entry posed by the incidental complexity associated with the tools and languages.

A friend of mine, a physicist, is an example of the above. Her approach to dealing with complex problems is already far better than many developers I know, but she wouldn't be a good programmer simply because she doesn't understand the tools. However, if she were to invest significant time to understand the tools then she'd be a better developer than most. Not only that, if she had familiarity with the tools then her already developed computational thinking skills would mature much further. If she were to have access to tools that allowed her to apply her ability to deal with complexity without getting in her way then that would be the ideal outcome. What I'm trying to say is that we are a very long way away from minimizing the incidental complexities introduced by our tools and languages.

EDIT: Sal Khan gave a relevant Ted talk on the limitations of our educational systems: [https://www.youtube.com/watch?v=-MTRxRO5SRA](https://www.youtube.com/watch?v=-MTRxRO5SRA)

He mentions that if you were to ask a literate individual in a past society with a 10 percent literacy rate what would be the maximum possible literacy rate they would've said something like 20 percent (80 percent of the population is incapable of overcoming the inherent complexity associated with gaining literacy). But our educational systems have progressed far enough to achieve a 99 percent literacy rate, which would've been impossible for someone in a society with 10 percent literacy to even consider as a possibility. Our estimates of where the boundary between incidental and inherent complexity lies is generally going to be strongly biased.

<comment><USER3> I wholeheartedly agree to almost everything you say and especially that everyone is probably able to learn some programming in a suitable language, just as they can learn to read and do math - and it would be good for them if it was taught well, if not because it gives you a tool for solving problems that you might not otherwise acquire. But I am certain that not all, or perhaps not even the majority, have the skills required to pursue a professional career.

I doubt however, that there is much to gain from simplifying the languages, and especially not by going the graphical programming route - it's a chimera occluding the actual problems.

Graphic programming could be used as learning tool, just like a set of training wheels, but just as them it would eventually become a hindrance as both make simple problems simple and everything else much more complex or virtually impossible.

The tools and languages can be improved of course but I do not think there will be any ground breaking improvements, just like there probably will not be any ground breaking simplifications in mathematics, or the process of learning it.

As an side note, I personally wonder why not more work have been done in incorporating first class support for entity-relation and/or graphs in languages - which is probably useful when modeling actual real world problems. But as it is still possible to build using generic language constructs, no one seems to care.

Or maybe the problem is that the educational system is so bad that too many are actually struggling to not topple over with their bicycle even after some years in university.

<comment><USER4> > Graphic programming could be used as learning tool, just like a set of > training wheels, but just as them it would eventually become a hindrance as > both make simple problems simple and everything else much more complex or > virtually impossible.

For visual languages such as Squeak, and Skov, the idea is indeed to make programming easier for people.

However, visual programming has another important raison d'être. MIMD programs algorithms are more naturally expressed as dataflow, so that task scheduling and load-balancing become almost trivial, and dataflow is more naturally expressed graphically.

Now we have multicore machines and it is difficult to make optimal use of resources with mainstream imperative programming languages.

Graphs are, as you point out, a very flexible data structure, and there ought to be something to be gained in representing programs as graphs, and having programs operate on graphs. Lisp and Prolog benefit from homoiconicity.

</comment></comment></comment></comment></comment></comment></comment><comment><USER4> It's quite impressive that you've got so far so quickly.

There are some similarities to my own Full Metal Jacket ([http://web.onetel.com/~hibou/fmj/FMJ.html](http://web.onetel.com/~hibou/fmj/FMJ.html)), which I'm still actively developing, but I suspect there are significant differences as well. So I have a few questions.

(1) Is the computation model dataflow, i.e. do vertices execute asynchronously, when all their inputs have values?

(2) If not, is Skov a visual equivalent of factor or some other textual language?

(3) Is it statically or dynamically typed?

(4) How is iteration done?

(5) Is there a lambda?

<comment> nicolas-p (1) & (2) The code is compiled using the Factor compiler so it really works like Factor (3) Dynamically typed, type errors will be caught at runtime (4) You use "while" and "until", you can see an example in the last screenshot in the web page (5) There is a lambda. There are several examples of this on the web page, including a lambda inside a lambda

<comment><USER4> It's quite different then, despite the superficial similarities.

(1) Full Metal Jacket is explicitly dataflow - that's how the interpreter works. How to compile it (and to what) is an open problem for me, but there are a number of options. I won't release it until I have a working compiler.

(2) It's not a visual version of any existing text-based language. It is implemented in Lisp, and you can mix the two languages, but it's nothing like Lisp.

(3) It's very strongly statically typed, with type inference. Type errors are prevented by the editor. Run time errors are simply unacceptable.

(4) Iteration is done two different ways: using a feedback mechanism, and using emitters and collectors.

(5) Lambdas, including non-local capture of values, are built into the language.

More information here, including papers and tutorials: [http://web.onetel.com/~hibou/fmj/FMJ.html](http://web.onetel.com/~hibou/fmj/FMJ.html)

</comment></comment></comment><comment><USER5> Back when I was studying for my degree, we used visual programming with an application called Max/MSP [1]. Having a quick glance at Skov it looks very similar although Max (and its open source brethren PureData [2]) probably has a much more mature ecosystem (it's been around for quite a long time). I believe you could even program extensions in Java that you could drop in if you needed to have a performant algorithm that wasn't supplied by the 'standard library'.

The main difference is Max and PureData are focussed around creating audio and graphics, but they're both perfectly suitable for general-purpose programming. You could even build quite complex GUIs that were just a shim over the application logic.

However, AFAIK, there wasn't a concept of 'building'/'compiling'. You had to ship your application with the full run time which required a user to make a separate install with no option for a statically built 'fat' executable.

[1] [https://cycling74.com/products/max/](https://cycling74.com/products/max/)

[2] [https://puredata.info/](https://puredata.info/)

<comment><USER6> I used Max/MSP (well, max4live) for a while and I loved it. I especially found that not having to name stuff (variables, functions etc in other languages) quite liberating when experimentally working towards a solution. Once the design solidified, I could go back and name things nicely.

I also found that while Max gets a bad rep for "literal spaghetti code" (I mean, google image search for Max/MSP and what you'll find is a mess), my code really didn't reflect this. I put it down to the fact that most users of Max are musicians and artists and not programmers who have learned basic software engineering principles like abstraction and separation of concerns and whatnot. When you compartmentalism logic into self-contained little blocks, I found the code to be super clear and actually kinda beautiful.

My main complaint with Max is that its data structures are very.. lacking. As far as I remember, you couldn't even do nested lists (or any kind of references), so things like trees and such were out. You basically had their built in types and nothing else.

I'd love to see a visual programming language very similar to Max/MSP but with better support for user-defined types/data structures, unit testing and other basic things lacking from Max but present in modern programming languages (or their tooling).

This was a few years ago though, so perhaps some of these things are now "fixed".

</comment></comment><comment><USER7> Awesome, great work! Personally I'm not a fan of "visual" because it requires too much mouse work and navigating around. I tried to tackle these challenges by coming up with the concept of a "tactile-spatial" programming language, which is foremost designed for coding from a phone/on-the-go/touch-based devices.

Here is an animated gif that shows integrated live testing while you code the phone in a rapid T9 or calculator style: [http://giphy.com/gifs/ast-tactile- gundb-l0HlRxRHUg0WpF3kk](http://giphy.com/gifs/ast-tactile- gundb-l0HlRxRHUg0WpF3kk)

</comment><comment><USER8> Nice, I like it's simplicity. I'm also working on a visual programming environment, but for building chatbots. Check it out, I bet you can get some ideas for yours.

I just released the beta: [https://talkbot.io](https://talkbot.io)

How do you avoid wires overlapping other wires on more complex "flows"?

<comment><USER9> Just a quick note:

1-minute away to get your bot alive .. maybe should be "bot live"? not sure what you intention was here, but one would use "live" more likely in this context.

"Use it, is free" should be "Use it, it is free" or "User it. It's free". English always requires a pronoun before the verb (with exception)

<comment><USER8> Thanks for feedback! Sometimes I have difficulties with english grammar, spanish is my native language.

</comment></comment></comment><comment><USER10> I think it would be hugely beneficial to allow people to code with both text and the visual interface. LabView has a graphical editor as well, for bigger projects, it would have been nice to have both formats available.

</comment><comment><USER11> Shameless plug -- something similar for Android: [http://flowgrid.org](http://flowgrid.org)

</comment><comment><USER12> I've watched Uncle Bob's talk today and one of the key messages were that software hasn't advanced much since the 50s:

[https://www.youtube.com/watch?v=ecIWPzGEbFc](https://www.youtube.com/watch?v=ecIWPzGEbFc)

Visual programming may or may not be the next big step, but I have to applaud anyone who attempts it in an OS manner. Unreal Studio for example executed it really good and the code it generates operates in god knows how many games.

</comment><comment><USER13> I applaud the attempt, and it does look nice, but my impression of visual programming environments is that they never scale, and it might be an inherent issue.

I have never met a single person that, with more than 5 minutes of time, preferes the "distance computation" as given in the skov example, to the simple mathematical (x-x) __2+(y-y) __2

Lamdu[0], which has been discussed on HN before, is more Haskellesque, and I have also not heard from anyone that it is actually useful (beyond very early Haskell teaching).

Personally, I'm at the other end (preferring the tersest practical language, K) but I understand the appeal of a visual programming language - it's just that I have never seen an example that delivers.

[0] [http://www.lamdu.org/](http://www.lamdu.org/)

<comment><USER14> K is an example of a language I can code with on my phone. Because you need only a small screen with code to see a lot of functionality and you do not need a lot of input but more thinking it works. Most modern visual programming attempts come from the drive to work on small screen without real keyboards and languages like K (APL likes) and Forth likes (like this one is based on) already work because the code is very terse and you do not have all the issues with copy/paste and scrolling like you do in most languages. I experiment quite a bit with programming while on the move (even walking) and I am close to having something which works about as well as normal coding. It takes ideas from K (oK) and different forth implementations.

<comment><USER15> What K compiler do you have in your phone?

I have the awesome J Android app[0] on my phone, but J doesn't seem as polished as K.

0: [http://code.jsoftware.com/wiki/Guides/JAndroid](http://code.jsoftware.com/wiki/Guides/JAndroid)

<comment><USER13> There's John earnest's oK on github (am on phone right now or I would link). It's a JavaScript implementation that runs everywhere.

K is not more polished, it is differently polished. It is much more minimal than J, which makes the syntax simpler and thus the shortest program is often longer and slower in K; however, in my experience typically the length and performance are on par.

</comment></comment></comment></comment><comment><USER16> I'm persistently getting an error "Skov is damaged and can't be opened". I extracted the folder from the disk image to my Desktop. I tried right- click->open with the same result (and Gatekeeper gives a different error anyway).

I'm still on El Capitan. Could that be the problem?

<comment> nicolas-p I have just tried it on my older Mac that still runs El Capitan. I downloaded the image from the website, opened it and copied the folder to the desktop. I had the same error as you ("Skov is damaged and can't be opened"). Then I went to System Preferences > Security and Confidentiality and I saw that "Allow applications downloaded from" was set to "Mac App Store and identified developers". I selected "Anywhere" and tried again: it worked. So the problem was really Gatekeeper.

<comment><USER17> Shouldn't right click and "Open" work? It doesn't work and I don't know if I want to disable gatekeeper.

<comment> nicolas-p Other people have helped me identify the cause of the problem (quarantine attribute on the app folder). I've uploaded a new dmg image. If you try to download it again it should work this time (I hope).

<comment><USER17> Doesn't work. Same problem.

But thanks for the tip about quarantine. I removed it from the folder and app with xattr and now I can start it.

</comment></comment></comment></comment></comment><comment><USER18> "Each dot is actually a plus button in disguise."

Why disguise it though? This seems like a decision to create obfuscation and make the design less-intuitive for something that is very-marginally simpler to look at.

</comment><comment><USER19> Nothing Real Shake was one of my favorite program back in the early 2Ks.

[http://community.avid.com/cfs- filesystemfile.ashx/__key/Comm...](http://community.avid.com/cfs- filesystemfile.ashx/__key/CommunityServer.Components.PostAttachments/00.00.76.92.19/GS-1.png) [http://deliveryimages.acm.org/10.1145/510000/509455/4743f2.j...](http://deliveryimages.acm.org/10.1145/510000/509455/4743f2.jpg)

That was for mainly 2D image compositing (aka 2D matrices).

If you dig earlier, you'll find SideFX Houdini (successor of PRISM) which isn't tied to a dimension, 1, 2, 3D, geometry. You swing between all these to create whatever you want. It's like interactive math and physics right before your eyes taken to an extreme (at least until 2010s). You can then lift parameters from the graph to "package" it as a user made function to have things like city generations

[https://www.youtube.com/watch?v=4QT_- Sws_nI](https://www.youtube.com/watch?v=4QT_-Sws_nI)

Loads of fun

</comment><comment><USER20> For anyone curious about the Factor language mentioned,

[http://factorcode.org/](http://factorcode.org/)

<comment><USER14> Factor is a great for playing around with. When Slava was still pushing it , it felt more alive but it is an impressive effort still.

</comment></comment><comment><USER21> This might be cool for something like Elm? :) maybe even implement it in Elm with something like the Electron project?

</comment><comment><USER22> Another powerful visual programming language is called VVVV which you can find at [https://vvvv.org/](https://vvvv.org/) I think they will be shortening it to VL with the next release. I had experimented with it back in 2011 trying to make a poor man's multi touch interface for the PC using an iPad and Touch OSC. [https://www.youtube.com/watch?v=DYEtkJSvZCk](https://www.youtube.com/watch?v=DYEtkJSvZCk) It has a pretty clean/ minimalist UI and one of the more interesting implementations of visual programming.

</comment><comment><USER23> I wonder if this visual chema will work for more complex projects where one needs to zoom in and out of scope (eg Reaktor). But the potential is excellent and even if it doesn't take off as a hardcore programming environment it will make an excellent educational tool.

</comment><comment><USER24> This is wonderful for folks who can understand concepts presented to them visually. If I had access to this as a child, I could have definitely grokked functional programming faster :)

I can only think of one major improvement - add the concept of synchronicity/asynchronousness. Perhaps a visualization to illustrate difference in function completion times or race conditions will help!

</comment><comment><USER25> Is the author Danish? I believe "Skov" means "forest" in Danish. And there's a picture of a tree on the page.

<comment> nicolas-p No, I just looked at the translations for "tree" and "forest" in many languages and I chose the one I preferred.

</comment></comment><comment><USER26> Looks great, like a visually pleasing version of Prograph.

I remember my arms starting to ache after a few days of using the mouse constantly when working with Prograph. So some keyboard shortcuts would be recommended.

[http://www.andescotia.com/examples/](http://www.andescotia.com/examples/)

</comment><comment><USER27> I don't know why I thought it would be a visual language to develop on mobile. On desktop, I don't think this is useful. I tried to teach once using Scratch, and the IDE was not the problem, but the logic and the way to think about the problem and solution.

</comment><comment><USER28> I'd expect to see something like this in the FAQ section: How is it possible to diff/merge Skov program soucre trees?

Just asking, it's definitely possible. I used to work at a CAD company, they did some dev work to do these with building models...

<comment> nicolas-p Ideally, Skov would need an integrated version control system that understands the visual code.

But now, all you can do is export your code to text files (Ctrl+S) and use traditional text-based diff/merge/version control tools.

<comment><USER4> This is the right answer, at least for visual dataflow. It should be done by diff/merge of graphs, displayed visually, _not_ by converting it into a text- based format and using something like git, Perforce, or cvs. Dataflow can be expressed textually, but you'd have a hard time following the code.

</comment></comment></comment><comment><USER29> On Windows 10 Home, the Windows version gives me

"This app can't run on your PC

To find a version for your PC, check with the software publisher."

<comment> nicolas-p I don't really know Windows 10 but apparently it's available on ARM processors. The version available on the website will only work on x86-64 processors. Could that be the reason why it doesn't work?

<comment><USER29> Don't think so, I am running 32-bit Windows on a x64-based processor.

</comment></comment></comment><comment><USER30> You've reinvented block diagrams, only badly.

</comment><comment><USER31> I quite like the digraph's organic look, the visuals are _nice_. But I don't think this is very practical, even if Factor itself seems interesting.</comment>


Bootstrap 4.5.0 - <AUTHOR> https://blog.getbootstrap.com/2020/05/12/bootstrap-4-5-0/ <comment><USER2> > Examples are now downloadable. We've added a script to zip up and offer all > our Examples as their own download from the docs.

Nice. This could become the primary documentation for a lot of folks.</comment>


Heat Emission 'Most Likely Cause' of Pioneer Anomaly - <AUTHOR> http://news.discovery.com/space/new-evidence-fingers-heat-as-culprit-for-pioneer-anomaly-110725.html

<comment><USER2> Old "news" - submitted several time in the past, the most recent being this:

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

Here are some more submissions and discussions on the topic:

[http://www.hnsearch.com/search#request/submissions&q=pio...](http://www.hnsearch.com/search#request/submissions&q=pioneer+anomaly)</comment>


Coldfusion is "Unpopular" – I don't care - <AUTHOR> https://dev.to/mikeborn/yes-coldfusion-is-unpopular-no-i-don-t-care-5f8c <comment><USER3> _> And, more important… does it matter?_

If author wants to continue using CF for his own reasons, that's fine but it's still worth knowing _why others care about popularity_ :

1) job prospects - e.g. knowing Javascript will have more relevance in job hunting than knowing Microsoft's VBScript that was used in Internet Explorer 8.

2) large community that has seen similar problems and can provide answers to copy&paste code : blog posts, tutorials, books, Google searches, StackOverflow, etc. (Relevant XKCD: [https://xkcd.com/979/](https://xkcd.com/979/))

3) large ecosystem with lots of 3rd-party libraries, open source repos, etc so one doesn't have to invent everything from scratch

4) the language is continually enhanced with the latest technical features to stay up-to-date - e.g. Delphi didn't have 64bit compiler support for a long time (~2011?) even though C++ had that ability for years. That drove away many programmers that needed to access more than 4GB of RAM.

The common theme to all those bullet points is that programmers are using "popularity" as a rough cost-benefit analysis of investing time into using it. They know programming doesn't happen in a vacuum.

<comment><USER4> OTOH, all reasons are cons... an expert in an esoteric system with none of those will be paid her weight in gold by the fewer employers in need of a very finite resource... while js programmers are a dime a dozen.

<comment><USER5> If one language is expensive, and another language is cheap which do you think employers will be building NEW software in?

I've seen people who follow the strategy you prescribe, and while they did make above market while they helped companies migrate away from [dying technology] they eventually became unemployable.

It simply isn't a good long term play, for either employee or employer.

<comment><USER6> It's a good endgame for an engineer. If you've got experience with X language and you're planning your exit from the industry.

Better yet, be the guy who can upgrade a system like that from X language to the newer one that can be maintained by the your new wave of engineers.

</comment></comment></comment></comment><comment><USER7> > "Whilst y'all dimwits call us unpopular, we're busy running the world - <USER2> > health and banking to government and Telco companies. Adobe's Evangelism Kit > points out that Coldfusion is utilized by over 70% of the Fortune 100."

this is unprofessional and doesn't help drive your point. You're arguing that "dimwits" perceive popularity as a good measurement of the value of a language, and then you point to the language's owner's own bluster about how popular it is in the industry.

I'd like to present an honest inquiry: who's life is made better by this article? The "dimwits"? Coldfusion devs? My guess is neither.

<comment><USER8> The stronger argument is a few lines down:

 _> The kit also points out that 70% of Adobe Coldfusion customers are still building new apps with CF - meaning that they still consider the platform viable for future expansion._

If you believe that number (and I'm skeptical, but let's grant it for the purposes of discussion), that indicates that CF is still a going concern in most places that use it, rather than something cordoned off in a dark corner as "maintenance mode." And people generally don't start new projects on platforms they believe are going to go away soon.

Note, however, the shifting goalposts: we hear that 70% of Fortune 100 companies use CF, and then that 70% of "ColdFusion customers" are starting new projects in CF, but that doesn't mean 70% of _Fortune 100 companies that use CF_ are starting new projects with it. We have no idea how many of those big enterprises that use CF still consider it viable. But by placing the two numbers in sequence like that, the Evangelism Kit plants the suggestion in your mind that lots of them do.

<comment><USER9> I'd be curious to know which users at these companies are creating the new Coldfusion apps. As a parallel, plenty of real business work gets done with Excel spreadsheets by people all across a business organization, but that doesn't mean that a new product actually being done by the engineering org within a company is going to use Excel for a new software product (they won't). It matters who these Coldfusion users are. Are they outside of engineering?

</comment></comment></comment><comment><USER10> I've been involved in CF since 1999. I'm the manager of the Houston CFUG (though we are transitioning to a very well known name in the CF world as the new manager), spoken at some CF confs, appeared on some podcasts talking about CF (even non-CF ones), and was a technical reviewer for a v5 title.

However about 6 years ago I made the transition away from CF to Rails (not for jobs - in my role I pick the technology stack). The Rails ecosystem is so much richer (and most of what I'd compliment there is true of other languages as well). Great package management, great tools (for example, Code Climate started as Ruby/Rails tool), great devops story, and more.

There's a lot I think CF still is advantageous for (the admin UI, easy debugging via CFDump, in-memory SQL engine to query against recordsets, etc). However, there's a lot it doesn't include. Easy ability to use environment variables. Background processing (Ruby's Sidekiq replaced in one line what I had spent years writing in CFML, because no one was trying to solve the problem etc) Etc

Also the support from Adobe has waned substantially over the years. As a user group manager I saw this in person.

I'd still do CFML, happily. I also would work in any other language I know, or do devops work. However, I've noticed alot of developers who cling to ColdFusion like they owe it allegiance. They beat the "ColdFusion's not dead!" drum even though the job market is pretty clear for the technology. It's a decent language, but it's just a tool.

<comment><USER11> >Also the support from Adobe has waned substantially over the years. As a user group manager I saw this in person.

Is Adobe Experience Manager eating Coldfusion's lunch that you could tell?

<comment><USER10> Not really, but it's probably eating CF's marketing budget - Adobe really puts their energies into the enterprise products. One year at the Internet Retailer show (my company exhibits) I stopped by the Adobe booth and introduced myself as a CFUG manager. They didn't even know CF was an Adobe product.

</comment></comment></comment><comment><USER12> The problem with Coldfusion isn't with it's popularity, usefulness or value. It's with Adobe and the cost of licensing.

The only reason right now someone would choose Coldfusion over literally anything else free is their existing skill. That's the very definition of dying out.

The other problem with Coldfusion is the community that all seem to have this same chip on their shoulder.

<comment><USER10> To be fair, there is an open source implementation. (We've run Railo/Lucee for years on our old CFML code)

<comment><USER12> You're right of course, but I'm betting that development didn't start with the open source implementation.

<comment><USER13> We've done quite a bit of new development with the Lucee open source engine. We switch back and forth between the open source engine and Adobe engine depending on if we want the remote monitoring that comes with Adobe CF.

</comment></comment></comment></comment><comment><USER14> A year or two ago I would have replied that ColdFusion is _actually_ dead, and that using it or really, even, maintaining applications in it is irresponsible, because it's virtually impossible to secure. But I think it may have become so archaic that vulnerability researchers aren't really hitting it as much any more? Maybe you've weathered the storm, and CF will be safe to use from here on out?

(Obviously: don't use ColdFusion).

<comment><USER10> As the article indicated, there are new releases, both in Adobe's proprietary version and the open source version (Lucee). Foundeo is a company built around CFML security tools (scanners and a WAF), and they release lockdown guides that are kept up to date.

[https://www.foundeo.com](https://www.foundeo.com)

[https://www.adobe.com/content/dam/acom/en/products/coldfusio...](https://www.adobe.com/content/dam/acom/en/products/coldfusion/pdfs/coldfusion-2018-lockdown- guide.pdf)

I think it's the CF applications that aren't being maintained that are the biggest risk (and there's plenty of those) - Adobe has indicated which version are EOL:

[https://helpx.adobe.com/support/programs/eol- matrix.html](https://helpx.adobe.com/support/programs/eol-matrix.html)

<comment><USER15> Scanners and WAF are, in general, not useful security tools.

</comment></comment></comment><comment><USER16> I don't really care much for language popularity, but I think the case to be made, as can be for any language of waning popularity, is the pool of developers who are available for hire.

ColdFusion is also unpopular for an important fact: it's proprietary and their licenses aren't cheap.

<comment><USER17> ColdFusion also suffers technically from most of the same reasons PHP is historically legitimately unpopular as a technical choice: confusing client- side and server-side markup in the same files, making it hard to share code cleanly between modules, often "encouraging" bad software architectures simply because they are the most convenient to page layout. (Certainly there are workarounds to such technical projects in both CF and PHP (and especially PHP today).

ColdFusion does everything that PHP does poorly, with the added bonus that you are paying for it, and there's never been the excuse that ColdFusion just runs "everywhere" like PHP had during the early internet.

<comment><USER10> Both PHP and ColdFusion have frameworks (Laravel and Coldbox for example) to address this. Without Rails or Sinatra, Ruby web apps would have the same problems.

<comment><USER17> I acknowledged there are workarounds/frameworks, and I especially recognized that modern PHP is often a different beast from classical PHP problems.

Ruby wasn't built to be embedded inside HTML, so I don't Ruby would have the worst problems of classical PHP even if Rails didn't exist, just as Perl (which both PHP and Ruby took inspirations from) even at its worst CGI architectures never quite had the same raw architecture problems that were rampant in early page-based mixed HTML and PHP design. The trade-offs for those architecture problems was development speed and "ease of use", PHP succeeded so well on the early internet almost precisely because of such problems.

ColdFusion too presumably succeeded as much as it did in Enterprise because of those problems in that space (easy to sprinkle a bit of server-side code in the middle of a page at will), though with no excuse for being free or easy to host. It's unfortunate that that also leads to the legacy of spaghetti code it will perhaps eternally have left behind in big-E Enterprise.

</comment></comment></comment></comment><comment><USER18> Coldfusion has a unique place in the world of programming languages. In its prime it was a great way to get a website started with minimal effort, similar to PHP. Both PHP and Coldfusion let you create simple websites, easy to deploy, full of spaghetti code. But with PHP's free/open source model, enough people developed an interest in it outside of cubicle farms to really grow their knowledge and the language, unlike Coldfusion... which became a hotbed of corporate legacy code for junior developers to learn bad practices from.

Source: Was Coldfusion developer for approximately 10 years.

<comment><USER13> Yea... using a decent MVC framework like ColdBox or FW/1 should be required for CF development.

You are correct with the spaghetti code comment, but I've seen worse in Java.

</comment></comment><comment><USER19> Author, glad you don't care. You've failed to convince me that I need to learn cold fusion now or in the future.

Let me tell a story. I know of a billing system that was written in IBM RPG. Up until 2008ish, it was still being maintained and distributed. The guy that wrote it was the sole owner and maintainer of this billing company and swore up and down that RPG was the best language in the world and he'd never consider writing in anything else.

But guess what happened? He couldn't hire anyone else to maintain this system. Further, it was slowly and obviously decaying. Operating the system was a full time job for 2 employees. Eventually the companies using that software abandoned it for a solution that was maintained by a company that was both larger and had a workforce of more than 1. Those companies cut their billing staff to it being a part time job for just 1 person.

Why do I tell this story? Because you can literally replace "ColdFusion" with "RPG" and you'll have the same article that guy would have written. That guy's business is shutdown now.

Popularity IS important. Popularity feeds support and stability. The author is free to cling onto a language that, frankly, I thought WAS dead. But he'd be well advised to brush up on one of the more "Popular" languages and techs.

<comment> james-skemp Minor quibble: it's spelled "ColdFusion." :)

</comment></comment><comment><USER20> If using Coldfusion, I'd recommend scanning your sites with a service or product like Tenable Security. There are quite a few high priority exploits that we've seen over the recent years. These end up being available as one- click takedown type scripts in tools like Metasploit.

<comment><USER10> Foundeo has several CF-specific security products (scanner, firewall, and proactive scanner). I highly recommend.

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

</comment></comment><comment><USER21> Aggressive defensiveness of this calibre is not a good look and probably reinforces any stereotype people have of developers who would consider themselves ColdFusion devs. I don't think anyone would have a problem with someone who is a dev, that does cold fusion. but to act like that's all you are going to know and define your self that way is pretty lame.

</comment><comment><USER22> I don't get how you could think "interpreted XML" was a good idea. Great, you don't need context switching the way PHP does it, but instead of properly splitting templates and code, ColdFusion still mixes both while managing to be less readable.

Added to that I feel unable to imagine a piece of indented 80 column wide XML that doesn't somehow curl up on the right edge. It's certainly not for me, but I won't tell you not to use anything.

Paraphrasing a thing I heard on the internet: XML is like violence, if it doesn't solve your problem, maybe you need to use ColdFusion?

<comment><USER10> CFML isn't just tagged based. It also has a c-style syntax (cfscript). A best practice is to use cfscript for models and controllers, and tags for your views.

</comment></comment><comment><USER23> "Node is an excellent language to learn."

Am I the only one bothered by the author's repeated assertion that Node is a language?

I should probably just take off my "Well, actually," glasses.

</comment><comment><USER24> I used CF in my first job more than a decade ago. It's not a terrible language. I'm a bit sketchy on the details (having been more than a decade ago) but I recall creating a custom tag that "magically" created an editor for DB row (which in-turn used a custom tag for editing any column). It didn't run in the browser, _but,_ apart from that, it felt a lot like using React/Angular/Vue/Svelte/what-have-you. I quickly built up a library of custom tags, which worked _really_ well in, what was essentially, a shop that was mass-producing websites.

The awesome thing is that I bashed it out in one week, starting from knowing no CFML at all. It was essentially me and my employer building websites (a 3rd or 4th dealt with IT), and he was successful with my work within one day.

It's dumb, it's boring, it's uninteresting, and those are seemingly features. I _love_ Vue and Svelte with a passion, but it takes more than a day to become successful with those (and far longer to become wildly productive).

All of that being said, I don't care to go back to it.

</comment><comment><USER25> "This doesn't hold up for the simple reason that dying languages aren't kept up to date! Check out the list of COBOL releases on Wikipedia - frankly, only two major versions released since 80's spells obvious doom for the COBOL ecosystem.

Contrast this with Adobe Coldfusion, with four major releases since 2012"

Is that tongue in cheek?

</comment><comment><USER26> Ah, Macromedia ColdFusion brings back memories. I did enjoy how quick it was to learn and modify pages. As long as Adobe continues to update, maintain, and market Adobe ColdFusion (they seem to have a good track record), it'll never be a "dead" language. There are advantages to corporate dollars.

<comment><USER15> Is their track record good with the security of their products?

</comment></comment><comment><USER27> I spent a couple of years making CF webapps - it was a wonderful experience. I wrote my own CFML interpreter for Linux at one point (before the Linux version existed), but never really finished it.

</comment><comment><USER28> The popularity of a language does not tend to correlate well with how useful or good the language is for a given use, true. But it is not meaningless, either.

If a language is popular, then companies are more likely to use it, if only because the pool of engineers they can hire from is larger.

For example, two companies I've worked for have seriously debated shifting to Java. Not for technical reasons, but because Java programmers are easy to find, and often are cheaper. (Neither of them ended up making that shift, though.)

</comment><comment><USER29> The google trend curve linked reminds me of the same graph for linux: [https://trends.google.com/trends/explore?date=all&geo=US&q=l...](https://trends.google.com/trends/explore?date=all&geo=US&q=linux)

Linux is NOT dying, quite the opposite, but I guess since 2004 more and more non-technical people have come online who have nothing to do with linux.

</comment><comment><USER30> Adobe is probably one of the companies who face decades of negative reviews yet remains highly profitable.

</comment><comment><USER31> Great post...rabithole got me to this link and ...TIL [https://www.adobe.com/products/coldfusion-amazon-web- service...](https://www.adobe.com/products/coldfusion-amazon-web- services.html)

</comment><comment><USER32> coldfusion has the coolest name of all the languages, I'll give you that.

</comment><comment><USER33> > Remember that thing called Ruby? You know, the scripting language powering > Kickstarter, Soundcloud, Basecamp and Etsy?

I'm pretty sure Etsy is largely PHP. The creator of PHP works for them.

</comment><comment><USER34> Was thinking about [https://www.reddit.com/r/LENR/](https://www.reddit.com/r/LENR/) for a second.

</comment><comment><USER35> Is there something we can do to the title to distinguish the Coldfusion language with nuclear cold fusion? The title seems applicable to both and even the first paragraph could be misleading if you assumed the latter.

<comment><USER36> Huh, is cold fusion still a thing? I thought it went the way of the bussard ramjet.

<comment><USER37> It says it's unpopular right in the title of the article.

<comment><USER36> I was talking about the nuclear version/free energy thing mentioned by the parent. The language itself is probably more popular than the "tech", at least it demonstrably works.

<comment><USER37> Cold fusion isn't free energy - I don't know where you got that idea.

<comment><USER38> It is the way you identify any of the innumerable scams involving the idea of cold fusion.</comment></comment></comment></comment></comment></comment>


Using Rust to Make a Safer Interface for Yahoo's Fast MDBM Database - jakub- https://erickt.github.io/blog/2014/12/13/rust-and-mdbm/

<comment><AUTHOR> The best quote is at the end, IMHO:

> Baring bugs, this mdbm library should perform at roughly the same speed as > the C library, but eliminate many very painful bug opportunities that > require tools like Valgrind to debug.

This is exactly why I'm so excited about Rust.

<comment><USER2> So say we all.

> but eliminate many very painful bug opportunities that require tools like > Valgrind to debug.

That's an understatement. Rust won't just eliminate many very painful bugs, but probably the most common class of errors too!

<comment><USER3> Rust is awesome, but coming from usual languages is... frustrating. You need to internalize that the compiler _really_ knows better what's safe and what isn't and it takes a while.

<comment><USER4> Yep also the type system is very unforgiving but probably by design.</comment></comment></comment></comment>


Ask HN: What's your favorite embedded system? - <AUTHOR>

I'm looking for something rugged, capable of running Linux, and cheap if possible. I'm just curious what you guys have actually used and liked as I evaluate which one would work for me.<p>I've used this in the past but I'm curious what else is out there: http://parvus.com/products/MilitaryAerospace/EmbeddedBoards/CPU-1421/ <comment><USER2> _"... What's your favorite embedded system? ..."_

Arduino ~ <http://arduino.cc/>

Hands down the cheapest, most open-sourced and fun stuff you can play with. I know it doesn't run Linux, but the cost, expandability through open-design and toolchain make it worth considering for prototyping.

</comment><comment><USER3> <http://www.soekris.com> has good stuff

</comment><comment><USER4> My favorite embedded stuff has always been self-designed.</comment>


Busy Beaver Turmite Challenge - <AUTHOR> http://www.conwaylife.com/forums/viewtopic.php?f=11&t=1029

<comment><AUTHOR> There's a new champion. Now up to 240 million steps!

I think it will be interesting to be sure that we've found the final champion - there is such a large range of behaviours. And yet amazingly there are only 65536 of these turmites.

[http://www.conwaylife.com/forums/viewtopic.php?f=11&t=10...](http://www.conwaylife.com/forums/viewtopic.php?f=11&t=1029#p7433)</comment>


Does dropping malicious USB sticks really work? Yes, worryingly well… - <AUTHOR> http://www.tripwire.com/state-of-security/featured/does-dropping-malicious-usb-sticks-really-work-yes-worryingly-well/ <comment><USER2> So very true, my primary job has been in tech for many years. But I find myself inserting found USB's in to my computer, at least I did it in the past. I know better now and won't do it but I suspect 90%+ of the people that find one will be happy to do it without much thought to what the consequences are.</comment>


Ask HN: Is HumbleBundle's business model sustainable? - <AUTHOR>

I feel like it may follow the same path as Groupon's. Sooner or later, they'll run out of [new] developers to promote, and everything will just head down hill.<p>Am I wrong in assuming this? <comment><USER2> I don't really have any idea what HumbleBundle's operating costs are or how much revenue it brings in from the developers...but the main difference between Groupon and Humble Bundle is that Groupon dealt with non-scalable physical quantities: food, wait staff, seating space. Not only were restaurants getting only 25% revenue on something that costs them the same to produce (the ingredients and staff to provide you the food), but such customers were pushing out normal-paying customers.

If a developer is handing over something that he/she can maintain with little change in operating costs, no matter how many customers there are, then the developer isn't being crushed by Humble Bundle's operations. Keep in mind that Groupon's internal financial operations aside, its business model would be fine if the suppliers (the restaurants, and so forth), were eager to participate.</comment>


Front-end Driven Applications – A New Approach to Applications - <AUTHOR> http://developer.telerik.com/featured/front-end-driven-applications-new-approach-applications/

<comment><AUTHOR> As a front-end developer who came up in the age of defining web standards movement, progressive enhancement and separation of presentation, behavior and styling, reading this makes me feel less relevant than I've ever been.

I haven't kept up with Javascript as I should have, seeing how it developed from a nice little add-on, to being incorporated in AJAX apps like Google Maps and now seeing it eat the industry alive as a full-stack language.

Plain old HTML, CSS and JS seem to be less defined today than ever before considering how much is JS driven and provided through popular frameworks like Bootstrap. It worries me that the entry to relevant web development and web design become more difficult as these approaches advance and what the end user becomes stuck with are one of many platforms and frameworks instead of an ease of creation with the raw code itself.</comment>


7.0-Magnitdue Quake Strikes Northeastern Myanmar - <AUTHOR> http://abcnews.go.com/International/wireStory?id=13211209

<comment><USER2> Mae Sai and Chiang Rai were the closest towns to the event. The report that buildings swayed in Bangkok is almost certainly false, Bangkok is 800km from the epicenter. [http://earthquake.usgs.gov/earthquakes/shakemap/global/shake...](http://earthquake.usgs.gov/earthquakes/shakemap/global/shake/c0002aes/download/intensity.jpg)

Searching for mentions on twitter this is the only report that I have found so far:

RT @Thai_Talk: Someone in Mae Sai said quake so strong that she felt nausea. One house collapsed. Power intermittent.

</comment><comment><AUTHOR> Here's a link to the USGS data: [http://earthquake.usgs.gov/earthquakes/recenteqsww/Quakes/pt...](http://earthquake.usgs.gov/earthquakes/recenteqsww/Quakes/pt11083001.php)

<comment><USER3> [http://earthquake.usgs.gov/earthquakes/recenteqsww/Quakes/us...](http://earthquake.usgs.gov/earthquakes/recenteqsww/Quakes/usc0002aes.php)</comment></comment>


Why I hate funnels. - <AUTHOR> http://tinyletter.com/ben/letters <comment><USER2> This is silly. Funnels are a useful abstraction to measure and optimize conversion rates in a multi-step process. How you optimize the steps in the funnel (i.e. spam or not) is up to you.

The "upside down funnel" is really an example of a viral loop, optimistically shaped to imply that loving your customers is guaranteed to bring you more of them. But that is still _worth measuring_ , and once the referrals get to the "try you out" phase, it's worth understanding the process by which they become loyal customers. That's what funnels are for.

</comment><comment><USER3> It's not a funnel in the sense of the object that allows you to pour a wide mouthed bottle into a small mouthed one, it's a name for the graph of "how much crap is in your flow" vs "how many customers are still trying to use your awful UI" tends to narrow down sharply and visually resembles a funnel.

You're _supposed_ to hate the funnel! The funnel is what stands between you and a good UX. The (impossibly) ideal funnel is a short length of straight pipe, where 100% of user intent is efficiently converted into action.

</comment><comment><USER4> I just see them as realistic. Of the people who use the internet, only some will find out about you. Of those, only some of them will care. Of those, only some will be willing & able to pay, etc.

The thing about flipping the funnel upside-down is clever, but I wonder how much it has to do with scale. Word of mouth can be a great driver of growth when you're small, but what about after that? Plus, the same effect applies where only some will pay you. So I'm not sure how different it actually is.

I agree that trying to make money from stuff you built often involves doing things with various degrees of grody-ness. I think what the author has done here is to think about that in a way that he finds palatable, and that's certainly important. But I wonder how much of this is about changing perception rather than action.

</comment><comment><USER5> I never understood these types of posts: Take something that is worthy of criticism (the abuse of funnels in user acquisition) and then use hyperbole to make them seem like the worst thing ever.

It's a tool to understand the progression of total audience into customers on a website. Just like CSAT and NPS are both valuable indicators of growth potential.

None of these things are the only thing that matters. And none of them are the best tool or methodology. Just like a spoon isn't the best accessory in the kitchen. That award obviously goes to the garlic press.

<comment><USER6> garlic presses ftw.

I agree with your point and yet still think posts like this are worth while. Many, many, people and businesses are so funnel focused these days, they've lost sight of the bigger picture.

Godin has been talking about this stuff for years, he's a master of hyperbole, and has had a big impact on many people because of it.

<comment><USER5> garlic presses - so efficient right?

I guess if they're good noise makers that get conversations started then maybe that's a net positive.

I just start to wonder if hyperbole is the most effective long term way to communicate - tho to use my own argument against me, i suppose deciding "most" is not the point ;)

<comment><USER7> The thing is, hyperbole is more likely to _provoke_ reactions than a seemingly "objective" and rational utterance. Hyperbole might _annoy_ you or you might agree and find it funny, either way, it is more likely to touch you in some way.

Hyperbole enables both people who agree and who disagree to more pointedly argue their particular side. If you think funnels are good, then seeing them compared to a meat grinder will probably annoy you enough to take to the comments and voice your concern or dissent. At the same time, if you find funnels not quite as good, you are equally stimulated to comment based on the apt description of your feelings.

Either way, hyperbole is a way to facilitate communication, especially in cases where the subject itself might not be the most enticing.

<comment><USER5> Yeah I think that's a fair point. Though then is the goal of a post just to incite conversation as opposed to articulating a well considered opinion?

<comment><USER6> Welcome to the internet ;)

</comment></comment></comment></comment></comment></comment><comment><USER8> Hating funnels seems sort of weird to me. Especially in this case, where it's just a model of an idea. There is nothing inherently evil about the concept of a funnel. He even makes that point when he turns it upside down and claims it as genius. The act of the trying to force people through the funnel on your timeline instead of theirs is where the problem is. And that act is going to be a problem no matter how you are modeling the customer acquisition process.

<comment><USER9> I feel the same way. In fact the idea of "flipping" the funnel is not new. Seth Godin wrote an ebook on it: [http://sethgodin.typepad.com/seths_blog/2006/01/flipping_the...](http://sethgodin.typepad.com/seths_blog/2006/01/flipping_the_fu.html) It's a lot easier for sales and marketing manager to think about conversion in terms of funnels, so a lot of analytics startups (kissmetrics, mixpanel) have it as a standard report. It seems that using a strong word like hate gets you attention; hence clicks.

</comment></comment><comment><USER10> What he describes "the audience" is part of the funnel. The idea that you have a cloud of people just out there taking in your content or marketing or apps or whatever just means they are sitting at the top of the funnel.

You don't have to treat them like a meat grinder at all. You don't have to push every person "into the funnel". In fact, I would argue that's doing it wrong.

If anything, the funnel should be a set of gates people pass through, more like a filter that at each stage people are more likely the target audience for what you are selling.

For example, when you go into an Apple store, they let you hang out, play with things, and are generally pretty nice to you. They also ask you questions about your needs and wants in product and they steer you towards what they think might be the best fit. Thus, filtering you down to the right product. BUT, if you can't afford the actual purchase, they aren't going to force you into buying or badger you into something.

If more websites treated their funnels like a filter instead of like chute you are trying to force people down, the better off marketing would be as a whole. It actually makes the whole process better because you don't even try to pitch until they are ready to buy.

For example, on a current side project I don't even show pricing until people use the product. I don't even give them the opportunity to buy until they have shown that they will use it. I don't want angry customers saying they bought something that they didn't use and want a refund. So, we don't try to sell until people are happy enough using the product.

We will probably get fewer customers and revenue this way, but our customers will be happier and we will only have customers that use our product instead of people who are paying us because we are good at marketing to them.

<comment><USER11> IOW - "the funnel is really a filter". Which means it's not a funnel?

I agree, by the way, with the approach you describe. It's a lot more sane and will result with happier customers. I just think that you and OP are saying much the same thing.

<comment><USER10> I think we are too, but I think that saying that funnels are evil, bad, stupid, whatever is foolish. The funnel is still the funnel, but how you treat it makes a difference. Of course, that kind of nuance doesn't get you on the front page of HN either.

</comment></comment></comment><comment><USER12> Re: People who are saying the funnel is still there.

This is entirely a perspective thing; the customers see messages and options, not a funnel. You only see a funnel when you think of it as one.

The author describes a deliberate avoidance of business philosophy based around conversion metrics. Hence if your thoughts are to push them back into the conversation, you immediately taint his purpose. Assimilating any one set of metrics into the prime position will essentialize the business into "make those numbers go up," creating a feedback loop that guides future decisions. That feedback loop subsequently creates its own conclusions about how to advance the business. If you break the loop and construct a different one, with different abstractions, you get a different kind of business. That's the big takeaway here.

</comment><comment><USER13> In the games industry, especially with free-to-play, you can hate funnels all you want, but they're a necessity to understanding where your gameplay loops are doing well and doing poorly.

I've taken the long view that making a really awesome game leads to people wanting to give you money. However, my personal take on that is that it's just another way to spin funnels, in a less aggressive and predatory way.

If I'm mistaken, I'd love to learn why.

<comment><USER6> The process the author describe still uses "funnels" so I don't think you're mistaken.

What we do have to realize, however, is that the intention and language used to describe and execute "marketing", matters a lot.

The author outlines the difference (in his post, and the one's he links to)

-Content focused on teaching (adding value) vs Content focused on converting \- Politely asking for emails/subscribers vs requiring an email \- referred prospects vs captured leads

One post he links to has a great comment by Gregory Ciotti:

"It humors me how aggressive certain terms can be in this regard: "campaigns," "email blasts," it's like the marketing team is waging war with their prospects."

Language matters, it impacts our actions. From how we create strategies to how we interact with customers or prospects.

Everyone is in the funnel game right now, smart money positions against "everyone".

</comment></comment><comment><USER14> I don't like the term funnel, it's more like a sieve...

However, I do think it's a good way to visualize customers that come to your site, but don't end up converting. You can look at those percentages and try to make them better. Whether you decide to "spam the f*ck out of them" or do something more personable and humane is up to you.

<comment><USER15> A sieve would just be a one-step funnel. If your engagement involves more than one step (sieves in series) then it's a funnel.

</comment></comment><comment><USER16> I think the traditional funnel concept work just fine - as long as you do step three right.

Do many blogs and services spam their subscribers? Yes indeed - and I have an itchy unsubscribe button-clicking finger for those services.

If you change Step 3 to "Provide even more value", though, then you do indeed get customers that love you. And some of them refer their friends, who come in at the top of the funnel like everyone else - but with some preconceived good feelings towards you because of the recommendation they got from a friend.

Pat Flynn's newsletter is a wonderful example of how to do it right. Almost all of the emails I get from him simply give me more useful information - maybe 10% have ever been strictly promotional.

</comment><comment><USER17> I like the concept. Using it to measure, evaluate and manage leads that fall into level 1 (widest part on top) is by itself a good thing. I once worked for a large company whose sales funnel had 7 stages/filters inside. Each one of them affecting of being affected by more than one organization. Dealing with it was a pain for most sales guys because it was easy to see where the opportunity was stuck in the funnel, but very hard to see why. I can imagine that smaller less complex organization could easily pull out a 3 or 4 level funnel, go with it and see its benefits.

</comment><comment><USER18> We use funnels as a measurement of product quality all the time, especially in the context of understanding task completion rates and discovering areas for UX/interaction improvement.

The "funnels" that Ben seems to talk about are more about sales funnels where you keep getting pestered once you're a lead but in the context of most e-commerce sites, funnels are a great way to know if there's something about the site that's not working for people.

</comment><comment><USER19> This can be extended to other mediums - I try to only do business with companies that have minimal advertising (such as Vanguard and USAA). Think about it for a moment: where does the money for television advertisements come from? If you're a current customer of a company running TV ads, you're being bilked, and if you're a potential customer, why would you want to do business with a company that will bilk you just to get more new customers?

</comment><comment><USER20> Upside down funnel looks like an old timey megaphone. Perhaps that's the analogy here, if you have time to shout your message you might as well shout it to a lot of people.

</comment><comment><USER21> Funnel are shortsighted... Yep. But investors are too I presume?

</comment><comment><USER22> Anybody see the background picture behind the article? I'm on my phone, can someone with means extract it and post it somewhere so we can see what it is?

<comment><USER23> It's a scene of one of the Planet of the Apes movies, where Charlie is kissing one. Why? no idea...</comment></comment>


Why I Still Choose Gentoo - <AUTHOR> http://emergelinux.tumblr.com/post/17799928317/why-i-still-choose-gentoo <comment><USER2> Choice of menial things (author's words), "flexibility" of having only what you need. Touting a shorter compile time as a benefit against binary packages. Good stats on an old machine.

These all seem downright _odd_ as benefits.

> Finally, the control over your kernel configuration is a huge selling point

WHY? Why is this a huge selling point? Why would I, the OS user, care if the kernel is tiny and tailored? What does it _materially_ change when I use the computer?

I guess my reasons for picking an OS are just too different. I prefer something that lets me do all the things I sat down at a computer to do. Ideally, _I wouldn 't even know what OS I was using._

I don't mean to demean the users of Gentoo. Especially if there's a joy to it - if you enjoy configuring kernel-level stuff, distribution hacking - that's great. All that power to you, and Gentoo looks like a good fit. But defending it with these kinds of points just seems tired and strange.

<comment><USER3> Pretty much the reason I stopped using FreeBSD as my desktop os and got an OSX machine. Nothing against the DIYers out there, but the vast majority of people have other things they would rather spend their precious time on.

<comment><USER4> I recently did the inverse: OSX to Arch Linux.

My motivation was very much similar to why I switched from Textmate to VIM. I hit a wall in terms of how powerful and efficient I could be with Textmate. Wheras I knew I could become equally productive in VIM within a few months and in return I would have a seemingly endless opportunity to improve my toolset in the future.

The majority of people need optimized prepackaged software - agreed - but for someone who has spent the majority of their life on a computer, via hobby and now work, the context has shifted from "I just need it to work" to making a long-term investment in my tools to maximize productivity and enjoyment of the time spent on the machine.

<comment><USER5> Can you expand on your Textmate efficiency? I'm new to OS X and it's tools, currently on Sublime Text 2 but haven't really configured it at all.

I want to hear all of it!

Thanks.

<comment><USER6> I'd suggest that you try not to jump in the 'configuration band wagon' and first try to learn the very basics of Sublime Text. Also look for v3, which is neat.

Sublime Text 3 is a great editor on its own, and while I do have packages and plugins installed, I believe new users should take the time to familiarize themselves with the editor before bloathing it with whatever X blog post says.

As to ST vs VIM, I used to use Vim, I still use it everyday. ST has a much nicer GUI than MacVim or GVim... and the stuff I used to do in Vim, I can do just as well in ST with Vi-mode.

Now if only ST3 was not proprietary software.

<comment><USER7> I'm a long time VIM user and I jumped into the Sublime wagon for a day. And I realized that Sublimes VIM mode was not at all enough, just a shadow of the real thing. To this day, only thing that comes really really close is Emacs with evil mode.

For me, the more I use computers for work, the more stuff I build, GUIs start to be too much in my way. I just need to learn the editor keys and window manager keys to the spine. I don't want nags from my OS to update something, some windows to float wherever they decided this time or some weird services running which I don't know they exist.

Total control on what you own. That seems to be my goal as I get older and more proficient.

<comment><USER6> What follows is not a critique of Vim - I use Vim just as much as I use Sublime nowaday, if not more. I'm just stating why I found a case for Sublime.

* * *

I'm not implying that Vim mode is the same as Vim, it's not, not at all. But function-wise, I find most of what _I need_ right back into ST.

Also, Vim doesn't quite have multi-cursor the way ST has it. I'm sure Vim has a plugin that does it, but then you have to install it manually or with Pathogen or Vundle - Sublime's Package Manager works way better in that case.

The reason I favor a GUI over Vim's terminalish interface is that in Vim, everything has the same height and width: a char size. In Sublime, I can set my desktop manager to draw menus and stuff in super small points and keep the font of my code in a bigger point. The separator between two editor windows doesn't occupy a whole character width for itself. The status bar at the bottom as well. The autocompletion feature doesn't occupy an arbitrary character-sized space.

Fuzzy search in Sublime is great. ST3 comes with `Goto Definition` which works great too, especially when you tell Sublime what you consider being your project.

It's configurable in Python and JSON, which I find to be more readable than Vimscript and Elisp.

Its fancy design calms my need for artistic beauty, as non-hacker as this might sound. I like that it looks great.

Finally, I write a lot of Go and GoSublime is just a killer plugin.

<comment><USER7> I've used multiple cursors with Emacs and Vim. It's really nice, but I kind of still don't need that feature.

For beauty, I really love my Solarized desktop. It's functional, the colours are nice and I know exactly where is my editor, my browser and my test terminals.

[https://www.dropbox.com/s/b99hli11lklmf00/desktop.png](https://www.dropbox.com/s/b99hli11lklmf00/desktop.png)

So, coming from the Mac OS X world, I started to see the real beauty of my engineering desktop. And of course all the configs are in Github.

<comment><USER5> Link the Github! Link doesn't work for me. SSL connection error.

<comment><USER7> [https://github.com/pimeys/dotfiles/tree/work](https://github.com/pimeys/dotfiles/tree/work)

[https://github.com/pimeys/dotvim](https://github.com/pimeys/dotvim)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> The purpose of running a distribution— any distribution— is to outsource a bunch of basic work that all systems need. After all, I could do all that stuff myself just from source, but I'd like to get something _else_ done with my life too.

The problem with Gentoo is that it just doesn't have an active enough development community to keep up with that task in the way that Fedora, Ubuntu, Debian, or even arch can... so you're stuck doing a lot of stuff yourself, or using old software that you wouldn't be otherwise. Important bug fixes get left marked unstable forever, etc.

I think this is really unfortunate because Gentoo does better capture the inherent advantages in running an open source operating system.

As an upstream developer, I've found that Gentoo users seem to pretty much the only GNU/Linux users who send _patches_ with their bug reports— even more so than the _packagers_ of other distributions. It's especially remarkable when you consider how many more users these other systems have. I don't believe that it's just because Gentoo attracts the geekiest of the geeky, it's because the distribution inherently gives all the users the tools to contribute back and makes them take some of the startup costs, empowering them to contribute.

I wish all distributions were more like gentoo. Innovations in other areas are also important, but there is something to be said about recognizing what makes your system uniquely good and maximizing it— rather than imitating the competitions' strengths... in contrast to what I see with the major distros copying MSFT's and Apple's Signed-everything secureboot stuff, and their bondage and discipline tablet oriented UIs.

<comment><USER9> I think this is pretty perceptive. I wish that there were more active development for the portage tree community, but the truth is, there is just so much _there_, and as I see it, gentoo hasn't been commodified by an enterprise (canonical, red hat, etc), which is both a blessing and a curse. Also, I think nobody really runs "stable" gentoo, because stable things on single systems are naive. This is part of the reason for the explosion of distributed systems (cassandra, hadoop, hbase, etc). I think most people who run gentoo (correctly) don't actually rely on one single system being stable.

</comment></comment><comment><USER10> I can't tell if this is satire or not, it's almost as if I'm reading [http://funroll-loops.info/](http://funroll-loops.info/)

<comment><USER11> Thanks; I just wasted 1/2 hour reading through that site and groaning.

</comment></comment><comment><USER12> I used gentoo for many years. I have come to view this as something of an abusive relationship. Now I'm a happy arch user, and no longer think of interactions with the package manager with a sense of dread!

Also, the article had some fantastic (unintentional?) references to [http://funroll-loops.info/](http://funroll-loops.info/)

<comment> qu4z-2 That's interesting. I dread arguing with any non-portage (that is, non-Gentoo) package manager. Maybe that's just 'cause I'm used to portage though.

<comment><USER13> yum actually works really well

</comment></comment></comment><comment><USER14> I have 8GB of ram. I stopped caring about my OS footprint a long time ago. I sometimes forget VMs running on my workstation and never notice. My system resources are essentially limitless; my time is not.

I used Gentoo for a while thinking I cared about the system logger or cron. I don't. 99.9% of stuff can be installed with the default settings. Painting an actual racing stripe on my workstation would be a more efficient use of my time compared to the cost and any mythical benefits installing Gentoo provides.

</comment><comment><USER15> It's interesting that so many people have time to maintain their OS, fixing the problems with that OS and still continue to spend time on Work, Family and co. Is that really necessary when you could use a more simpler OS and therefore could have more time to spend on other useful stuffs?

<comment><USER16> If you're somewhat familiar with Linux the time investment isn't really that bad. I've wasted more time over the years due to weird Windows quirks than I have configuring Gentoo.

<comment> qu4z-2 This is my impression too. Every now and then I run emerge --sync && emerge -avDNu world, do a quick sanity check, then leave it alone.

I've spent enough time on other linux distros chasing down PPAs, or trying to diagnose weird issues that it refuses to log because it might intimidate the user.

</comment></comment></comment><comment><USER17> It seems like the author's main point is that Gentoo's source-based package management offers more fine-grained control than Arch's binary package management.

To this I say: Arch has source-based package management too! It's called makepkg, and is indispensable for long-time Arch users, as it allows you to build packages not in the official repos, or tweak the build flags of official packages.

As always, the Arch wiki has extensive documentation.

* Here are docs on makepkg [https://wiki.archlinux.org/index.php/Makepkg](https://wiki.archlinux.org/index.php/Makepkg)

* Here are docs on installing unofficial packages from the Arch User Repository [https://wiki.archlinux.org/index.php/AUR](https://wiki.archlinux.org/index.php/AUR)

* Here are instructions on installing custom versions of official packages from source using ABS ([https://wiki.archlinux.org/index.php/ABS](https://wiki.archlinux.org/index.php/ABS))

</comment><comment><USER18> Sure, Gentoo is fantastic for the control it gives you ... by making extreme flexibility relatively convenient, you get various benefits such as resource gains and additional security through minimalism. It's not for everyone, but it's an _extremely_ valuable member of the Linux distribution space.

However, I disagree with the author suggesting Gentoo is anything near Linux from Scratch (LFS). A base 'stage3' (initial filesystem) image for Gentoo is quite large these days (~170MB compressed) and includes python, perl, bash, etc. (Squashfs with busybox and a kernel is a base Linux system!)

Like any project, Gentoo's not perfect and has its issues. While I personally prefer it to others, I also see the value in other systems for people with different goals (such as reasonably automated security updates, strong commercial support, etc.). As always, right tool for the job.

</comment><comment><USER19> He's only listed three advantages that I can discern.

1\. "but users of binary package management still install extra support for things they may never use."

2\. Custom kernel with only what you need

3\. "Even menial things such as choice of system logger and cron daemon can be chosen and configured exactly the way you want"

Why are those meaningful advantages? For example, if it makes my computer run faster, great, but does it? (I doubt it.)

Most of the other stuff is just giving major props to Portage... I mean yeah, I'm sure the "revdep-rebuild function" is great, but since I'm using a binary distro, I don't need it!

<comment><USER20> I don't see why number 2 can't be done on any other distro. Nothing is stopping you from compiling your own kernel on any of them. Of coarse its rare that people would bother.

3 is also a feature of Arch. The problem is now you have to spend time setting that stuff up. More problematic is you have to actually know you need to set something up. Did you remember/bother to tweak, your ssd settings in fstab? Setup OpenAL for 3d sound? Your HDD IO schedular? Your TCP buffer settings? Your font renderers antialiasing? All that crap sould be taken care of (although admitidly distros don't seem to do things like setup SSD schedulers to deadline/nop.

1 seems a be redonculious. There is very little reason to really worry about having a few extra packages lying around as long as there not running stuff in the background. I think it's more for people with a case of OCD about their file system.

<comment><USER19> > Did you remember/bother to tweak, your ssd settings in fstab?

I use Arch too, and no, I didn't think to do that. Thanks!

<comment><USER21> Instead of mounting your file system with discard, use cron to run the command "fstrim /path/on/ssd" daily. You won't have to pass the discard commands every time something is deleted, and instead only have the performance hit once a day.

</comment></comment></comment></comment><comment><USER22> I've used Gentoo since 2007ish on three separate machines, installed it on a couple more I didn't own, and on my own devices have totally broken it a few times in the earlier years forcing a complete reinstall. (One time I saved it after I had killed /bin et al. by bootstrapping with busybox...) The feeling of control and having essentially _everything_ the way I want is seductive and easy to miss when I work with Windows or any other Linux. And for some reason fixing the system when it goes wrong gives me a bit of pleasure, which not many other things do. This year I swapped out my nVidia GTX260 for a Radeon HD 7950, so of course X wouldn't start. It's a simple issue though, about 10-20 minutes later I had graphics again and my dual monitors setup with my vertical one rotated properly. Huzzah!

Portage is my favorite package manager, but it's not without its problems. I occasionally get frustrated by dependency conflicts. One thing I think the submission should have mentioned is the `eix` tool, which is to Portage's `emerge` as `slocate` is to `find`. It's a much better experience for finding out what packages are available or a description of a package.

Another feature I like about Gentoo is 'rolling releases'. I don't ever have to do a dist-upgrade, I just update the packages I want to update when they have updates. And I'm still happily using gnome2.

Some people are offended by the installation process. I think that's a good enough litmus-test for whether they would enjoy Gentoo or not.

</comment><comment><USER23> There two reasons I have up on Gentoo several years. One was a period of very high drama amongst the developers.

The major one was packages never being marked as stable. There was a file you could add packages to in order to allow unstable versions, but it just kept getting longer and longer. If I wanted long term stability, I'd use Debian. For desktops and workstations, I expect things to be "fresh" where each distro has their own tastes for fresh, but certainly measured in months. (I switched to Ubuntu because I knew I'd get fresh Gnome, at a time when there were good system enhancements like NetworkManager.)

A quick check on [http://packages.gentoo.org](http://packages.gentoo.org) shows that no version of Gnome 3 appears to be marked stable. For the software package I am an author of, the most recent version marked stable was released 13 months ago and there have been 10 releases since! LibreOffice does seem to be an up to date version, as does emacs.

One area when Gentoo shines are the docs - they are very very good. I did try Arch a while back and ended up in a maze of using the wrong one out of official and unofficial documentation.

<comment><USER24> I don't want to identify myself but I was one of the first developers for Gentoo back when it was called Enoch. There was always drama, credit stealing, back-stabbing et all. Arguably the largest contribution I made to the distribution (once again not mentioning specifics to identify myself)... the history of the event was rewritten and I was left out of it entirely.

I got the heck out of there. That being said, the founder Daniel Robbins is a nice guy and taught me a lot.

<comment><USER25> Daniel Robbins also left, he has since set up a Gentoo meta-distribution called Funtoo [http://www.funtoo.org/](http://www.funtoo.org/)

<comment><USER24> I did not know that, thanks.

</comment></comment></comment></comment><comment><USER26> > " Gentoo also provides some fantastic tools for maintaining your system. > 'eselect', for example, makes it easy to symlink your kernel,"

This whole post could have been sarcasm. I know it isn't, but, this is exactly what I never ever want from the computer I use for daily tasks. I just want it to work.

<comment><USER21> The kernel symlinking is actually a rather unnecessary eselect module. An example of a more useful module is switching your system's default python from 2.7 to 3 to 2.6 in one command instead of changing the symlink for the various python commands.

</comment></comment><comment><USER27> I used to be a major Gentoo user for years, but moved production servers over to FreeBSD because every few weeks commits to the portage tree would break my servers requiring hours of "massaging" to get packages compiled.

Portage is brilliant, and *BSD would benefit heavily from it, but at the time it just wasn't production ready. Too bad the GentooBSD project has been dead in the water for a few years.

I wrote a guide years ago on setting up a Stage 1 install[1], it's heavily out of date but may provide an insight into how things on the Gentoo side have changed over the years.

[1] [http://matt.xerq.net/gentoo_stage1.txt](http://matt.xerq.net/gentoo_stage1.txt)

</comment><comment><USER28> Gentoo is hard but it pays off in tough situations. The benefit is more about elegant and efficient customization rather than performance. It's not for most situations but I am very grateful that it exists and that I took the time to learn it.

<comment><USER18> This matches my own experience. For example, I use it for custom diskless images that run with some fairly specific kernel features and init system customizations to support from-boot ethernet and switch redundancy via bonding at the same time as root on NFS (for cluster integrity, ie. split-brain avoidance, even in the event of system failure within switching fabric). I would hate to try doing that with mainstream distributions.

</comment></comment><comment><USER29> I used Gentoo a while ago, and I did enjoy the experience, but found the culture and system to be a bit mired in old stubborn tradition.

An interesting fork-ish project is Exherbo, which is basically Gentoo but much lighter (in architecture, not performance really), cleaner (in my opinion) and modern.

It's not for everyone, but if Gentoo tickled your fancy but you found it a bit old-feeling, give Exherbo a shot!

[http://www.exherbo.org/](http://www.exherbo.org/)

Full disclosure: I have absolutely no connection with Exherbo or its maintainers.

<comment> qu4z-2 As another Gentoo alternative, I'd suggest Funtoo which is essentially a set of patches on top of Gentoo by the original creator.

</comment></comment><comment><USER30> Let's also not forget Gentoo is the basis of the amazing SystemRescueCD [http://www.sysresccd.org](http://www.sysresccd.org)

<comment><USER31> Years ago, I once tried to rescue a disk with this and the CD would not boot the computer... apparently because it needed to access a hard disk to boot. Perhaps I am not well schooled in the arts of systemrescuecd, but that just made me laugh. They may have fixed this in the years since, but I lost any confidence in systemrescuecd.

Instead, I booted with a BSD kernel having an embedded root filesystem and proceeded to rescue the disk.

This is why I often can't take Gentoo users seriously. Some certainly know what they're doing (Google built their systems from Gentoo, didn't they?). But too many others only think they do.

<comment><USER32> Replying to this just to let you know that it seems you've been hellbanned - each of your last three comments is [dead], although none seems offensive or inappropriate.

<comment><USER31> Thanks. So what does it mean if you are "hellbanned" but the comments are neither offensive nor inappropriate?

Is hellbanning automated, or is it the work of human judgment? Perhaps it is a technical issue that results in [dead] comments?

</comment></comment></comment></comment><comment><USER33> Portage is really worth the time it takes to setup Gentoo. Really, it doesn't take more than a few hours on a server install, and most of it is unattended.

There's also Funtoo ([http://funtoo.org](http://funtoo.org)) out there, which is maintained by the creator of Gentoo (Daniel Robbins). It has a couple of neat features like a git-based portage tree, for example.

</comment><comment><USER34> Many of the reasons which the author mentions as why they chose Gentoo are precisely the reasons why I choose FreeBSD.

I really like the ports system, and from what I've heard, Portage is based on the FreeBSD ports system.

</comment><comment><USER35> We're talking about a sample size of one computer here right?

</comment><comment><USER36> So you have a Core i7 to build the package quick, then, you use it for 1% of the time.

Sounds great.</comment>


Does the sun rotate? - <AUTHOR>

Hi,<p>I'am damn curious to know if the sun rotate's on it's axis.also is it true that it revolves around the milky-way? if so does it take the entire solar system along with it?what really happens when the entire solar system gets shifted to the other side of our galaxy? <comment><USER2> 1\. Yes, in fact it's flattened slightly as a result; its rotation period is ~25 days 2\. Yes, with a period of about 240 million years 3\. Not much.

</comment><comment><USER3> Yes, or no, depending on your inertial frame of reference. Same answer as "does the sun fly through space faster than a rocket ship?"

The sun isn't taking me with it. I am also rotating around the milky way. I happen to be rather more acted upon by a big rock than either of those relationships, though.

<comment><USER2> Actually, a rotating frame is non-inertial.

<comment><USER3> A rotating frame is defined in reference to an inertial frame of reference. Consider a beach ball spinning in my hand. which way is it spinning? If we judge it by comparison to me, it might be spinning, say, clockwise around the axis perpendicular to my hand. I'd we judge it in comparison to the sun, that answer changes.

I still think I'm right here, but welcome attempts to fix my faded memories of physics.

<comment><USER2> The direction of rotation is relative, but the fact that it is rotating is not. That is, an observer in the Sun's reference frame can, indeed, determine that the Sun is rotating. (The Coriolis effect is one example.)</comment></comment></comment></comment>


A GraphQL client library without queries: Building a movie app with gqless - <AUTHOR> https://hasura.io/blog/gqless-fetch-your-graphql-data-automagically/ <comment><USER2> As a backend developer I can't help but feeling we have gone full circle. As in, how is this effectively different from regular server side HTML? I know this is rendered on the client, and I'm not doubting it's usefullness, but what advantages does this setup have?

I also guess their demo app isn't representative of what problems this setup intends to solve:

[https://youtu.be/wM5KDPG9Ugk?t=2866](https://youtu.be/wM5KDPG9Ugk?t=2866)

The example whould have been extremely simple to implement in JS/TS on the server side, it would also be much faster and have better concurrency, caching and scalability options.

</comment><comment><USER3> While ES6 proxies are really nice, I came across this experiment (1) and their tests showed that ES6 proxies can be very bad at performance. I could reproduce the test case. Not sure whether this GraphQL client has some way to optimize.

1\. [https://thecodebarbarian.com/thoughts-on-es6-proxies- perform...](https://thecodebarbarian.com/thoughts-on-es6-proxies-performance)

<comment><USER4> In comparison to the Network request that the GraphQL query will be launching, ES6 Proxy property access performance will be insignificant.

</comment></comment><comment><USER5> I think this looks very cool, but this quote concerns me:

      If you're into laziness and magic (who isn't?)

Magic is great until you run into an edge case, or try to do anything complicated. Then it tends to bite you in the ass.

I can see this being a great tool for whipping out quick prototypes, but I'd be scared to use it for anything bigger.

That being said, it does look very cool!

<comment><USER6> > Magic is great until you run into an edge case, or try to do anything > complicated

Yep totally agree. While it's not complete yet, (see [https://github.com/samdenty/gqless/blob/master/README.md#gql...](https://github.com/samdenty/gqless/blob/master/README.md#gqless- compiler-wip)) I've designed with the sole focus for being used inside complex applications.

The "magic" part is only a small portion of gqless. For 1.0, there will be an option to "use plain queries". I've tried re-inventing everything - but it's also innovating in the reactive, query-optimization, local state and cache areas.

It can do even more optimizations than Relay ;)

</comment></comment><comment><USER7> I'm excited about the fluent GraphQL ecosystem and to see where it goes! Using the nice syntax of GraphQL does get lost a little bit ofcourse, but having the benefits of being able to "compose" to some degree and not dealing with strings is nice.

From the SQL ecosystem, jOOQ is so amazing: [http://www.jooq.org/](http://www.jooq.org/)

This Ruby one was one of the first ones I came across [https://github.com/contentful-labs/gqli.rb](https://github.com/contentful- labs/gqli.rb)

And then we've been putting together a list here as well: [https://github.com/hasura/awesome-fluent- graphql](https://github.com/hasura/awesome-fluent-graphql)</comment>