K, by Arthur Whitney (2005) - <AUTHOR> http://archive.vector.org.uk/art10010830 <comment><USER3> I had to write a lot of K at university (thus disclosing where I went to, and confusing people that have written any K with the idea you could possibly write a lot of it).

Get by the symbolic confusion (Arthur himself used to respond to confused students on the mailing list about such things) and it's really quite inspired. I can appreciate how an APL with proper symbols would be properly productive. Your code ends up super dense, with non-trivial stuff easily fitting on just a few screens, so you can keep track of what's going on. (KDB itself, the commercial column based DB product built with K, was notoriously small for the functionality). The real pain I seem to recall was interfacing it with anything else, but the entire environment is tiny.

This is one of those languages that really expanded my mind and made me hope the rest of the world would one day revisit the ideas of the APL family.

<comment><USER4> > the idea you could possibly write a lot of it

Presumably it's one of those things where if you find yourself writing a lot of code, you really ought to question what you're doing?

> Your code ends up super dense, with non-trivial stuff easily fitting on just > a few screens, so you can keep track of what's going on.

I have found it really difficult to convince people that the latter follows from the former—that denser notations actually make code easier to grasp, as long as you know the notation. The farthest I've gotten is: "Look, in a language that rhymes with Slava, you often have to write an enormous amount of code in order to accomplish anything and keep it maintainable, right? Well, there are languages even better about that than the ones you use."

You may be interested in concatenative programming, a cousin of tacit programming. Factor ([http://factorcode.org/](http://factorcode.org/)) is a good dynamic language with a great environment and helpful (though quiet) community in #concatenative on Freenode. I am working—alas, very slowly—on a statically typed concatenative language and hope that it will one day help take these ideas to the mainstream. :)

<comment><AUTHOR> I see what you did there.

ps: just in case here's a very enjoyable talk, not about, but by Slava [http://www.youtube.com/watch?v=f_0QlhYlS8g](http://www.youtube.com/watch?v=f_0QlhYlS8g) Beautiful and impressive.

</comment></comment></comment><comment><USER5> For a real eye opener compare the length of these K versions of the Alioth benchmarks to their more verbose brethren [http://kparc.com/$/z/comp.k](http://kparc.com/$/z/comp.k).

I found these on the K OS project page - [http://kparc.com/os.htm](http://kparc.com/os.htm). There's a great description of Arthur Whitney building a Notepad like text editor (1K) in 30 minutes or so using this system here - [http://coding-is-like- cooking.info/2013/09/an-introduction-t...](http://coding-is-like- cooking.info/2013/09/an-introduction-to-array-languages/).

Personally K is a bit too terse for my tastes - I think something like Nile achieves some of the terseness of APL without looking like line noise - [http://github.com/damelang/nile/blob/master/examples/text- la...](http://github.com/damelang/nile/blob/master/examples/text-layout.nl).

<comment><USER6> _[http://coding-is-like-cooking.info/2013/09/an- introduction-t...](http://coding-is-like-cooking.info/2013/09/an- introduction-t..). _

Thanks, I enjoyed that article. It gives a vivid picture of the gap between the array languages niche and mainstream programming culture.

<comment><USER7> > Despite my head start with J, by the end of the conference I found APL code > easier to grasp – J seems more extreme to me. Roger calls J "executable > mathematical notation", and I've always been a bit more of an engineer than > a mathematician.

I found this too, when I tried them both, first J then APL, perhaps because:

* APL uses () [] and {} in their pairs to parenthesize things, just like other languages, while J uses the 6 symbols as standalones, harder to read the code.

* All verbs in APL are single characters, whereas J symbols might be more than one.

* J, unlike APL, uses the concepts of rank, and forks and hooks, which are both difficult to grasp and don't seem to add much to the array processing idea.

</comment></comment></comment><comment><USER8> Compared to how different k/j/apl are from mainstream programming languages, c/c++/c#/java/pascal are all dialects of the same language.

You have to think differently when using them - an exercise well worth the effort. Much like Lisp, if you grok them, your code in any language will be much better.

And they are not new - APL goes back to the 1950's. K is the refined-for- practicality version, J is the refined-for-purity-and-mathematical-beauty version (but it IS practical; in fact, it drops APL's special graphic symbols which made APL more beautiful but less useful)

</comment><comment><USER9> K's successor Q is used heavily in financial systems and costs a bomb. Despite all the big data rage these days, I think Q has been handling very high volumes of data for a while now with some amazing performance.

The 32-bit trial version of kdb+ is available for non-commercial use [1], so I went and downloaded it. The linux zip download is 278KB. Uh ok! I was expecting it to download more stuff (much like Chrome's installation), but nope, that's all there is to it!

[1]: [http://kx.com/software-download.php](http://kx.com/software- download.php)

</comment><comment><USER10> I used K and KDB full-time from around 2003-2005. Very, very good performance, but very steep learning curve and some frustrating bugs, but getting quick direct support from Arthur helped a lot (even if his emails were frustratingly terse! ). What else do you expect from a guy whose email address was email@example.com? It forced me to learn functional programming before it was "in". Once you got the way to think about vectors and functions over vectors you could be very productive chopping up big data in finance. Fun stuff actually.

</comment><comment><USER11> Long time HN lurker...I've worked with kdb+ / k the last few years, it's in every major bank and is great for storing and querying market data. If you're looking for a nice GUI I use qStudio, it helps make it a little more friendly.

Then there are great tutorials on the code k website. It's a beautiful language full of unique original ideas.

</comment><comment><USER12> Q (post-K) is really fast. However, the arrogance of the language design is really irritating. It's quite enjoyable to write Q as every working line of code makes you feel very clever. That's the biggest problem with it, though.

* Disclaimer: I maintained/wrote Q programs for years in a production environment. I'd never choose Q as a production platform again. It's fast but not because it's cleverly written, it's fast because it does not do anything for you.

<comment><USER8> It doesn't do much for you, true - but after using K for awhile I came to the conclusion that the vast majority of what other languages give you is not required.

Sort of like realizing that a lot of lawyers, finance people and even doctors do not actually provide society at large and even their direct customers any benefit (though having nontrivial cost), and the world would be a better place if there were fewer of them.

<comment><USER13> I came to a similar conclusion when programming using a hex editor and the x86 instruction set manual. Without having to clutter my mind with the abstractions other languages introduce I found I had a ton of free memory to reason about my code and handle much larger portions of code than I usually do. Also, by typing in data directly I avoided having to do the mental translation of thinking about what a compiler or interpreter would do to my code. Additionally, working directly with the data allows plenty of opportunity to write self modifying code to minimize memory usage and optimize program execution to avoid cache misses. I do all my programming in hex editors now and encourage junior developers at my company to do the same.

<comment><USER8> I'm sure this was supposed to be funny. But unlike x86 hex coding, people actually get stuff done in k/q - in fact stuff that runs faster and better than equivalent systems in C++ and Java. So the reduction ad absurdum does not, in fact, add to the discussion.

<comment><USER13> What are you talking about. I assure you we get a lot done at the office doing x86 coding in hex, and even more in MIPS due to the simpler instruction set.

<comment><USER8> Can you still find usable MIPS hardware these days? You're probably eschewing keyboards and monitors as well, and program $20 routers by toggling connections on their serial ports.

</comment></comment></comment></comment></comment></comment><comment><USER14> NumPy is an array oriented library/language too. Idiomatic NumPy usage is quite terse too. I can see how you can start with NumPy like syntax and then want something still more terse, but starting from K/Q seems quite hard.

<comment><USER8> It's more than just terser notation for numpy-style operations. Q (verbose K) reads cleaner than numpy code - closer to English, in fact, without giving up any speed. K is the terse mathematical notation for that language.

K has 3 types: atoms, lists, and dictionaries. (atoms can be int, char, float, symbol, time or function). No objects, no strings, not even files. And yet, it is enough to express many algorithms concisely and efficiently, with bugs largely reduced to the class of off-by-one family.

The syntax is not just a superficial aspect of the language - it is fundamental to its evolution.

</comment></comment><comment><USER15> I have a fear that the problem with these APL family languages is that they ruin coding in any other language for you.

<comment><USER8> That, in fact, sort of happened to me.

But would you rather remain blissfully unaware?

<comment><USER15> I want to reach Satori, but the Iversonian enlightenment may be too powerful to bear for a mere ALGOL-like accustomed mortal.

⍝

</comment></comment></comment><comment><USER16> I didn't 'get' K until I read an interview with Arthur Whitney in the ACM Queue. Apart from performance, you're also getting craftsmanship.

[http://queue.acm.org/detail.cfm?id=1531242](http://queue.acm.org/detail.cfm?id=1531242)

It turns out he rewrites the whole compiler from scratch in C every four years.

This is a snapshot from the source code of 'J' also by Arthur Whitney - <USER2> precursor to 'K'.

[http://keiapl.org/rhui/remember.htm#incunabulum](http://keiapl.org/rhui/remember.htm#incunabulum)

This is it described by Ken Iverson:

"The final impetus that got J started was the one-page interpreter fragment that Arthur wrote, recorded in Appendix A of An Implementation of J [29] and also reproduced in Appendix A below. My immediate reaction on seeing the page was recoil and puzzlement: it looked nothing like any C code I had ever seen. ("Is it even C?") However, Ken counselled that I should reserve judgment. "

[http://keiapl.org/rhui/remember.htm](http://keiapl.org/rhui/remember.htm)

</comment><comment><USER17> We use a lot Q (K's kind of successor) and kdb+ at work pretty daunting at first but the performance is amazing.

</comment><comment><USER18> I have a really hard time understanding what APL-likes are useful for. I guess I don't do a lot of stuff with big vectors, but I feel like it would be hard to structure code (maybe you don't need to?)

<comment><USER8> Well, it is very different - but if you have for loops anywhere, then K is probably useful for what you do. It's like reading/wriing Japanese kanji for an English speaker - it looks foreign, but it is equally capable and much terser.</comment></comment>


Google+'s Numbers Aren't as Impressive as Everyone Thinks - <AUTHOR> http://www.theatlantic.com/technology/archive/2011/07/google-s-numbers-arent-as-impressive-as-everyone-thinks/242375/

<comment><USER2> >Google+ : Traffic peaked the week from July 5-12 and has since declined. I'm not surprised. Who is - and why?</comment>


Helm – a free polyphonic synth with lots of modulation - <AUTHOR> https://github.com/mtytel/helm <comment><USER2> I've been using this for a while (and occasionally post a preset on Patreon). This synth has some of the easiest to use built-in automation I've seen.

<comment><USER3> It also works on linux! Which is typically slim pickins' for plugins.

</comment></comment><comment><USER4> This is the third project that I've known with this name. The other two are an emacs incremental completion plugin:

[https://emacs-helm.github.io/helm/](https://emacs-helm.github.io/helm/)

and a haskell functionally reactive game engine:

[http://helm-engine.org/](http://helm-engine.org/)

<comment><USER5> Not to mention k8s package manager:

[https://github.com/kubernetes/helm](https://github.com/kubernetes/helm)

<comment><USER6> To be totally fair, this came out before k8s's helm: [https://github.com/kubernetes/helm/releases/tag/v1.0](https://github.com/kubernetes/helm/releases/tag/v1.0)

</comment></comment></comment><comment><USER7> Would be awesome I could easily send it patches and MIDI messages from the browser via websockets to offload some of the heavier synth generation that the Web Audio API can't handle.

</comment><comment><USER8> +1 for supporting Linux

</comment><comment><USER9> open source synths are always welcome! Great job

<comment><USER10> They sure are! Another great open source synth that is currently tearing up a storm in the music-making world is VCV Rack:

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

This app allows one to create - quite reliably - a modular synth system of your dreams, with many emulations of existing hardware modules being produced by the designers of those modules, themselves!

And .. there are more modules released every day. So many modules its hard to keep track of, actually.

So, if you're a synth nerd, get a look at VCV Rack .. seriously with this and Helm, not really much point in running other soft synths, at this point! :)

</comment></comment><comment><USER11> This might be juvenile, but is it only in British English that this name is funny ?

<comment><USER12> I'm guess I will have to look up the alternative definition, but to me, a helm is the facility full of the controls from which you drive a ship

<comment><USER13> Yep don't get it either and British English is my native tongue. Maybe mistook for the phallic implication of "helmet"?

</comment></comment></comment><comment><USER14> Have you ever heard of Kubernetes, a tool that is so much in the upswing that it dominated the last Amazon announcements, that Docker decided to integrate with it despite being its competitor in some regards, that hundreds of thousands of engineers suffer to use for some time now because our bosses heard it would be a cool thing at some conference (and bosses don't really care if such a software is finished or not)?

If so, you might want to reconsider the name of your tool/framework/whatever, because the name Helm is basically taken in many engineers' head.

<comment><USER15> This may surprise you, but DevOps engineers are probably not the primary intended audience of this project.

<comment><USER16> And another pretty big, and probably different, audience: [https://emacs- helm.github.io/helm/](https://emacs-helm.github.io/helm/)</comment></comment></comment>


Popular Fruit Juices Contain High Levels of Heavy Metals, Consumer Reports Says - <AUTHOR> https://dailyvoice.com/connecticut/fairfield/lifestyle/popular-fruit-juices-contain-high-levels-of-heavy-metals-consumer-reports-says/747609/ <comment><USER2> Good grief that's a frustrating article. Which juices?!?

The link to the actual findings: [https://www.consumerreports.org/food- safety/arsenic-and-lead...](https://www.consumerreports.org/food- safety/arsenic-and-lead-are-in-your-fruit-juice-what-you-need-to-know/)</comment>


Google Begins Soft Censorship Of Arbitrary Piracy-Related Queries - <AUTHOR> http://techcrunch.com/2011/01/26/google-begins-soft-censorship-of-arbitrary-piracy-related-queries/

<comment><USER2> It's obviously worsening user experience with Google search. Why would Google need it?</comment>


Ask HN: Way to Make a Backup of Bookmarks - <AUTHOR> I constantly bookmark pages in Firefox, and often upon returning to the bookmark, the page has been removed or changed significantly.<p>Does anyone have any good suggestions for archiving a snapshot of a page along with the bookmark? <comment><USER2> I kind of remember an extension with this functionality but I cant find it right now.

<comment><AUTHOR> So far I've found this which might work

> bookmark manager with page archiving functionality

[https://addons.mozilla.org/en- US/firefox/addon/scrapyard/](https://addons.mozilla.org/en- US/firefox/addon/scrapyard/)</comment></comment>


The Solo5 Unikernel - <AUTHOR> https://github.com/djwillia/solo5 <comment><USER2> There's a lot of activity going on in this space right now, which is great. I was working on my own project very similar to this one, which I called 'fleet':

[http://www.github.com/marssaxman/fleet/](http://www.github.com/marssaxman/fleet/)

I've recently decided to stop working on this and to start contributing to IncludeOS instead, since they have a lot of energy and good ideas, and they're getting farther than I was on my own:

[http://www.github.com/hioa-cs/IncludeOS/](http://www.github.com/hioa- cs/IncludeOS/)

One great thing about unikernels is that fragmentation is not really a problem: it's a good thing to have a healthy, diverse ecosystem of unikernel libraries adapted for different purposes.

<comment><USER3> > _" One great thing about unikernels is that fragmentation is not really a > problem: it's a good thing to have a healthy, diverse ecosystem of unikernel > libraries adapted for different purposes."_

I agree with having a diverse set of libraries but we need to take care that we solve _common_ problems in a consistent way. For example, passing config parameters into unikernels, how they get deployed to common cloud platforms and even how we monitor and log activity. For unikernels to become mainstream, we need to ensure we don't fragment _this part_ of the toolchain (silos won't help adoption). It's part of why [https://devel.unikernel.org](https://devel.unikernel.org) exists -- to share solutions and converge on tooling.

</comment></comment><comment><USER3> There's an introductory blog post at [https://mirage.io/blog/introducing- solo5](https://mirage.io/blog/introducing-solo5)

(And a new discussion site for unikernel development at [https://devel.unikernel.org](https://devel.unikernel.org))

</comment><comment><USER4> from the [https://mirage.io/blog/introducing- solo5](https://mirage.io/blog/introducing-solo5)

> So far I've found that generating a bootable iso with GRUB as a bootloader > and relying on QEMU to emulate BIOS calls to load the kernel is, by the > nature of emulation, inefficient and something that should be avoided.

afaik, loading the unikernel directly with `qemu -kernel` avoids that?

<comment><USER5> > afaik, loading the unikernel directly with `qemu -kernel` avoids that?

(author here)

Thanks for this. I believe you are correct, though I have not yet had a chance to benchmark it.

It seems like there are a few different "shortcuts" that pre-load the kernel into memory (like `qemu -kernel`) from different tools. For example, I know also of `kvmtool` used in the clear containers project[1].

I'm not sure if all of them choose multiboot[2] as their standard and it's not clear how much of a traditional boot could or should be pushed into the hypervisor. `kvmtool` prepares a 64-bit environment with the Linux "zero page" structure instead of multiboot.

From a unikernel perspective I think this is an interesting question to ask, because typical CPU setup including page tables (direct map is common for such a simple kernel) and segment registers, etc. will likely all be boilerplate. It will almost certainly be faster to preload the CPU and memory than to do it at boot time. (At the cost of reducing the number of hypervisors that can boot the kernel)

[1]: [https://lwn.net/Articles/644675/](https://lwn.net/Articles/644675/) [2]: [https://www.gnu.org/software/grub/manual/multiboot/multiboot...](https://www.gnu.org/software/grub/manual/multiboot/multiboot.html)

</comment></comment><comment><USER6> Interesting project. I'm curious why he called it Solo5 in case I've seen what inspired it.</comment>


Why Twitter Is Dying - <AUTHOR> http://www.mumbaimirror.indiatimes.com/columns/columnists/pritish-nandy/Why-Twitter-is-dying/articleshow/54800799.cms <comment><USER2> Js Ad-blocker-blocker blocking the site => goodbye Times of India.

<comment><USER3> Fine for me in uBO.

<comment><AUTHOR> Worked fine for me too.</comment></comment></comment>


Unicorn CPU emulator engine released - <AUTHOR> https://github.com/unicorn-engine/unicorn <comment><AUTHOR> The project page is here [http://www.unicorn-engine.org/](http://www.unicorn- engine.org/)

I think the project is fascinating. I wanted to build something similar, but unlike the authors of Unicorn I was doing everything from scratch.

The idea was that it would be a plugin for a debugger to aid dynamic analysis so that you could "execute" some piece of code(instructions) with the current values in real memory and registers and see what the end values will be and where the code will go/do. And then perhaps step-back and forth through the emulated code to see the execution in real-time. Made a mistake? Roll-back and change the emulated values see what jump or what result it gets.

</comment><comment><USER2> [https://news.ycombinator.com/item?id=9989609](https://news.ycombinator.com/item?id=9989609)</comment>


List of selfie-related injuries and deaths - <AUTHOR> https://en.wikipedia.org/wiki/List_of_selfie-related_injuries_and_deaths <comment><USER2> I don't think selfies are really the crucial common factor here. It seems to be more of a general "hey guys, watch this" thing, and selfies are just one way of communicating that. Doesn't make it any less sad though.

</comment><comment><USER3> There should be a ,,selfie related intimate acts with attractive people'' list as well to see how advantages and disadvantages of selfies balance out, but I think the advantage part wouldn't fit on a wiki page.</comment>


Thin Film Transforms Any Surface Into a Massive Multitouch Screen - <AUTHOR> http://singularityhub.com/2011/09/18/thin-film-transforms-any-surface-into-a-massive-multitouch-screen/

<comment><USER2> Has singularityhub ever published anything of actual worth, rather than rewrites of press releases?

</comment><comment><USER3> How much does the Touch Foil cost? I'm seeing huge price ranges ($999-19999), I assume it varies based on size and multi vs single touch capability?

Has anybody on HN used this stuff?

<comment><USER4> I went looking around for where I could buy some but it's like some military secret. Call our partners, call for a price. WTF, I just want some to play around with.

<comment><USER5> Sadly, so much of the web deals with online pricing in the same way and it's incredibly frustrating.

</comment></comment></comment><comment><USER5> Could you buy a cheap 46"ish LCD, lay it flat as a table with an enclosing bezel, and then use this technology to create touchscreen coffee tables cheaper than MS Surface was offering?

Have always wanted something like this to browse photos, queue up music or videos, browse a TV guide, deal with home automation, security cameras, etc.

</comment><comment><USER6> Sounds like this might be a cheap way to the touchscreens that Windows 8 users will be demanding.

It is absolutely not going to make any sense at all to ship a Windows 8 laptop without a touchscreen, though as seems to be the case sometimes, maybe we can expect Apple to blaze a trail and put a (larger) touch surface on the MBP line.

<comment><USER7> I think the question is still on whether touch screens are a good idea for laptop screens. Even when used on the lap, with the screen almost horizontal, I have my doubts; I think the screen may be too far away from the body to prevent gorilla arm syndrome. With the laptop on a table, that risk increases.

On the other hand, A laptop with a rotatable screen that can be transformed into a tablet would benefit from a touch screen.

</comment></comment><comment><USER8> Anyone know if this uses the SoundTouch patent?

<http://www.faqs.org/patents/app/20080284755>

<comment><USER9> The article talks about "nanowires" embedded in polymer, so no this isn't acoustic.

</comment></comment><comment><USER10> A blog named "singularity hub" that spends two paragraphs questioning the use of massive touchscreens on any surface? Huh.</comment>


Ask HN: Short stories that take advantage of the web as a medium? - <AUTHOR> Hi HN,
Anybody know of any short stories that take advantage of the web as a medium in the way that Huffpo Highline or eminently the NyTimes Visual Stories use the web as a medium?
Huffpo Highline: https://highline.huffingtonpost.com/index.html
Example Highline Story: https://highline.huffingtonpost.com/articles/en/nick-ayers-mike-pence/
Nytimes Visual Stories: https://www.nytimes.com/interactive/2017/12/21/us/2017-year-in-graphics.html
Example Nytimes Visual Story: https://www.nytimes.com/interactive/2017/02/24/travel/underground-railroad-slavery-harriet-tubman-byway-maryland.html <comment><USER2> I think this might be close to what you are thinking about:

[https://www.sbnation.com/a/17776-football](https://www.sbnation.com/a/17776-football)

I'm hoping your post gets more responses too because it is an area of storytelling that I am interested in as well. I have been wondering why such stories and even interactive fiction elements have not made there way to the web. I assume I am actually just ignorant of some great communities and stories out there though.

<comment><AUTHOR> That's interesting, I haven't seen that before.

> I assume I am actually just ignorant of some great communities and stories > out there though.

I agree, I'm sure some people have done it. We just aren't aware of it.

I'm interested in people taking advantage of the unique things you can do with the web like motion graphics with D3. If you look at the nytimes visual stories I linked, they do things like move the text with you along the map as you scroll. It's a totally unique way to immerse a reader on the web into the setting. There's already visual essays out there on youtube like Vox and radio plays have picked up steam in the world of podcasts. It would seem that this is the web frontier for authors to try.

This essay by David Foster Wallace makes an interesting use of annotations for DFW's annotation heavy writing style. It actually creates a better experience than the experience in print: [https://www.theatlantic.com/magazine/archive/2005/04/host/30...](https://www.theatlantic.com/magazine/archive/2005/04/host/303812/)

I think people would pay 8 or 9 dollars for a novel with well done graphics online. That would be virtually all profit.</comment></comment>


Ask HN: What is the norm for email validation? - <AUTHOR> For email validation, what is the norm for mobile apps? Are people making a service call to third-party like Mailgun, or checking on the client side?<p>I'm trying to come up with the options on the service side and client side, and what options exist in the Rails environment already. I feel like our CTO is more inclined to go with what other tech companies are using on the mobile apps. <comment><USER2> You can, and should, knock out the really obvious stuff with regex validation but you're smart to be concerned about one thing that most people miss in this conversation.

 __ _A confirmation email doesn 't solve the problem if the user mistyped the address to begin with._ __You 're right, they wait for a confirmation email that never comes.

Using a third party service like BriteVerify's rest api is the only way to get an actual verification that the inbox exists.

</comment><comment><USER3> Related (was on Hacker News)

"On the Futility of Email Regex Validation"

[https://jackfoxy.github.io/FsRegEx/emailregex.html](https://jackfoxy.github.io/FsRegEx/emailregex.html)

<comment><AUTHOR> Thanks for the read, @aonoma....something good for my commute home.

</comment></comment><comment><USER4> Send the user a verification mail.

<comment><AUTHOR> We do that, but I don't want our server sending a verification email to "email@example.com", it should fix that on the input field.

<comment><USER5> .con might be a valid TLD though, there's so many TLDs now.

Just send a verification email...

<comment><AUTHOR> We do...but then people wait for a verification email that will never arrive (.con vs .com). Ideally, we want to fix this before they register their account. Looking for server-side (rails), service calls and client-side options.

<comment><USER5> I know Mandrill has webhooks that can notify you of events such as bounced emails.

[https://mandrill.zendesk.com/hc/en- us/articles/205583217-Int...](https://mandrill.zendesk.com/hc/en- us/articles/205583217-Introduction-to-Webhooks)

Wouldn't integrating this help solve the issue, as you can possibly check if you received a bounce for that email shortly after the user attempts to register, and then notify them on the screen?

</comment></comment></comment></comment></comment><comment><USER6> I use JS validation library + Mailcheck.js on the front end. The regex checks for format and mailcheck validates second and top level domains. Coupled with a verification mail this is good enough for me.

</comment><comment><USER7> What about passwordless, email-based login? It's easier than username/password login, it verifies the email address, and it provides the same level of security (assuming password can be reset via emailed link).

<comment><AUTHOR> Cool concept, but would require a complete revamp of our sessions infrastructure....I am looking to slap something on to our codebase to check email formatting after the '@' symbol.

<comment><USER8> The Firefox browser source code has a list of current TLDs, IIRC. There's over a thousand. You could use that to at least verify the TLD part.

The following may not work for your use case and I'm no expert in the area, but it could be possible to write a simple shell script to dig the mx records, and fail out if there's no such, and if you wanted to go a step further, you could open SMTP, and fail out if you can't, and if you wanted to go a step further you could even on the mx maybe even do a direct ping or some other lookup of the address part in that session, so long as the server is not a catchall. I feel the total bandwidth outlay would be no more then a small http roundtrip. Tho you might get a bit of hit on the connection time, or retries, as my feeling is not all SMTP hosts are speedy. Thanks

</comment></comment></comment><comment><USER9> If you're only worried about the domain aspect, and want a super simple approach just check if you can resolve the hostname.

<comment><AUTHOR> I want to be checking for errors after the '@' symbol, such as @gmial.com or @gmail.con

<comment><USER9> Right so as I said, do a hostname lookup: if you get a result (ie not nxdomain) then it's ok, if not, it isn't registered, is a non existent tld, or has no records, all of which mean mail will fail.</comment></comment></comment>


The empirical evidence that types affect productivity and correctness - <AUTHOR> http://danluu.com/empirical-pl <comment><USER2> First of all, this is one of those where differences within categories are much greater than those between categories. I'd rather work at a principled Python shop than a sloppy Scala shop. If you use nulls and go overboard with inheritance, Scala becomes unmaintainable as well. I've never seen sloppy Haskell, but quality of people matters more than the language itself and that's probably largely because the Haskell community is small and elite.

That said, for me, it's about flow. (The IDE flamewar gets into the same territory. I just don't like the flow-breaker that is having to use the mouse, when coding.) Writing unit tests can be a flow-breaker. On the other hand, ripping through source code to chase down a NullPointerException (or similar error, like a "List.head []") is annoying at best and extremely disruptive when the error/failure distance is high, as it often can be in dynamic languages. I find, on average, that development is more flowful in statically- typed languages, and even if the development top speed is slower, I think that's made up by the low frequency of flow breakage.

That said, Java's version of "static typing" is abysmal and, in a typical corporate shop, you're never going to get into flow in the first place so it doesn't much matter.

<comment><USER3> _" I've never seen sloppy Haskell"_

I've written sloppy Haskell...

<comment><USER4> Yeah, I've written my share of sloppy Haskell as well.

</comment></comment></comment><comment><USER5> This review is surprising in two ways: how thorough it is and how even-handed. It must have been a lot of work to put together and I'm glad you did it so the rest of us don't have to.

It's refreshing to see posts like this and [http://blog.metaobject.com/2014/06/the-safyness-of-static- ty...](http://blog.metaobject.com/2014/06/the-safyness-of-static-typing.html) pointing out that we don't have strong evidence on this and keeping an open mind. A trend? One can hope.

</comment><comment><USER6> It was hard to really see the author as being objective on the subject after reading the experiment that pitted Perl/Python programs against Java/C++ programs in an application requiring "string manipulation and searching against a dictionary". I'm all for trying to prove this point empirically (though I disagree with the author's stance), but in the least you've got to eliminate as many of these variables as possible (e.g. choosing typed languages that have similar string manipulation and sane collection libraries rather than pretending like working with Java HashMaps is anything near a Python dict).

Other than that, I'd say skip the over dramatized dogma and just pick the tool that suits your problem space best.

<comment><USER7> I'm confused by your comment. The author of this blog post had problems with the experimental design in the paper you're talking about. Specifically, he said: "However, since the scripting language group had significantly different (and easier) environment than the C-like language group, it's hard to say how much of the measured difference in implementation time is from flaws in the experimental design and how much is real."

Said another way, the experimenters picked a task which some of the languages were designed for. Which sounds rather like the point you're trying to make, too. Did you confuse the quoted abstract with this author's comment?

</comment></comment><comment><USER8> td;lr there's very weak evidence either way.

If the long list of evidence is too long for you, then it's totally worth clicking the "click here" link to jump to the author's summary at the end. The summary is readable and useful by itself -- and it is what you're looking for if you really just wanted him to summarize the research for you instead of telling you about all the relevant studies, one by one.

<comment><USER9> For convenience's sake: [http://danluu.com/empirical- pl/#wat_summary](http://danluu.com/empirical-pl/#wat_summary)</comment></comment>


CloudFlare's internet-facing SSL cipher configuration - <AUTHOR> https://github.com/cloudflare/sslconfig <comment><USER2> Here's Mozilla's version: [https://wiki.mozilla.org/Security/Server_Side_TLS#Recommende...](https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_Ciphersuite)

<comment><USER3> That. I really appreciate being able to read the motivation behind chosen cipher set.

Furthermore, they have great config examples for nginx and others[1] -- it's pretty easy to forget/misconfigure things like Diffie-Hellman parameters, OCSP stapling and session caching.

[1] [https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx](https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx)

</comment></comment><comment><USER4> Anyone else remember back in 2012 when CloudFlare promised to open source their intermediary chain information?

>Going forward, in addition to releasing the directory of intermediate SSL certificates on Github, we plan on releasing our SSL bundler as a free service so you can package up your SSL certificates as efficiently as possible, even if you're not using CloudFlare. Just one more way we're working to make the web fast and safe.

[http://blog.cloudflare.com/what-we-just-did-to-make-ssl- even...](http://blog.cloudflare.com/what-we-just-did-to-make-ssl-even-faster)

I _hate_ companies who lie about releasing stuff. If you look through CloudFlare's blog this isn't even the only example- they love promising to be open and give back to the community, but rarely do their actions match their words.

<comment><USER5> And comments like this are why companies hate to say anything publicly!

If a company says "we plan to..." then odds are they are telling the truth. At the time of writing that is exactly what they were planning to do. It turns out that sometimes plans change. Or planned things take longer than initially planned for.

But of course if you ever say anything on the internet people treat it like a _promise_ and then you get called a liar. This is why we can't have nice things.

<comment><USER6> If a person or organization says that they're going to do something, even if it's qualified as only being "planned", it is indeed a promise to act.

Reputable people and organizations who make such statements will then proceed to deliver. If they suspect they won't be able to, for whatever reason, then they'll be careful not to make such statements in the first place.

There's absolutely nothing wrong with holding people and organizations to a very high standard regarding what they've publicly claimed that they will or aim to do.

<comment><USER7> You seem to have an excessively narrow definition for planning. If I plan to go to the gym today and it turns out that I do not, would you really say that I broke a promise? Something else came up and I changed my plans. It's possible I lied to you when I told you about my plans, but that is not the same thing as breaking a promise.

</comment></comment></comment></comment><comment><USER8> We ([https://commando.io](https://commando.io)) use:

           ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";

Which results in perfect forward secrecy and an A+ rating in SSL Labs.

<comment><USER9> Which means you shouldn't trust that A+ single metric without actually looking at the browser list or testing it yourself. I just opened your site on Debian unstable with latest Iceweasel/Firefox 24.5.0, and I get connected via RC4.

Arguably thats also NSS's fault for implementing TLS1.2 so late, but still...

My site only gets an "A" rating, but Firefox actually connects using ECDHE- RSA-AES256-SHA. I use this cipherlist

      HIGH:!SSLv2:!aNULL:!3DES

Which one is more secure?

<comment><USER10> The difference between A and A+ is in Strict-Transport-Security HTTP header.

</comment></comment></comment><comment><USER11> I use [https://www.ssllabs.com/ssltest/](https://www.ssllabs.com/ssltest/) to get my SSL in shape.

I couldn't believe how much my setup failed the first time I ran it.

</comment><comment><USER12> If I have multiple VirtualHosts defined in Nginx for my two personal websites, should I define these ciphers in each file in sites-enabled or define them in the /etc/nginx/nginx.conf file?

Totally realise this is a Newbie question, but I'm finding it hard to get an authoritative answer from my bumbling Googling. I really want to get this right and I thought that the hive mind here on Hacker News would be able to give me an answer that I could trust.

Please downvote this if I've made a faux-hacker-pas, but be kind to the new guy! :-)

</comment><comment><USER9> I'm not a fan of explicitly listing cipher names: when new ciphers are added you have to revise your list again, etc.

I very much prefer the simplistic approach taken by OpenSMTPD:

[http://www.openbsd.org/cgi- bin/cvsweb/src/usr.sbin/smtpd/ssl...](http://www.openbsd.org/cgi- bin/cvsweb/src/usr.sbin/smtpd/ssl.h?rev=1.7)

      #define SSL_CIPHERS		"HIGH:!aNULL:!MD5"

<comment><USER13> It really bothers me that 3DES is counted in the HIGH set in OpenSSL. The HIGH set, in my mind, should include only strong ciphers that would make sense to deploy in a new product today. Otherwise, I would love to just say to the crypto library, "give me strong ciphers only".

<comment><USER14> In what sense is 3DES not strong?

<comment><USER9> Its security strength is less than 2^128, doesn't mean its completely broken but there are better alternatives: [https://en.wikipedia.org/wiki/Triple_DES#Security](https://en.wikipedia.org/wiki/Triple_DES#Security)

</comment></comment></comment></comment><comment><USER15> Can somebody explain why they are still using RC4 in their configuration?

[https://community.qualys.com/blogs/securitylabs/2013/03/19/r...](https://community.qualys.com/blogs/securitylabs/2013/03/19/rc4-in- tls-is-broken-now-what)

<comment><USER16> [http://blog.cloudflare.com/killing-rc4](http://blog.cloudflare.com/killing- rc4)

It's to balance the need to protect against BEAST vs RC4 issues. They use an OpenSSL patch that "disables RC4-based cipher suites for connections using TLS v1.1 and above, while leaving them there to protect users still using TLS v1.0"

</comment></comment><comment><USER17> What are the best tools for tracking this, in general, for third party sites? I tend to use the Qualys SSL Test and EFF SSL Observatory, but there have to be other/better tools.

</comment><comment><USER18> Youtube requires RC4 for some reason, I don't understand it.

<comment><USER10> sslscan --no-failed youtube.com:

      Supported Server Cipher(s):
        Accepted  SSLv3  256 bits  ECDHE-RSA-AES256-SHA
        Accepted  SSLv3  256 bits  AES256-SHA
        Accepted  SSLv3  168 bits  ECDHE-RSA-DES-CBC3-SHA
        Accepted  SSLv3  168 bits  DES-CBC3-SHA
        Accepted  SSLv3  128 bits  ECDHE-RSA-AES128-SHA
        Accepted  SSLv3  128 bits  AES128-SHA
        Accepted  SSLv3  128 bits  ECDHE-RSA-RC4-SHA
        Accepted  SSLv3  128 bits  RC4-SHA
        Accepted  SSLv3  128 bits  RC4-MD5
        Accepted  TLSv1  256 bits  ECDHE-RSA-AES256-SHA
        Accepted  TLSv1  256 bits  AES256-SHA
        Accepted  TLSv1  168 bits  ECDHE-RSA-DES-CBC3-SHA
        Accepted  TLSv1  168 bits  DES-CBC3-SHA
        Accepted  TLSv1  128 bits  ECDHE-RSA-AES128-SHA
        Accepted  TLSv1  128 bits  AES128-SHA
        Accepted  TLSv1  128 bits  ECDHE-RSA-RC4-SHA
        Accepted  TLSv1  128 bits  RC4-SHA
        Accepted  TLSv1  128 bits  RC4-MD5

      Prefered Server Cipher(s):
        SSLv3  128 bits  ECDHE-RSA-RC4-SHA
        TLSv1  128 bits  ECDHE-RSA-RC4-SHA

Seems like a problem in cipher ordering?

<comment><USER18> You need to be looking at the sites serving the video ( r4---sn- nx57yn7k.googlevideo.com ) not the player itself.

[https://gist.github.com/anonymous/793efa92b17c8f727a1f](https://gist.github.com/anonymous/793efa92b17c8f727a1f)

I used [https://github.com/DinoTools/sslscan](https://github.com/DinoTools/sslscan) instead of the one that ships with homebrew.

My favorite preferred cipher is

            SSLv2  0 bits    (NONE)

I try and use that whenever I can.

</comment></comment></comment><comment><USER19> Shouldn't nginx default to the best cipher set?

<comment><USER15> The best cipher set might not be the best for everybody.

</comment></comment><comment><USER20> How does my set up compare to the one CloudFlare and Mozilla is using

       ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM;

<comment><USER9> Don't enable the MEDIUM ciphers, don't use RC4.</comment></comment>


How Math's Most Famous Proof Nearly Broke (2015) - <AUTHOR> http://nautil.us/issue/67/reboot/how-maths-most-famous-proof-nearly-broke-rp <comment><USER2> I can recommend Simon Singh's book on this topic, his writing is rather captivating (The Big Bang is one of the best books I've read, so is the Code Book). He also made a BBC documentary on the topic.

[https://simonsingh.net/books/fermats-last- theorem/](https://simonsingh.net/books/fermats-last-theorem/)

<comment><USER3> +1 for the movie. It used to be on youtube but I can't find it right now. Perhaps the BBC had it removed. This is the finest moment in the movie, for me, when Wiles describes the moment when everything clicked. The whole movie is well worth watching.

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

<comment><USER4> Look at Vimeo instead.

</comment></comment></comment><comment><USER5> Is it really fair to say that Wiles proof is the most famous in mathematics? Seems to me like something like the Euclid's proof of the infinitude of the primes might be more well known? Or the standard geometrical proof of Pythagoras theorem?

<comment><USER6> It's certainly true that far more people understand and know how to prove the infinitude of the primes than understand/know how to prove Wiles' proof. Wiles' result has received far more press coverage in the last 30 yeas though. In this sense it is more famous.

</comment></comment><comment><USER7> An amazing (word of a number theorist) documentary from the BBC's Horizon program: [https://www.dailymotion.com/video/x223gx8](https://www.dailymotion.com/video/x223gx8) You can see Wiles crying when he talks about his work.

</comment><comment><USER8> This brings up a question I have. Is there a way we can code up proofs in a computer language and have it checked for correctness? If so, how? What resources can I follow up on? Can current technologies check really complicated proofs like this one?

<comment><USER9> This is not as easy as some comments here imply. Basically, there are 3 popular languages used for this in a academia and the industry: Coq, Isabelle/HOL and Agda. They're all extremely different languages doing different things (but their end goal is the same: formalizing and automating proving). Coq and Agda are intuitionistic by design, you need assume lem to be classical. Agda has a Haskell heritage so it's purely functional other two are more "procedural". Coq has 2 languages built into it, a tactic language and a language go write types in.

Anyway this is one of the hottest research topics in CS. I know we keep seeing deep learning papers all the time, one might think this is the only thing happening in CS world. Currently it is nowhere near easy to formalize a complex enough theorem in a system like this. Good news is there is a large chunk of certain theories (like homotopy theory) already formalized for you, so you can go ahead and use them as libraries.

The biggest challenge is mathematics is written for humans, it is not meant to be formal. When you formalize theorems you start proving smallest shit you'd never have thought that would need a proof. You even need to prove things like what it means x == y and that for all x, x==x. There is no AI involved in this currently, so it's a very manual, intellectually complicated and long process. These systems have a proof finder built into them which performs a tree search with heuristic to help you, this usually makes manual proofs easier, but usually only marginally easier and you still have to micromanage your proofs.

Keywords you can search: automated theorem proving, dependent type theory and homotopy type theory.

<comment><USER10> To be clear though, all the mentioned languages are built on purely functional programming. Coq and Isabelle are more "procedural" in that they include special proof languages that express proofs in a step-by-step way that feels procedural, but the programs and definitions one proves properties of are still expressed in a functional style.

It's true that one needs to prove a lot of trivial things in all these systems, but the extent of this varies dramatically based on how much automation they provide. For example, Agda includes only minimal, barebones proof automation, while both Isabelle and Coq allow using more sophisticated automation that can take care of a lot of trivial steps automatically (such as "x == x").

<comment><USER11> > they include special proof languages that express proofs in a step-by-step > way that feels procedural

Serious proof developments don't even use the languages in a procedural way. They use "declarative" idioms/patterns that are structured more like a very detailed human proof. This is because "procedural" interaction with the proof state is extremely fragile (it's like raw assembly code, the slightest change in any part of the proof can break basically everything else in it) plus it actually requires "replaying" the proof in order to have any chance of understanding how it works. Declarative idioms can be read and understood directly, at least to some extent.

</comment></comment></comment></comment><comment><USER12> That was quite an enjoyable read.

It's so interesting that a problem so simple to explain would require hundreds of pages of proof.

I'm really interested in whether the Collatz conjecture will be proven too.

<comment><USER13> Maybe you'll like this FLT related story too, it's the most worthwhile numberphile video:

[https://m.youtube.com/watch?v=nUN4NDVIfVI](https://m.youtube.com/watch?v=nUN4NDVIfVI)

</comment></comment><comment><USER14> What are the practical ramifications of FLT? It sounds like there may be crypto implications w elliptical curves.

<comment><USER15> What's interesting about FLT is that in the sense of proving a hypothesis, although the attempts themselves have lead to failures in their objective, they often illuminated whole new areas of mathematics, but this realization only comes somewhat later than when the proof is realized. It was obvious that a particular attempt had failed relatively quickly, but the lessons learned and their applications required a keen (creative mathematical) eye to spot.

Badiou (a continental political philosopher interested in the philosophy of mathematics) uses FLT as an example in political contexts, to what extent we can say that a utopian vision has failed even if it results in disaster, we should be (and some have been) looking out for the lessons which are learned after failure.

<comment><USER14> That last sentence about Badiou, whoever that is, was a sharp turn to the left.

</comment></comment></comment><comment><USER16> Interesting read. Wikipedia recounts the tale as well - [https://en.wikipedia.org/w/index.php?title=Fermat%27s_Last_T...](https://en.wikipedia.org/w/index.php?title=Fermat%27s_Last_Theorem&oldid=871657366#Wiles's_general_proof)

</comment><comment><USER17> A 200 page proof even if it is correct may not be the most elegant proof for this problem since Fermat noted that his proof was too long to fit on the margin. This suggests at most a one page proof.

Also I'm curious if it can be proved that only one proof is possible. There are several independent proofs of the Pythagoras theorem.

<comment><USER18> Fermat could have been mistaken about his proof, however.

<comment><USER17> That's a possibility. But I still think there must be a more direct proof. A shorter proof that can be understood by anyone who is familiar with Euclid. I believe a proof by using only mathematical methods known to Fermat must be possible.

<comment><USER19> You can make any proof as short as you want. Length of proof means almost nothing; it is a function of the language you choose to use.

<comment><USER17> > You can make any proof as short as you want.

If so why did Wiley choose to write a 200 page proof while he could have stated it in one sentence?

<comment><USER19> Because he was writing for a specific class of predetermined parsers, rather than an arbitrary one which was optimized for his proof.</comment></comment></comment></comment></comment></comment>


No sessions on Hackernews? - <AUTHOR>

Every single time I want to vote or comment here I have to login again even if another browser tab is open and I am logged in there (I use the Clickpass option). Refresh does not help. Anyone else having the same problem? I'm with Chrome on Ubuntu <comment><USER2> I had this happen yesterday with Chrome on Mac</comment>


Apple's New Developer Agreement Unlevels the iAd Playing Field - <AUTHOR> http://www.wired.com/epicenter/2010/04/with-new-developer-agreement-apple-unlevels-the-iad-playing-field/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+wired%2Findex+%28Wired%3A+Index+3+%28Top+Stories+2%29%29

<comment><USER2> > The company told a developer whose app it was rejecting: "It is not > appropriate for applications to gather user analytics. Specifically, you may > not collect anonymous play data from a user's game."

OK, that's pretty crazy if true.

<comment><USER3> I doubt the authenticity of this quote. Or maybe it was taken out of context.

For one, the agreement prohibits transmission of data to third parties, not to the developer himself.

Another thing is that the new agreement is part of new SDK 4.0 and it is not yet in effect - Apple does not accept 4.0 apps for app store distribution, and so could not have reject an app on these grounds.

EDIT: apparently, it's the device data that I talk about above. User data is governed under "need to know" rule: " _All use of User Data collected or obtained through an Application must be limited to the same purpose as necessary to provide services or functionality for such Application._ ". Not as clear-cut as I thought... my second point still stands though.

</comment></comment><comment><AUTHOR> They're not just a computer and software maker -- they're a TV station.

</comment><comment><USER4> Jeezus apple. You guys are going to kill your partners (the developers)

</comment><comment><USER5> The Robot Chicken guide to Apple's developer relations: [http://www.youtube.com/watch#!v=BwF7n8WyOoU&feature=rela...](http://www.youtube.com/watch#!v=BwF7n8WyOoU&feature=related)

</comment><comment><USER6> Wouldn't sending metrics to my own server still be the second party. In fact, the device doesn't need to be involved at all. The server could record the hit to its API from a device and generated the metrics entirely server side. I assume one could do whatever they want with this data.

Presumably, one could justify creating a url connection to a server on the internet for any reason, for example to let the server knows the users current local time.

</comment><comment><USER7> I'm a little confused by the use of the term "third-party" in this context. In these situations the first two parties are the User and either other Users (for multi-user or social apps) or the application server (for client-server type apps). Does that mean Apple itself (and iAd) is some kind of new zero- party?

<comment><USER8> Since this is the iPhone Developer Agreement we're talking about, Apple is the first party. The developer agreeing to the agreement is the second party. Any outside analytics company being used by the developer would then be the third party.</comment></comment>


The steady gain of humanity - <AUTHOR> http://www.csmonitor.com/Commentary/the-monitors-view/2012/1101/The-steady-gain-of-humanity

<comment><USER2> It looks like this is pretty much a gloss on a press release put out by a non- profit trying to sell their report?

Here's the executive summary of the actual report: [http://www.millennium- project.org/millennium/SOF2012-English...](http://www.millennium- project.org/millennium/SOF2012-English.pdf)

And here's the page where you can buy the whole deal if you want ($10-$40): <http://www.millennium-project.org/millennium/2012SOF.html>

I can't tell so far whether this is offering anything new, or is just a bunch of generalities hacked together by recent-college-graduate consultants to sell to other recent-college-graduate consultants. Has anyone read the report and found it useful?

I thought this bit from the executive summary was interesting -- the variables they're following where they think they have enough data to evaluate the last twenty years and make predictions for the next ten years:

Where are we winning? • Access to water • Literacy rate • Life expectancy at birth • Poverty $1.25 a day • Infant mortality • Wars • HIV prevalence • Internet users • GDP/capita • Women in parliaments • School enrollment, secondary • Energy efficiency • Population growth • Undernourishment prevalence • Nuclear proliferation

Where are we losing? • Total debt • Unemployment • Income inequality • Ecological footprint / biocapacity ratio • GHG emissions • Terrorist attacks • Voter turnout

Where there is no significant change or change is not clear? • Corruption • Freedom rights • Electricity from renewables • Forest lands • R&D expenditures • Physicians per capita

</comment><comment><USER3> I've seen this shared quite a bit around the internet and I'm surprised how many people are surprised by this. The standard of living has, for the most part, continuously risen throughout the course of human history. And with the aid of technology, the rate of improvement is increasing as well. We have problems and it's great to acknowledge them, but personally I have a deep faith in the ability of humans to make things better for themselves. Most of the people I hear complaining about how humans are messing everything up would consider the circumstances under which even rich people lived just 100 years ago to be entirely beneath them.

Regarding the food, water and energy comments, I don't see how that is a problem. Our planet is covered by 70% water and the sun (directly or indirectly) provides enough energy for our food to grow and machines to run.

I wonder if humans are predisposed towards pessimism. Is there some advantage to selectively seeing only the things that aren't going well? From what I hear every generation thought that things were going badly and everything was better in the past. If that was really the case, when would all the improvement have happened?

<comment><USER4> Pessimists are good at identifying threats, prepare for the worst and therefore are more likely to survive when the worst does eventualy happen.

<comment><USER5> Pessimists may be good at identifying threats, but actually preparing for them implies the belief that the outcome _can be changed_ with effort. That's pretty much the definition of optimism.

<comment><USER6> Obviously there's at least one spectrum here.

</comment></comment></comment></comment><comment><USER7> I find it hard to get from, "Food, water, and energy shortages, exacerbated by climate change, could lead to instability and violence and the forced migration of hundreds of millions of people in the future" to, "Yet the probability of a more peaceful world is increasing." Food and water (and to some extent, now, energy) are base needs, and if those end up in short supply, it doesn't matter if we're "winning" or "gaining" in other areas. Fundamentally, a sustainable supply of food and water trumps everything else on that list, and if we end up losing at that, we've lost at everything... just worth keeping in mind.

<comment><USER8> Imagine two scenarios. On the one hand you have a Bangladesh as it exists today struggling against, say, flooding or drought or brownouts. On the other hand you have a Bangladesh that is industrially developed and wealthy (say, as wealthy and developed as South Korea is today). Obviously a wealthy and developed country is going to be better able to deal with such problems, and is going to make it less likely that war or famine result from disasters or adversities.

<comment><USER7> I can see your point, but, taking a longer-term view, what happens when we hit hard limits to global growth?

In a world in which every country is developed and wealthy... where in the world does that material wealth come from? I can't conceive of how such a world could exist without some kind of significant technological breakthrough or massive social change.

<comment><USER8> Are there hard limits to global growth? What are they exactly? What's the evidence that the Earth cannot support a population of 10 billion with wealth equivalent to, say, the current US?

Today there are potential long-term problems in the way we use fresh water and hydrocarbons, but those are not fundamentally insoluble, far from it they are immanently tractable engineering problems. Consider that by the year 2100 the global economy will likely be over a quadrillion dollars in size (in 2012 dollars). And it will be filled with millions upon millions more engineers, entrepreneurs, technicians, and so forth than the world of today. I find it hard to believe that such a world will have trouble growing food or operating desalinization plants or adapting to using nuclear fission power, etc.

None of this requires massive social change or technological breakthroughs, it merely requires that people invest money and effort into engineering solutions to problems as those problems develop, which is something mankind has excelled at for millenia and will be extremely well prepared for in the 21st century.

</comment></comment></comment></comment><comment><USER9> Inequality within countries might be rising, but the last decade was economically the best ever for developing nations, and they have enough of the world's population that the global Gini coefficient has been falling since 2002.

<comment><USER10> But that good news, and goods news don't sell newspaper so it won't be broadcasted.

People want drama and suffering. Talk about a war instead and you'll get more listeners, and thus more money

</comment></comment><comment><USER11> Gains have been and continue to be steady. I quietly smile and take it with a grain of salt when someone longs for "the good old days". People have quite selective memories of their favorite decades.

</comment><comment><USER12> It strikes me as wishful thinking to be optimistic based on the fact that we (supposedly) have the resources to deviate from our current course. If we were already going in the right direction then it would be one thing, but this is like arguing that Romney is the favorite because people will feel bad for him being down in the polls. Doesn't work like that.

<comment><USER4> I think the poInt is that, as a species, we are going in the right direction. Sure the developed world has hit a speed bump and most advanced countries have had a few quarters of recession, but China is doing fine and much of Africa is undergoing a sustained economic boom. There are major challenges, but nothing that can't be overcome. That's nOt an argument for complacency, it's an argument to rise to those challenges and overcome them.

<comment><USER12> It's largely by stealing from future generations that we've been able to solve many short term problems (e.g. hunger), so using the fact that we've solved many short term problems to argue that our civilization will be sustainable in the long term makes no sense.

I think the authors are right that all of our major problems are theoretically solvable. But using the fact that we've solved many problems previously to argue that we're likely to solve all our future problems is not only wrong, but it's in part thinking like this that's why everything is so broken to begin with.

<comment><USER5> > _It's largely by stealing from future generations that we've been able to > solve many short term problems_

This seems to be a fairly unjustified claim. What exactly have we "stolen" from them?

It rather seems that we've _given_ greatly to future generations. We've discovered ways of producing orders of magnitude more food from the same plots of land. We've taught ourselves a good deal about how the universe operates, and (through technology) how to gain control over our lives to a great and growing extent.

<comment><USER12> "We've discovered ways of producing orders of magnitude more food from the same plots of land."

By completely depleting our non-renewable resources: groundwater, soil, and oil.

<comment><USER5> 70% of the earth is covered by water. If need be we can always desalinate with nuclear energy.

Soil? Are you serious? 95% of soil depletion has happened in the last century, true, but we only discovered that soil _can be depleted_ as a result. We also discovered that it can be replenished, and how to accomplish this.

<comment><USER12> "If need be we can always desalinate with nuclear energy."

While I have no doubt that renewable energy, nuclear, and desalination technology will all continue to improve, it's hard to believe that desalinating enough water to grow food for 10 billion people will ever be possible. I have no doubt that civilization will be possible at some level, but the claim of the original article is that things will continue to get better for the 5 billion people who are going to be at the bottom of the pyramid, which seems dubious.

Also, while soil can be renewed, it isn't currently happening. And while it could happen at some point in the future, when we get hit by the triple threat of no more cheap water and oil-based fertilizer it's hard to believe that we're going to be able to fix all three problems at once without first going through a period of mass starvation and/or another world war. It's certainly possible that we'll rise to the challenge through a combination of new technology and competent leadership, but based on the way things are going currently it seems like an outside chance.

<comment><USER5> _It's certainly possible that we'll rise to the challenge through a combination of new technology and competent leadership..._

There you go, that's the beginning of optimism :)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> It's so true that the human race has great prospects in the long term future.

Yet some people lament about short term, inequalities, and so on. It just doesn't matter in the long term.

What really worries me is when we start to sacrifice our future for the present.</comment>


City says steps will cost at least $65,000; man builds them for $550 - <AUTHOR> http://edition.cnn.com/2017/07/20/americas/man-steps-trouble-trnd/index.html <comment><USER2> Already torn out because his steps were not even close to being to code and were dangerous. No footings, wood right on dirt. No landings, trip hazards, poor railing.

There's a reason that the steps cost $10,000 (the real cost to the city) to install. They need to be durable, safe and installed properly.

<comment><USER3> But did they build proper stairs? Because crappy stairs may still be better than no stairs at all. Depending on how crappy, of course. If they look safe but collapse, the crappy stairs might lure people in who wouldn't otherwise try to walk there. Still, I wonder if it wouldn't have made more sense to only remove the cheap stairs when they're going to build the proper stairs.

<comment><USER4> Check out the pictures in the Twitter thread I linked. The "stairs" were literally just a bunch of wood nailed together, sitting on the slope -- the structure didn't even appear to be anchored to the ground. If someone slipped and fell on the (untreated wood) steps, they could easily have knocked the entire structure on its side.

</comment></comment></comment><comment><USER5> I know this makes for good press and beauracy does suck. But bylaws and regulation result in safe and livable cities. If everyone just did as they pleased, it would be chaos. But it is a good reminder to always bring practicality into situations and try to minimize wasted money and time.

<comment><USER6> I see two approaches to general government contracting. One is the proactive approach which would require some government agency to find "approved" vendors and micromanage the project. The other would be a liability approach, which would essentially mean that the overall goal of a project is provided and the lowest bid is taken across a large pool of contractors. However, if it is built very poorly and someone gets hurt, the contractor would be liable in court. The proactive approach has its appeal, but often results in higher costs and not necessarily better quality since the vendors and requirements are set by politicians and unaccountable, unelected committees.

I believe we are closer to the first in most cities, but I would much rather prefer the second.

<comment><USER7> The second falls victim to fly-by-night contracting companies that are created for a specific project and then disappear in a puff of smoke once it is done and their check clears. The liability approach fails constantly because the vendor is able to easily shield themselves from the liability and then the public is left holding the bag. If the public is going to end up being the only available deep pockets for such torts then it has the responsibility to make sure that the project is built to a sufficient standard to not endanger the public and to meet the specified goals.

</comment></comment></comment><comment><USER8> I appreciate what he was trying to do but his installation didn't look safe, with apparently no attempt to do it to code. He wouldn't feel too clever if they led to injury. Slipping on steps hurts a lot more than slipping on a muddy slope.

<comment><USER3> The lack of stairs had already lead to injury, though.

The price comparison in the title is indeed unfair.

</comment></comment><comment><USER9> These stairs were poorly executed and will need to be removed for safety reasons. However when done to the correct standards this sort of guerrilla infrastructure can last and make a difference.

[https://www.good.is/articles/the-fake-freeway-sign-that- beca...](https://www.good.is/articles/the-fake-freeway-sign-that-became-a- real-public-service)</comment>


What should a striving non-programmer do? - <AUTHOR> I have all of these ideas for a startup burning inside me, but with no real programming skills and no partner (yet) I feel trapped.  Is it worth my time to teach myself programming? Any advice would be great. <comment><USER2> I'm going to offer an alternate point of view from some of the other comments (I'm a programmer and am studying CS in college).

Do you think if you gave programming an honest shot, you'd sincerely like it? If the answer is "no", then forget it... don't learn how to program. Instead, find a programmer who likes your ideas and is willing to implement them for you, as an equal partner. This may be tough to find, but that's what you have to do.

Ideas have tons of value. In my opinion, ideas are insanely important. The best-engineered, slickest, cutting-edge application isn't going to make a flipping cent unless the user-facing features add value. And these features can be formed from ideas that ANYONE has - not just programmers. Don't think that you have to be a programmer to have great ideas; that's utter bullshit.

That being said, I think you do need to know your way around technology, because as a lot of people say you need to know the options; what is feasible, what is not feasible; what powers and raw functionalities you have at your disposal. Read Wikipedia articles about things like AJAX, server-side computing, search algorithms, social computing, etc. Watch Google Tech Talks about whatever sounds cool to you. Try to figure out what the current state of technology is - in terms of functionality and capabilities - across the CS/software board. You don't need to be a programmer to do this. But don't struggle through concepts that you find boring; read about stuff that seems cool and interesting.

The bottom line is, do what you love, period. Yeah it's cliche. But if you take up an activity because you care about the end result, and not about the journey, you're going to end up frustrated and will probably just give up. Whatever you're passionate about, do just that, and find someone else who's passionate about the rest to work with you.

But you should give programming an honest shot anyway, to find out if you like it. It's cool stuff.

<comment><USER3> > Don't think that you have to be a programmer to have great ideas; that's > utter bullshit.

While I wouldn't say that you have to be a programmer to have good tech startup ideas, I wouldn't say that it's completely false either. Empirically there's a clear trend: most of the most successful startups were led initially by hackers. (And the most notorious flameouts mostly weren't.) It makes sense that people who understand a medium will have the best ideas for what to do with it.

<comment><USER4> No way -- plenty of flameouts were led by hackers, too. On top of that, the reason we've heard about the "most notorious" flameouts is because they actually knew something about marketing!

I'd bet that the vast majority of successful companies start with a problem, and then ask "how can technology help me solve this problem?" Sure, there are notable exceptions that worked backward, e.g. eBay, Amazon, Viaweb. They saw the inherent potential in a technology and asked "what problem can this technology help me solve?" And, no doubt, if you can pull that off, you're probably more likely to hit one out of the park rather than "merely" build a sustainable business. But most of the stuff that programmers build these days are solutions for non-existent problems.

I'd go so far as to say that, often, those who best understand the medium have the _worst_ ideas of what to do with it. The more time they spend on the nuts and bolts of the technology, the less time they spend exploring other domains, where they might find more interesting and mainstream problems.

<comment><USER5> > On top of that, the reason we've heard about the "most notorious" flameouts > is because they actually knew something about marketing!

Interesting point. I never thought of it that way. When a company is run by hackers, they usually only get publicity once they've created a product worthy of it. By that time, they're most of the way to success. Whereas when you have marketing guys at the top, the publicity comes when the company is less mature. So the perception that companies run by marketers flame out more often might be partially a result of selection bias.

</comment></comment></comment></comment><comment><USER6> Code is the most valuable component in a tech startup during the early stages. If you can't produce it, you're value to an early stage startup is low. It's that simple.

Ideas have little to no value. Execution is what separates the winners from the crap, and the Facebooks and MySpaces from the thousands of other social networks built by no name coders on eLance (at any given time there are dozens of listings for wannabe development).

That said, MySpace was made by non-hackers. So was Digg. Bloglines was partly created via eLance contracts (though Mark Fletcher is nerdy enough to pull things together in ways that a non-nerd might not be able to...the same is probably true of Kevin Rose and Digg). Maybe you need to hire your development work.

Or, you could learn to code enough to make yourself valuable. Great web designers are every bit as important to the equation (and a weakness in most developers...so if you bring good design, you may be able to find partners far more readily).

<comment><USER7> Re: Digg was created by non-hackers. Not true.

I am not sure if you have heard of digg's other co-founder Jay Adelson (<http://www.spock.com/Jay-Adelson>). Jay started Equinix, that does require _some_ technical skill

<comment><USER8> Kevin Rose hired an offshore programmer to write the php for Digg...

<comment><USER9> He did farm out the work to a random person on ELance (for $2k), his name is Owen Byrne. But he's a Canadian I think, so maybe "nearshore" would be more accurate.

[http://www.elance.com/p/corporate/community/resource- center/...](http://www.elance.com/p/corporate/community/resource- center/elancer-oct-06.html)

<comment><USER10> Nearshore is also wrong because there isn't a shore between Canada and the US. The term is "outsourcing" to anyone in the US and Canada. If it's to another continent, then it's "offshoring."

<comment><USER6> Or, we could stop being xenophobic and call it all outsourcing, and leave "offshoring" to refer to things that have been moved out of the US specifically because doing it on this continent would be illegal or impossible, like gambling, drilling for oil, etc.

Hiring someone else to do remote work is agnostic of location (in general). So, the term "offshoring" seems likely intended only to confuse or inflame the reader based on politics rather than facts.

<comment><USER8> From Wikipedia:

"Offshoring is defined as the movement of a business process done at a company in one country to the same or another company in another, different country. Almost always work is moved due to a lower cost of operations in the new location. Offshoring is sometimes contrasted with outsourcing or offshore outsourcing. Outsourcing is the movement of internal business processes to an external company. Companies subcontracting in the same country would be outsourcing, but not offshoring. A company moving an internal business unit from one country to another would be offshoring, but not outsourcing. A company subcontracting a business unit to a different company in another country would be both outsourcing and offshoring."

So there is a small semantical difference between the two, offshoring is broader.

Edit: Offshoring is not necessarily broader than outsourcing, except offshoring applies to internal and external business processes.

<comment><USER10> If you have a Canadian make a logo for you, are you offshoring? NO--there's no shore by my definition, and there's no moving of an existing process according to Wikipedia.

I think for startups, outsourcing is the best term to use.

<comment><USER8> In this case the distinction between outsourcing and offshoring gets fuzzy because making the logo was not something that was previously done by Kevin Rose's company, because Kevin Rose's company didn't do any internal logo development or hire any local companies to do logo development. I don't think a correct use of the word offshoring requires crossing an ocean, it seems to be accepted that it just means a different country, even if the word itself doesn't imply this meaning.

I'll agree that outsourcing is a more appropriate term, I used the word offshoring in my initial post without thinking because I thought (incorrectly) it was less politically charged than outsourcing. I'm going to agree with SwellJoe and say that there's something inherently xenophobic about the word offshoring.

<comment><USER11> You guys. We all know you are all super intelligent and well educated, but this is exactly the problem that comes with being too smart. You make things a bit more complicated. Outsourcing = letting a third party handle a piece of your production. Offshore = outside defined geographical limits. The expression is offshore outsourcing.

<comment><USER12> _"... this is exactly the problem that comes with being too smart. You make things a bit more complicated. Outsourcing = letting a third party handle a piece of your production. ..."_

Your mistake is equating development to production. Making software is difficult because designing upfront and then expecting the result to reflect _"what users want"_ is an oxymoron. Instead think _"just-in-time"_ design and creation of a software product in very close communication with users.

      '... total outsourcing leads to delayed and inferior products due to human factors and mis-communication ...'

The real _"value add"_ here is being able to _"optomise employee face-time"_ with your _"unit profit generators"_ (users) through _"space-time"_ savings of costs per _"CSM"_ (cubicle square meterage), delivering superior " _user expectations_ ".

Outsourcing in this context is just another business fad. Feel free to insert your own business _"Buzz words"_ in place of place of the ones inserted.

<comment><USER11> this is exactly what I am talking about. Thank you for the scientific expose.

<comment><USER12> _"... scientific expose ..."_

It's not scientific it's empirical observation and hardly an expose.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> Why not just learn to hack? If you start out small and work with bite-sized pieces and good tools, you'll see its not as difficult as you might think. I'm a firm believer any smart person can be good at coding if they are determined.

My advice is to pick up an intro book on Python and start with basic examples. With a little work, you'll be building cool stuff in no time.

<comment><USER12> _"... Why not just learn to hack? ..."_

 _"Learning how to hack"_ , Is like trying to get someone with a _"junk food diet"_ to become a _"gourmand"_ by learning how to cook.

Hacking is a mindset and while you can learn to be a hacker ~ <http://catb.org/~esr/faqs/hacker-howto.html> I just can't help but think some are born with the hacking gene(s) (if there is any) and some are not.

It goes to the core motivation. Is it just the money? Or it it, hey I can also make money doing this? If you are not into technology, software, building there is always real-estate.

</comment></comment><comment><USER14> I was in the same position as you literally two months ago. Since then, I've brushed up on HTML, learned CSS and Javascript (somewhat), and am learning Ruby on/for Rails. In retrospect, I would learn RoR concurrently with the others.

I would definitely advise you to learn some programming, since even if you find a partner, he/she may not have the same drive or take on problems that you do. Knowing a little bit about hacking, even as an amateur, will enable you to go further than you would otherwise.

<comment><AUTHOR> I think that is excellent advise, thank you! If you have come across a link that explains what each language's advantages are for web-development, please share.

<comment><USER4> I'm in the same boat - a recovering 'ideas guy' who buckled down and actually learn to hack over the past year or so. (One of the best decisions I've ever made. Though, granted, I developed a real passion for it.) I'm enjoying Ruby/Rails, but will probably check out Python next, because so many smart people seem to gravitate to it.

BUT, that said, I'm going to commit hacker heresy and recommend that you consider starting with Javascript. Here's why:

Hackery reasons:

\- it's how I learned object-oriented programming

\- it's how I learned functional programming. (well, ok, a little bit of Scheme helped, too.)

Practical reasons:

\- in any project, no matter what the backend is, you're _always_ gonna need JS on the front end

\- with the rise of rich UIs (ajax and whatnot), people who really know their JS are in demand, and it's a niche that most hackers don't focus on

\- you can learn from studying thousands of other real-world programs. (when you see something cool on some website, just pop open the hood -- or, rather, pop open firebug -- to see how it works.)

\- it's the layer that's closest to the user. this forces you to keep everything in context while you hack.

\- you said you're a good listener. empathy is key to UI design, so you might find this to be a good place to mix your strengths with code.

Ok, now all you _real_ hackers can tear me apart for recommending a toy language. ;-)

</comment></comment></comment><comment><USER15> Start by drawing your ideas on paper in detail. You don't have to be an artist because it's not going in a museum. If you are thinking of making a web site then draw it on paper, page by page. Describe exactly what happens when user clicks each part of the page. Every page, including the login page and about page. Every single page, every single clickable thing, draw it and label it. The more detail the better. You should have enough detail on those pages to be able to hand to someone without saying a word and they will be able to read it and understand it. That level of detail.

Then pay a web designer a few hundred dollars to turn your pages into a static mockup. Static meaning it doesn't actually work yet, you can't login and do stuff, you just look at it. It's just HTML and graphics. It's a facade.

Next you can either pay programmer anywhere from a few hundred to few thousand dollars and wait 3 months for them to build the functionality behind the facade or you go learn HTML, javascript, ajax, and PHP (the easiest programming language for novice web devs) and build it yourself.

</comment><comment><USER16> I have to disagree with all the hackers in this discussion. Code is super important, but a startup is still a business. Business is a team sport that requires many different talents. If you can't code move out to San Francisco or someplace where startup congregate and find a startup that needs your talents whatever they may be. Learn the ropes and meet people. Repeat. Thats what I did. There are lots of non-technical people who have done well this way. Read Mark Cuban's posts on motivations. He was non-technical and kicked ass.

I moved out to SF as a non-technical biz guy two years ago and now I run a VC backed startup. It can be done.

<comment><USER17> There are so many reasons to give up, and "I can't program" is one of them. "I'm too old", "I'm too inexperienced" seem to be a couple of popular ones.

There are advantages and disadvantages, and I admire every person who decides to put everything he/she has into it.

That said, we don't have to work this one out through logic - we can look out into the world and observe. Think of the top ten start-ups that IPO'd or were bought last year, and take a look at the bio's who founded them. The numbers don't look good for founders who can't program.

Thing is, hacking _is_ something you can learn to do. You can't make yourself younger, or taller, but there's nothing stopping you from downloading ruby (or, if you have a mac, opening a console) and get to it.

It does take a while to learn to program - but if it didn't, then it wouldn't be much of an advantage.

If you really don't want to go through it, there are certainly some notable successes for non-programmers. If you can add a lot of value as a founder and help make a lot of people successful, then go for it.

</comment></comment><comment><USER9> If you had a burning desire to create a new building of some kind but weren't an architect/engineer what would you do?

<comment><USER18> Questions like that sometimes keep me up at night. There are so many things I'd like to do in life, but not nearly enough time to learn how to do them all.

<comment> daniel-cussen I feel your pain. I also have more dreams than time to carry them out.

</comment></comment></comment><comment><USER19> I agree that you should at least learn a bit of coding. That said, there are many code monkeys out there (like me) who need business partners who can are arty and/or can run a business. Coding isn't the only thing required to run a start-up (I think :P).

</comment><comment><USER20> Out of curiosity, what do you consider your strengths (aside from ideas)? Design? Marketing? Accounting? Writing? All of these things have a place in a software startup. If you're good at all of them, you're golden (because most hackers decidedly aren't).

But, at the end of the day, the most expensive and time-consuming thing that software startups need from the outset is software development. Other than design, there's not a lot of need for other skills before you manage to create a product that people want to have.

But I'd echo the sentiment mentioned elsewhere. Dabble in programming and see if you're enjoy it. If you don't, focus on your strengths.

<comment><AUTHOR> My strengths are the ability to grasp technical problems, act as the face of the company (lead meetings with investors, presentations, hiring), and more than anything, I listen well. That being said, I'm definitely looking forward to contributing to a significant amount of the content and design.

Thank you for the great suggestions!

<comment><USER21> Drop me a note, if you've got good ideas, I'm interested. No commitments, but if something strikes me, we can work it out.

</comment></comment></comment><comment><USER22> You should learn as much programming as you need to but if you find that it's not your strong suit then there are other options. Besides being the "business guy" in a startup, you can probably work on finding people who are passionate and fill in their holes. Chances are that someone is working on something similar enough to be useful to you. What you can do now is approach these people with one of your ideas, show them how you can reach mutual benefit and coordinate efforts so that you can get together all the people you need to make something great.

</comment><comment><USER23> I think learning code (even HTML and basic queries) is helpful. While I don't code per se, I'm familiar with what code can and can't do, and it's been invaluable in growing many companies.

Keep in mind the advice you're getting here is relatively slanted toward programmer-centric minds.

Try posting it on LinkedIN answers and see how your responses vary.

</comment><comment><USER24> Find a co-contributor. Carigslist etc. Put out an ad on the gigs forum. As a dev coming at it from the other angle. I have the skills but not many business ideas. But I also have clear ideas what I'm willing to work on.

If it's just a copy of something existing then don't expect many replies. But an exciting new idea would have many responses.

</comment><comment><USER25> Ok. I have been wanting to post this question myself. I can solve problems in C and am good with logic. I can also do some HTML. But when it comes to interfacing with the web and real world applications I just don't know where to get started. Things like databases, libraries and API puzzle me.

<comment><USER26> Web applications, databases, and APIs are all really very simple. An api is just a collection of functions (or ways of calling functions) someone else wrote. A database is just an api to store tuples. A web application is just a program that listens on a TCP socket for HTTP requests, and responds with HTTP responses.

You can write your own web server in a couple hours, even in C. It won't be any good, but it's a fun confidence building exercise. Then learn Python or Perl or Ruby or Lisp or some language with non-sucky strings, install Apache and mod_python/perl/ruby/lisp, and point it at your script. Voila, instant web application! There are plenty of step-by-step tutorials online.

I was in a similar situation to where you are before I started on Kiko Calendar - I'd never written a web application or used a database or api before in my life. Thanks to the internet, I could learn how in a couple months. You can too.

<comment><USER27> "You can too" is the most important sentence in above post. Remember it.

</comment></comment></comment><comment><USER28> The first step is to inventory your assets. What value would you bring to a hypothetical startup? You're not (currently) a coder. What about business, marketing and sales? If you can become strong in one of these areas, you provide value.

Can you project a profitable business from one of your ideas?

If your only contribution will be your ideas, they'd better be valuable. Valuab le ideas are generally new solutions to existing problems. As such, they're usu ally patentable.

Good luck.

</comment><comment><USER11> Coding is a lifestyle. You can learn how to code. Anyone can. But by the time you have learned enough to build your idea, it will have become obsolete. get a co-founder maybe or hire a firm to do the work for you and take it from there. You are less likely to succeed, but at least you will not sit down some day and say "I should have tried". Take it from a suit.

</comment><comment><USER29> Now taking this question from a different angle... Suppose the striving programmer has chosen to start learning python.

What steps would you take to start (are there any one click installers like there are for ruby? other things? tips for beginners). If you were doing it again, what would you keep in mind?

</comment><comment><USER30> We are working on an easy-to-use web app creation tool, and we're looking for real use cases to test out our system. Drop me an email, if you want to chat. If an idea of yours is a match for what we do, we may just implement a prototype for you.

</comment><comment><USER31> Great resource for some skillset learning:

<http://ocw.mit.edu>

</comment><comment><USER16> read this: [http://www.blogmaverick.com/2004/04/23/success-and- motivatio...](http://www.blogmaverick.com/2004/04/23/success-and-motivation- part-1/)

</comment><comment><USER32> Hm... Do you like to build something like a... robot that goes around and... huh... does stuff for people that people themselves don't want to do?

I am sorry, but most of the ideas I hear from non-tech people are pretty much like that :-)

Man, you have to realize that ideas worth nothing. Seriously: ZERO.

What counts is the best possible implementation. Facebook is not the first social network and google wasn't the first search engine.

Sorry to disappoint.</comment>


Raptor.js - <AUTHOR> http://raptorjs.org/

<comment><USER2> I think maybe they've released this too early, or needed to spend a bit more time on the marketing.

How many people thing "A modular Javascript Toolkit!! just what I've been looking for!"

Compared to Knockout "Simplify dynamic JavaScript UIs by applying the Model- View-View Model (MVVM)"

Backbone "Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface."

bootstrap "Sleek, intuitive, and powerful front-end framework for faster and easier web development."

I'm not going to dive into your code to find out what you're selling me. You need to tell me what I can do with it, and if I'm interested, then I'll delve deeper.

<comment><USER3> Thanks for the feedback! I'm the lead developer on RaptorJS and I completely agree that the messaging needs to be improved and that is what we are working on right now. We haven't actually started actively promoting RaptorJS, so yeah, I suppose you could say that it was announced a bit prematurely (thanks zengr!). Nevertheless, the toolset itself is very stable and continuously being improved so can be presently used.

While I'm at it, I may as well take this opportunity to try to "sell" you on the merits of this toolset :)

RaptorJS is a collection of front-end tools and modules that work really well together, but each module/tool can be used independently. Everything is designed to be optimized and simple to use. There's a lot there so I always recommend that people look at each piece independently:

\- RaptorJS AMD: Very lightweight (~1.8k gzipped) and optimized AMD implementation that integrates seamlessly with Node and Rhino on the server and works in the browser as well

\- RaptorJS Optimizer: Extensible tool for optimizing web resources (bundling, minification, compiling resources, etc.) that can be used at runtime or at build time

\- RaptorJS Async Package Loader: Uses information generated by the RaptorJS Optimizer to optimally download packages of any type of code (JavaScript, CSS, LESS, compiled templates, etc.)

\- Raptor Templates: An extensible templating language that also works really well for UI layout (embedding UI components, etc.) and allows for really clean HTML templates. Best-in-class performance. Try it out: <http://raptorjs.org/raptor-templates/try-online/>

\- RaptorJS Widget Framework: Simplifies the initialization of widgets associated with rendered UI components (regardless of whether or not they were rendered on the server or the client). Also provides a mechanism for binding widgets to HTML elements and inter-widget communication.

Sometimes the easiest way to explain things to developers is through sample apps so I would encourage you to take a look at the following Github repo: <https://github.com/raptorjs/samples>

Feedback welcome and appreciated. Thanks for looking!

</comment></comment><comment><USER4> Check out the templating system:

        <ul c:if="notEmpty(colors)">
            <li style="color: $color" c:for="color in colors">
                $color
            </li>
        </ul>
        <div c:else="">
            No colors!
        </div>

Not sure if that's been done before but I think attaching "display logic" to specific elements in the DOM is interesting.

<comment><USER3> FYI, when designing the Raptor Templates language I borrowed that technique from the Genshi templating language: [http://genshi.edgewall.org/wiki/Documentation/xml- templates....](http://genshi.edgewall.org/wiki/Documentation/xml- templates.html#template-directives)

When the template compiler understands the actual HTML structure of the document the compiler can do some really interesting and smart things that would otherwise be impossible with template compilers that just see the document as text. Personally, I really like how the HTML template has the exact same nesting as the output HTML markup that it produces. To me, making the HTML template look as close to the output HTML markup makes things a lot cleaner and easier to understand.

</comment></comment><comment><USER5> I didn't spend whole lot of time on checking all the features but I liked the templates and specially try-online tool. Templates are clean, easy to read, and close to final HTML. Compared to other templates it is much better in terms of features and readability. Love the fact that the compiler is already built-in, which is very important for performance.

</comment><comment><USER6> yfiles for html has a strikingly similar approach to going about doing things.</comment>