It's about time to start fighting against the Rails "magic" myth - <AUTHOR> http://blog.plataformatec.com.br/2010/12/crafting-rails-applications-why-i-wrote-this-book/

<comment><USER2> I think you might be fighting an uphill battle here.

Some developers prefer Python, some prefer Ruby. An individual developer might be able to reel off a list of reasons why one is better than the other, but in the end it comes down to something intangible and subjective - "Ruby just _feels_ better" or "Python _fits my brain_ better".

The concept of "magic" is very similar. What feels magical and opaque to one developer might be plain and obvious to another. When you ask what "magic" means, you'll get different answers from different people.

From my point of view (as a Python/Django developer), even the basic _commands_ that Rails uses feel strange. Compare the very first line of code that you run in a Django project vs a Rails project:

        django-admin.py startproject mysite

with

        rails new blog

The former says: "run the Python script called django-admin.py" (which immediately tells me that this is just a Python script that I could read, if I were so inclined) and pass the arguments "startproject" (which is a clear description of what is about to happen) and "mysite" (which is, fairly obviously, the name of the project to start). This reads like a sentence of the form 'use <tool> to perform <action> with arguments <arguments>'.

The latter says: "run the command rails" (what is this? A Ruby script? A bash script? A binary? Why is it called "rails" when the whole framework is called "Rails"?) and pass the arguments "new blog" (obviously this is creating _something_ , but what? In most languages, "new" is a keyword that is usually used to create instances of classes - so is it creating an instance of something called "blog"? Does that mean that Rails knows what a "blog" is already?) To me - this is magic. Rails says "type this incantation and I'll do some stuff for you". Django says "here are some tools you can use to do stuff".

You might disagree with me entirely in this particular case - perhaps you find the Rails example clearer - which is fine. The point of this example is to say that framework and language preference is so intangible that the _very first line_ of your documentation can sway someone's opinion either way. Instead of fighting against the "magic myth", you should just be trying to attract developers who _like_ your particular brand of magic (or, alternatively, don't see your code as magic at all).

<comment><USER3> django-admin.py and "rails" are the exact same thing, it's just that the Rails command line utility doesn't have an unnecessary Ruby extension. I'm not sure why "new" is a magic incantation while "startproject" is an intuitive command line option just because you're not familiar with the command line arguments for "rails".

<comment><USER4> You're repeating exactly what he said :)

</comment></comment></comment><comment><USER5> Convention over configuration: sane default values.

magic: changing the scope in which a block is eval'd so you can inject BlankSlates that have method_missing defined on them that then do some string manipulation in order to pick which code path to take.

Sometimes you need to lean pretty hard on the super-dynamic features to get the api you want. But is it worth it?

<comment><USER6> is this the routing DSL you're referring to here? The activerecord query building stuff is much simpler than this, i know that.

If anyone wants to get a head start in understanding the magic, Ryan Bates has done excellent walkthroughs of the routing DSL and the activerecord query building method chaining source code:

[http://railscasts.com/episodes?utf8=%E2%9C%93&search=wal...](http://railscasts.com/episodes?utf8=%E2%9C%93&search=walkthrough)

edit: to add to the list of stuff that rails does which is 'magical,' I still get uncomfortable over the way that instance variables I set in the controller scope are 'copied' to the view scope. This is obviously a necessary evil though.

The real cost of rails' magic is the rampant and wanton Demeter Violation, which can make testing very difficult in some circumstances.

<http://en.wikipedia.org/wiki/Law_of_Demeter>

<comment><USER7> "Ugh, I made this routing library, but the API is such a hack."

"What about calling it a 'DSL' rather than an API? Then nobody will be able to claim you're abusing Ruby, because it's an entirely new language!"

"I doubt anyone would ever buy that..."

<comment><USER6> Its called a DSL because it is extremely declarative, and because while it is obviously a subset of ruby syntax, it does not have to look like common ruby at all.

I take your point though, I do get that feeling sometimes. There is a lot of showing off by ruby API developers.

I think there comes a time in every ruby hackers life when they get the urge to write an API that makes use of every single metaprogramming/reflection/self-modification feature in the language, because it looks like so much fun. We spend our work days writing rails with all its fancypants DSL-like bits, and we think "I want to do one of them!"

Mine is a DSL for defining regular expressions in natural language, and my god does it abuse metaprogramming. All the methods are defined at runtime by iterating over datastructures that list the regex spec. instance_eval(&block) all over the place. It is fucking brilliant. And not finished. Obviously.

</comment></comment></comment></comment><comment><USER8> A lot of the apparent magic comes from the fact that most Rails developers never take the time to properly learn Ruby.

</comment><comment><USER9> It's definitely nice to get a resource like this, but anyone who spends a reasonable amount of time writing applications for Rails should pick up all this. There really isn't that much Magic, it's convention.

Think of it like Struts, Spring or the Zend framework with all the configuration done for you with excellent documentation.

<comment><USER10> I think both the author and you are missing the point.

Ignoring the people that just reiterate poorly formulated ideas heard somewhere else, the complaints about magic were quite valid: originally the Rails source-code was too hard to read and comprehend.

When I used Django, I read most of the source-code from django.core and even stuff from django.contrib.

Django also has its quirks. I could understand pretty easily how a ForeignKey works (I don't know, it just clicked), but understanding how a FileField works was hard because the object I was receiving was just a proxy that forwarded all messages to an object that I couldn't figure out how it got instantiated (or the logic behind the decision). And when I did figure out how the thing worked, I puked a little and came up with an inelegant hack for what I was trying to do.

Figuring out how stuff works is really useful when you want to extend the provided functionality or work around a bug that has to be fixed RIGHT NOW or break free of those conventions that sometimes are just too limiting. Not to mention incomplete documentation which many times is seriously lacking.

Django's source code (when compared to Rails), while also full of conventions, has this neat property that I like: you can read and understand 70% of its source-code (going line-by-line with a debugger) without fully understanding Python's meta-programming capabilities, which makes it really friendly to beginners.

I mean, the convention for "has_many :tags" is really neat, but such conventions have to have complementaries in the Rails source-code ... i.e. clear conventions for how to find and read the source-code of this mechanism.

Fortunately Rails 3 got a major refactoring effort, that I could read portions of it. It's more modular and reader-friendly now: and this is partly because people complained about magic. With a couple of additions here and there, it can be the web framework I've been waiting my whole web-dev carrier :-)

<comment><USER11> I agree with you. I had the post a bit longer but I cut it down a bit before publishing and it discussed some points you mentioned.

People had reasons to call Rails as something "magic" some time ago. But "magic" at that time really translated to poor design and lack of documentation.

Most of Rails has changed since then. Rails has good documentation for already some time, the internals are cleaner than ever before and should continue improving (for example, check Aaron Patterson's work on Active Record for Rails 3.1). But people still call it magic, because it became an habit.

Even simpler and smaller things in Rails, like the "find_by_email" method in Active Record that relies on Ruby's method_missing, were for a long time called as "magic finders".

Another proof of that habit was my take on Inherited Resources. The code is clean, modular, well-tested since day one, but I still stamped "magic" on the README when I first released it because it sounded cool. This is the mistake I want to prevent people from doing it all over again.

Maybe a better moto would be: "There is not such thing as magic, only bad and poorly-documented code."

</comment></comment></comment><comment><USER12> New PHP developer here. Just some perspective from an "industry" guy rather than a super-smart startup guy. I can clearly remember my first foray into Rails, and it'll be a while before I try it again unless I need it for a job. I just don't like it, and here's why.

For people like me, Rails is at least at first glance very unsettling. I followed the tutorial on their site about making a guestbook, on which they proudly boast how fast you'll have it up and running. So I punched in the code they suggested and bang, guestbook. They certainly weren't lying (maybe exaggerating a tad) about the speed, but ...

Wait. What the fuck? You've made a _lot_ of assumptions about how I wanted this to work. What say I didn't want the form to look like that? Why are you writing CSS for me? That's _my_ job! Going further into it made me feel even more uncomfortable, and after seeing the ORM database abstraction and taking my beloved SQL away from me, I left Rails behind.

It's one thing to provide a clever wrapper method to efficiently sort integers in PHP or Ruby without having to import or implement quicksort or whatever. That's abstraction me and my self-taught ilk are comfortable with. But the way Rails assumes what you meant from your code is just distressing. You don't feel like you wrote it, and this code is running and producing a finished webpage without you needing to understand how it works. You could reasonably respond that this is just another layer of abstraction, but producing an entire webpage for you based on some very cursory instruction does not have the same "pure" feel that a sort() implementation does.

My friends think it's great. I think it's scary. And reading some other elated posts from Rails nuts around the web about the whole "just works" thing and the magic going on really _is_ unsettling. You're not building from the bottom up -- schema -> logic -> markup -> style -> scripts. It's all coming together in one big vaguely uncomfortable clump, and _you didn't write it_. Anything more than a vim macro/TextMate snippet or two that generates code for me -- even if I can edit it afterwards -- gives me a cold shiver, and makes me feel like I'm using Dreamweaver again.

You could read the code to see what it's doing and tweak accordingly, but then, why not write the code yourself in the first place?

</comment><comment><USER13> I've tried Rails a couple of times, but have never persisted with it as I can't work out how to do anything other than the default stuff. I make scaffolding, which is great, but then I want to take the scaffolding, use it as a starting point and change it. But the scaffolding doesn't seem to exist anywhere - it's just magically in existence.

I want to add authentication - every tutorial recommends different packages to use, but I don't want som prewritten code, I want to set a session cookie, I want to read it, I want to add stuff to databases manually, I don't want some random code providing this without understanding what's going on!

I'm sure that it's an easy thing to work out, but every time I get fed up with not knowing where anything is coming from so I give up and go back to what I know.

<comment><USER14> > it's just magically in existence

You must not have tried Rails past say 1.2 or so (I can't remember when they took that out). Scaffolding has been generated for some time, which means the code is just spit into the app/ directory. You can go in and change whatever you want with it.

As for the rest of your complaint, then perhaps something as abstract as Rails isn't really for you (Sinatra maybe?). Though really, why do you want to do all that manually? Just read the framework docs, which are quite good now, and code, understand how they work (really, it's not hard I promise), and use the abstractions. You'll thank yourself later.

<comment><USER13> These comments have all been really useful – it was a while ago that I used Rails – seems that things have come a long way since I played. I'll have another look + at Sinatra. Thanks!

</comment></comment></comment><comment><USER15> This sounds like a really good book. I'd love to read it, mainly because I am one of the people frustrated by rails "magic" (which I fully acknowledge comes from my lack of understanding of the framework).

I think that one of the reasons Rails appears to be magic to _me_ is that I find it harder to do web programming in rails without the framework than with it. Hear me out, please, I'm coming from Java...

I can easily hack something together with jdbc, jsp, servlets, sql, pojos, and so forth. I'm not saying it's a good idea, but I can do it. Maybe this is because I started with java before all the mvc, orm, DI frameworks were in place. Maybe if I'd started with mod_ruby on apache prior to encountering rails, it would be different.

Now, I don't mean that it's easier to create a large, complicated site with servlets and jdbc instead of spring, hibernate, and so forth. What I do mean, though, is that if I need to do something in framework-less java, I can do it, whereas doing it the "spring way" is "harder" - ie., I have to go research how spring does it, figure it out, and so forth. And if I can't, or if it takes too long, I can (and do) say fuckit and just hack it all up in java.

In rails, if I don't get it, I'm still incapable of dropping to a lower level of programming. And that means that if I end up in a bind, I'm really screwed, because I don't understand the magic. Here's the thing - I really dig Rails, but eventually something _always_ happens, and then the fact that I don't really understand how this magic wand I stole from the rails guys actually works bites me in the ass.

I've carefully avoided ever saying "it's confusing", or "rails can't", because I'd be wrong. So definitely, I want to read this book.

</comment><comment><USER16> It's open source.

I played with it a bit and then read the source. Poof! Magic gone.

<comment><USER17> Yup. Not only is it Open Source, but there's a plethora of blog posts and articles just a Google search away that'll explain pretty much every aspect of how Rails works (seriously.. it's been blogged to death and back).

When people say it's magic, what they're really saying is: "It's unfamiliar to me, and I'm to lazy to go find out how it works. So rather than just STFU, I'm gonna complain about too much 'magic'." :-)

<comment><USER18> You guys are right, no one should ever write a book. About anything, ever.

<comment><USER17> Huh? Where do you get that? I think people writing books is awesome, but I don't recall my comment saying anything about that. I was just commenting on the people who dismiss Rails as "having too much magic", when what they really mean is that they're uncomfortable with how different it is from what they're used to. Now, to be clear, there's nothing wrong with trying a new technology (Rails, Erlang, Node.js, whatever) and deciding it's not for you. There's also nothing wrong with _not_ trying a new tech because you're just to damn busy with something else. :-). What I object to is people who just grab a "soundbyte" like "too much magic" as an excuse for not forming an honest opinion about something.

</comment></comment></comment></comment><comment><USER19> Good documentation definitely helps. However what concerns me more is the growing tendency of Rails and related packages to do more and more "magic" without warning the user, at the expense of best practices and the principle of least astonishment. The best example I can think of offhand is Bundler "helpfully" invoking sudo to modify your global system settings, as the default option.

</comment><comment><USER20> I don't think the 'magic' is rails' real problem. It's the fact that all of the effort that went into making everything happen 'automagically' gets in the way when you want to do something the core developers never thought of.

<comment><USER21> Can you provide an example? I'm having trouble conceptualising a situation like this. (Not being snarky)

</comment></comment><comment><USER22> No, it isn't. I was talking about this earlier on a topic about java. Magic is good, it keeps the 'I don't like magic' people away.

It provides a slow introduction to noobs and introduces them to the mindset that you shouldn't have to do a lot of configuration for things to just work out of the box.

Remove the magic and pretty soon we'll start having to use factory classes. Or a web.config file. Or any of the other annoying things you have to configure to some sane value every time you start a project with any other framework.

<comment><USER11> Things like convention over configuration must still exist. All the whistles and surprises that you get when you first come to Rails must still be there.

What the blog post advocates is for giving good explanations, books, documentation instead of blaming magic as the reason everything works.</comment></comment>


GE Hitachi to Turn World's Biggest Civilian Plutonium Stockpile into Electricity - <AUTHOR> http://www.gereports.com/ge-hitachi-nuclear-energy-proposed-to-turn-worlds-biggest-civilian-plutonium-stockpile-into-electricity/

<comment><USER2> Have such reactors been build before?</comment>


What we can learn about trade policy from a misbegotten 19th century effort - <AUTHOR> https://www.bunkhistory.org/resources/3212?related=2688&relationship_name=FAST-FORWARD <comment><USER2> Very interesting article but the design of that website is rough. I kept looking for a button to expand the article to fill the whole screen.

<comment><USER3> [https://outline.com/BXCUhm](https://outline.com/BXCUhm)

<comment><USER4> no subpixel antialiasing on Linux Firefox. Eeeeew, outline.com is disgusting for breaking a OS feature.</comment></comment></comment>


Tell HN: Discord is violating open source licenses - <AUTHOR> As you might understand, having your own private open source library used by Discord is something big. Something that makes your effort worth while. So you download the distribution and look for your own, hard earned, copyright notice. Well it's not there because fuck you.
What I found by downloading the (Linux) Discord client from discordapp.com was that they clearly were distributing source copies of my project, but it had no license or copyright mentioning me (which is required). I also found that they are distributing ffmpeg binaries but I couldn't find any matching LGPL license or source code in the distribution.
So of course I contacted them. First via GitHub where I have reached them before, and then two times via their support people on their home page. I get about the same response as any one else: "I'm sorry but we cannot help you. Were you satisfied with the support response?".
It's not okay for companies to pull their pants down and take a big dump on your personal work. Not when they clearly do not even bother with complying with basic open source exchanges. If I write something I want to be properly mentioned as is required in my very license.
Discord, is this so fucking hard to understand? <comment><USER2> (Discord Dev here)

Hey Alex, this definitely sounds like a miss on our part, so apologies.

As you know, we're fans of uws and not including the original license was a screw-up in our automation. We're working on fixing it and immediately releasing it with the proper license. I've also asked support to follow up with you directly in case there are further issues.

For the contact, either opening an issue on one of our repos or emailing our legal team (firstname.lastname@example.com) would have been guaranteed to get you an accurate response. Unfortunately the verbiage you used in the email is very similar to that used in other support tickets we get for our API, and our team (as they did in your case) forwards users on to our API chat which can provide more in-depth/advanced support.

<comment><USER3> It's nice to see you've reached out to Alex publicly.

Any time someone or an organization brings in someone else's code and makes use of it, no matter what the license we really need to recognize that, it's just the morally responsible thing to do.

As far as ourselves, we're definitely using uWS and that is not going to go without recognition.

Nobody should need to "open a ticket", send an email or post on HN to get that sorted.

npm install and git clone making it way too easy for people not to give a crap about the works of others.

Good to see you guys are doing the right thing, uWS is a serious piece of tech and well worth recognition.

</comment></comment><comment><USER4> For anyone else slightly confused at first: the Discord Linux release ([https://discordapp.com/download](https://discordapp.com/download)) includes uWebSockets in ./resources/bootstrap/discord_rpc/uws.js.

This is only the JS source code and there is no licensing information attached whatsoever.

This directly conflicts with uWebSocket's licence ([https://github.com/uWebSockets/uWebSockets/blob/master/LICEN...](https://github.com/uWebSockets/uWebSockets/blob/master/LICENSE)), which clearly states:

 _" 3\. This notice may not be removed or altered from any source distribution."_

<comment><USER5> One of the reasons the GPL is suggested to be applied to every source file is to make sure people don't miss it, which can cause issues like this (the other reason being to fully convey exclusion of warranty)

</comment></comment><comment><USER6> > First via GitHub where I have reached them before, and then two times via > their support people on their home page.

I don't know why you thought dev/tech support would be the path you go down. This is a legal issue, so if this matters to you, send them a legal notice. I've done the work of exporting their contact for you email@example.com (from [https://discordapp.com/tos](https://discordapp.com/tos))

<comment><USER7> Informally, sending a question via legal avenues is a good way for a company to go into "Our lawyers will be in touch, we can't say anything more on advice of counsel" mode - if you think a question can be satisfactorily resolved without lawyers (and I'd hope that "can you follow the rules" is a question that most people can answer with "yes"), everything will be more pleasant on all sides if the company doesn't go into lawyers-only mode.

Formally, neither the (US) legal code nor the zlib license says that you need to contact a violating company via some particular channel. A company is a single legal entity, and if you've contacted them somehow, you've contacted them, and they're now willfully violating the license.

Practically, abuse@ seems wrong; that's likely to reach an abuse department (which is just a specific support role that's empowered to do a specific subset of tasks), not a legal department.

<comment><USER8> More specifically, the abuse@ is clearly their DMCA department, whose response is very likely to be something along the lines of, "this isn't a valid DMCA complaint, please review the instructions at X, and submit the appropriate documentation. Once we have that, we'll remove the 3rd party content."

</comment></comment></comment><comment><USER9> The library in question would be uWebSockets?

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

<comment><USER10> If so, that's the zlib license, which requires no acknowledgement for binary distributions.

If they distributed the sourcecode, they'd have to include the license, but the zlib license has nothing to say about compiling it in.

<comment><AUTHOR> They are distributing both binary (no problem here) and source (problem).

<comment><USER11> Maybe I'm an idiot, but I don't see any problems?

——————————

Copyright (c) 2016 Alex Hultman and contributors

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

1\. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgement in the product documentation would be appreciated but is not required.

2\. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

3\. This notice may not be removed or altered from any source distribution.

——————————

a) This software is provided 'as-is', and as the author, you are not liable for damages if someone uses your library for something crazy.

b) Anyone can freely use it, for any purpose, with following restrictions:

1\. "If you use this software in a product, an acknowledgement in the product documentation would be appreciated but is not required.". They decided not to acknowledge the use of your library. You explicitly said this is OK.

2\. Altered source code -> probably not.. it's a web socket handling library.

3\. This notice may not be removed. They have probably not removed it from their source code, given they distribute a binary.

<comment><AUTHOR> Can you find this notice in their distribution? I have looked in their client UI and in their client tar.gz but I cannot find anything. I can however easily find my project in there (I would think the license would be nicely placed where the sources are).

<comment><USER12> Can you share where you found the project files in the client tar.gz?

edit: Found it, uws.js in resources/bootstrap/discord_rpc.zip

edit2: This is arguably worse, but the argument may be "it's a compiled binary":

      -bash-4.1$ strings discord_rpc.node | grep uws.*cpp$
      ../../discord_common/native/third_party/uws/nodejs/addon.cpp
      ../../discord_common/native/third_party/uws/nodejs/addon.cpp
      ../../discord_common/native/third_party/uws/src/EventSystem.cpp
      ../../discord_common/native/third_party/uws/src/Extensions.cpp
      ../../discord_common/native/third_party/uws/src/HTTPSocket.cpp
      ../../discord_common/native/third_party/uws/src/Network.cpp
      ../../discord_common/native/third_party/uws/src/Server.cpp
      ../../discord_common/native/third_party/uws/src/UTF8.cpp
      ../../discord_common/native/third_party/uws/src/WebSocket.cpp
      ../../discord_common/native/third_party/uws/nodejs/addon.cpp
      ../../discord_common/native/third_party/uws/src/HTTPSocket.cpp
      ../../discord_common/native/third_party/uws/src/WebSocket.cpp
      ../../discord_common/native/third_party/uws/src/EventSystem.cpp
      ../../discord_common/native/third_party/uws/src/Extensions.cpp
      ../../discord_common/native/third_party/uws/src/Network.cpp
      ../../discord_common/native/third_party/uws/src/Server.cpp
      ../../discord_common/native/third_party/uws/src/UTF8.cpp
      -bash-4.1$

<comment><USER8> _edit2: This is arguably worse, but the argument may be "it's a compiled binary":_

discord_rpc.node is an ELF file. It's hard to see how that would not be considered a binary distribution (if it was that file alone, and not being distributed with source files)

<comment><USER12> You're correct, I was a bit too quick on the 'reply' button there.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> Would you mind sharing with HN the data that you shared with the Discord team? I'm afraid that you didn't link what the project was, or how exactly it's a "private open-source library", which seems like a self-contradictory statement.

</comment><comment><USER13> From the attitude many discord devs have shown in their channels towards other devs, this doesn't surprise me. Unless you make bots for discord, there is little respect. Especially if you're creating your own UI features that Discord just 'happens' to implement once they get popular. While simultaneously turning around and bashing said platform it was possible in in the first place.

Also, dev/tech support is absolutely the correct path in many cases, because they /lead/ you to legal, if necessary. Why users are claiming otherwise does not reflect the purpose of having a support network. Infact, firstname.lastname@example.com is much more for actual abuse of discord TOS, not directly legal matters. I could easily turn it around and ask why anyone would think /that/ is the correct contact.

<comment><AUTHOR> Right, I agree 100%. Support should be able to direct the communication to where it makes sense. I cannot be hanging out on Snapchat or follow them on Twitter or things like that, I just need support for my issue.

It truly is a world for the rich - money makes money. Censor and sue everything that goes in your way. Get bigger, sue more. Get richer. Disregard everything in your path.

</comment></comment><comment><USER14> They're on the Widely Adopted list [0] for the library.

I would give them extra time to respond. I don't see a valid reason or motivation on their part not to fix it.

0: [https://github.com/uWebSockets/uWebSockets#widely- adopted](https://github.com/uWebSockets/uWebSockets#widely-adopted)

</comment><comment><USER15> If you don't get a satisfactory response from contacting them as nemothekid said, contact the EFF

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

<comment><USER7> The EFF are wonderful people but this isn't quite their usual business. I'd probably contact the Software Freedom Conservancy or the Software Freedom Law Center, who engage in free-software compliance efforts (including, if absolutely necessary, lawsuits).

</comment></comment><comment><USER16> They just amended it in their fork:

[https://github.com/hammerandchisel/uWebSockets/commit/cf2ebb...](https://github.com/hammerandchisel/uWebSockets/commit/cf2ebba898b81ac5b36ea4d583944d5e4938ec9b)

<comment><USER16> NVM. I see they responded.

</comment></comment><comment><USER12> Of note, they also appear to have forked a version of uWebSockets from Sep 2016 [0] in their Github org.

0: [https://github.com/hammerandchisel/uWebSockets](https://github.com/hammerandchisel/uWebSockets)

<comment><USER17> Looks like they include the license now

[https://github.com/hammerandchisel/uWebSockets/commit/cf2ebb...](https://github.com/hammerandchisel/uWebSockets/commit/cf2ebba898b81ac5b36ea4d583944d5e4938ec9b)

</comment></comment><comment><USER18> Then sue them.

<comment><AUTHOR> I like your style

</comment></comment><comment><AUTHOR> So this post gets 60 upvotes in 30 minutes and is immediately censored by HN and taken off the front page. Right, thank you very much for stealing my work, giving me no credit and then censoring my appeal.

<comment><USER5> Did HN steal your work?

<comment><AUTHOR> Hello, troll

<comment><USER5> I'm not trolling you, i'm asking you what HN has to do with this. You got all huffy at HN for not featuring your post crying about a license and then implied HN is at fault for stealing your work and then "censoring" you. Get off your high horse and try not to act like an emotional child if you want people to take you seriously.</comment></comment></comment></comment>


Sexism Valley: 60% of women in Silicon Valley experience harassment - <AUTHOR> http://www.theguardian.com/technology/2016/jan/12/silicon-valley-women-harassment-gender-discrimination <comment><USER2> This is worthless without a comparison to other engineering fields or other comparable industries like finance, management, politics, business, etc.

(Not saying it isn't happening, just questioning whether our industry is worse than... say... Wall St.)</comment>


HootSuite Raises $165M Series B - <AUTHOR> http://techcrunch.com/2013/08/01/hootsuite-raises-165m-series-b-round-from-insight-accel-and-omers-to-go-large-on-enterprise-social-media-monitoring/ <comment><USER2> "One of the goals of the financing is to clean up our cap table. To this end, we are allowing former Seesmic shareholders to liquidate their positions. At the current valuation, you will realize an almost 40% return in the 11 short months that you've been an investor. We would greatly appreciate your help by selling your stake."

I don't know the situation, but that sounds odd.

<comment><USER3> I would view this as preparation for being acquired by a larger entity.

</comment></comment><comment><USER4> Great to see another awesome Canadian company w/ exciting news today. Congratulations from all of us @shopify.

</comment><comment><USER5> What happened to interesting (especially hardware) startups? Who wakes up in the morning and thinks, "I want to improve the social media experience of brands!"?

Oh that's right, they can't get funding because MBAs don't care about super laser tech or virtual reality devices, but whatever gets them the most money.

<comment><USER6> Serious question, what happened to the companies that popped up in the 90s that:

* Helped enterprise clients manage their customer service email accounts

* Helped enterprise clients manage their web pages

Eventually "social media" will just become a normal part of the internet. Just another company taking advantage of the idiocy and fear prevalent in large enterprises. "Hmm, this social media thing sounds big. We need to be involved in social media. Who can we throw buckets of money at to pretend they are helping us with our social media?"

</comment></comment><comment><USER7> Well at least they've ended their unpaid interns policy.

<comment><USER8> Yup, use them up, spit them out, ??? and profit.

</comment></comment><comment><USER3> Congrats to the HootSuite team - that's a very impressive valuation.

We recently built our own social media data discovery and analytics platform, and whenever we run reports on software clients for top tweets - HootSuite is always in 1st or 2nd position. Nice market penetration there.

Plug below -

In case anyone is interested - ours is not designed to replace HootSuite but to complement it:

[http://signup.itrendcorporation.com/](http://signup.itrendcorporation.com/)

Would love to get some feedback from you folks.

</comment><comment><USER9> Congratulation guys! Looking forward to see how this all feeds back into the product.

</comment><comment><USER10> The team over at Buffer must be pretty stoked to see how big this market really is.

</comment><comment><USER11> It saddens me that some companies, sometimes without revenue (I dunno if that is the case with HootSuite) get multi-million deals, and some brilliant startups by unknown people cannot get 50k USD borrowed by a bank...

Although my associate worked for a Angel Investing company and my main seed investor work for a investment bank, we still don't understand who get selected to get funded or not (we DO know the formal requeriments, but seemly meeting them only make possible to talk with some investors, but that is it, lots of investors will just outright ignore you)

<comment><USER3> Note that HootSuite is a very popular tool, almost every single marketer that I know is using it.

<comment><USER11> I know, we use it too, but it is not only HootSuite, there are several investments that get obviously excessively popular, sometimes not tech related at all too (like Eike Batista, that convinced Brazil government to give him 10 billion and lost it all somehow...)

<comment><USER3> That does happen, nothing we can do about that. :)

</comment></comment></comment></comment><comment><USER12> HootSuite is less than useless, as Twitter Terms of Service prohibit anything that might take eyes off of Twitter.

<comment><AUTHOR> Obviously you are wrong. With 237 of the Fortune 500 companies using it, it must not be that terribly useless.

Disclosure: I am an engineer with HootSuite

<comment><USER13> You're also aware that Twitter could at anytime disallow your use of their entire API ecosystem, correct?

<comment><USER14> They could, but Hootsuite pays money for access.

Hootsuite is also not just for Twitter; they allow access and control of multiple social profiles. Granted most people use it only for Twitter, but the fact remains, they have a product people are willing to pay for.

I can't really envision a scenario where Twitter killed them, but if you can, please share.

<comment><USER15> > I can't really envision a scenario where Twitter killed them, but if you > can, please share.

They enter the market with a competing product.

<comment><USER16> See: "eBay Payments by Billpoint"

for a classic example of how even in the most optimal scenario, the platform doesn't always win when it tries to compete with the ecosystem.</comment></comment></comment></comment></comment></comment>


GeoCities is shutting down.. - <AUTHOR> http://www.codelathe.com/blog/index.php/2009/07/14/geocities-is-shutting-down/

<comment><USER2> And taking my Quake 1 preview site with it?</comment>


Ask HN: Need help narrowing down micro-SaaS idea - <AUTHOR> I've narrowed down my micro-SaaS idea to the following:
-B2B for non-technical customers -Something customers already pay for -Preferably something I have some domain knowledge in -Simplified/dumbed-down app for a niche within a lucrative market -Something I can code part-time and get off the ground on my own
I'm considering 2 ideas:
1) Scheduling app for business with shift workers, specifically restaurants
2) Online rent collection without the bloat for small property owners/accidental landlords
Only reason I chose 1 is that I work at a restaurant. We use HotSchedules. It's actually pretty good, space is kind of crowded, but I guess I'll try to differentiate on UI/UX.
2 is something I might use personally too, as now I'm living in a property that uses the "mail a check each month" system for rent. There are tons of solutions out there, but I suspect there's an under-served market of non-technical landlords that find the full-suite solutions overwhelming and just want a "set up once, forget about it" online system. Just a theory.
When I browse the forums, seems like landlords really only care about online rent collection and applicant screening, while the rest are "good to haves" (e.g. maintenance requests, property listing, bookkeeping, etc.). I'm planning to build an MVP with just the online rent collection feature first, charge per transaction, try to differentiate on UI/UX.
Am I crazy to just basically dedicate months to creating stripped-down clones of existing solutions and think that it's possible to get traction regardless? Am I wrong to think that, you don't need to be significantly better (or even better) than existing competitors to get some market share? I'm not trying to "win" here, just trying to build up a good number of customers to live off of.
I guess the essential question is, can I do fewer features with simpler UI and still get some customers for me as a solo founder who wants location-independent income? <comment><USER2> I'd go on Craigslist or something and talk to landlords first, preferably in person. Try to figure out if they're actually interested in buying, and don't write a single line of code before you have an actual sale (have them pay you cash if necessary). If you're not sure what to ask I'd recommend the book "The Mom Test" (not affiliated to it). The basic gist is that you need to be careful which questions to ask so you don't bias the person you're questioning. For an obvious example think of going to your mom and telling her in an excited tone of voice "Hey mom I have this great idea, what do you think?", it'll probably be really hard for her to tell you that she'd never pay for that idea. Same applies to potential customers.

Anyways, I'm in the same boat as you (I'm looking for the exact same kind of problem as you), so if you wanna bounce some ideas, shoot me an email: a (dot) v (dot) f (at-sign) gmx (dot) at

</comment><comment><USER3> I'd do more market research before building anything. 2 sounds more promising as you have identified a problem. There is no problem in 1.

So I suggest go talk to some landlords and rental agents to get more information on that market.</comment>


Apple looks to protect dropped iPhones by shifting their orientation mid-flight - <AUTHOR> http://appft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch-adv.html&r=12&p=1&f=G&l=50&d=PG01&S1=%28apple.AS.+AND+20130321.PD.%29&OS=an/apple+and+pd/3/21/2013&RS=%28AN/apple+AND+PD/20130321%29 <comment><USER2> Seriously, just allow the battery to eject on impact. The problem was solved; then apple made the problem again by having a non-removable battery.

<comment><USER3> Wow, I never realized this... So interesting!

I remember tossing my Nokia 3310 to a friend, and I completely overshot him. It hit a cement wall and just blew apart (disassembled) into several parts. After I pieced it back together I couldn't believe that it still worked. Try that with an iPhone...

<comment><USER4> I had a Nokia phone that had a flip, forgot the model name.

Once I dropped it from 4 stories high in a shopping center, parts flew everywhere, even parts that were supposed to be glued got unglued and flew.

But the flip got no damage, neither the screen... I went around picking the parts and assembling the phone again, interestingly one glued part was seemly hold in place only by the glue, but I noticed that if I twisted it only slighly, it would fit in place, and stay put, with the tension holding it in place without looking ugly, just awesome engineering.

After I assembled it entirely again, it worked fine, like if nothing happened, the only thing that could hint the accident was that any minor impact now made it fall apart again (because the formely glued parts now being held in place by tension).

</comment></comment></comment><comment><USER5> I wonder if we'll get a deluge of jokes about which side a buttered iPhone would fall on.

<comment><USER6> Well, it wouldn't be much of a joke since this patent makes it predictable.

<comment><USER5> But the claim is the butter also makes it predictable, since "toast always lands buttered side down".

<comment><USER7> After toasting the iPhone, its electronics should no longer be in working order, so only the butter should be exerting its orientation preference.

</comment></comment></comment></comment><comment><USER8> Wouldn't it be more effective to deploy a small parachute?

<comment><USER9> No, the amount of surface area the parachute would need would in order to apply sufficient braking force in time would be too large.

That said, a bumper case where the "bumper" was an airbag would be eminently practical. If the phone could notify the case that it had been falling "too long" (which is to say the phone now believes it is travelling too fast to resist damage) a small electrical trigger to activate a chemical reaction and inflate a bumper cases 'edges' to 10x their size would effectively prevent any damage for most situations. Unlike the parachute the energy absorbing effects of airbags are available nearly instantly.

</comment></comment><comment><AUTHOR> here is a more readable article: [http://appleinsider.com/articles/13/03/21/apple-looks-to- pro...](http://appleinsider.com/articles/13/03/21/apple-looks-to-protect- dropped-iphones-by-shifting-their-orientation-mid-flight)

</comment><comment><USER10> I suppose if you can keep the device from falling on a corner then you're good. That seems to be the worst-case scenario. It'll probably be a couple years before we see this in any of their devices.

</comment><comment><USER11> Is apple trying to patent a gyroscope?

<comment><USER12> No, they're trying to patent a system in which one component is a gyroscope. They reference previous patents related to gyroscopes - if you bothered to look at the application.

</comment></comment><comment><USER13> Or they could actually design the iPhone to actually have enough metal and thick enough glass.

I've dropped my Samsung Nexus S a hundred times without damage. Just saying.

</comment><comment><USER14> iPhone Cat coming soon.

<comment> nevi-me iCat Phone coming soon too

</comment></comment><comment><AUTHOR> i wonder if this will be implemented...

<comment><USER15> I doubt it. They're trying to patent this because the economic incentive is to patent everything regardless of if you plan to use it.

<comment><USER16> Says something about patents and their effect on society, doesn't it?

<comment><USER17> He just did?

<comment><USER16> The gp commenter just said something about the company's motivations for patenting. I expanded it by pointing out the implications for society in general when all companies do that. (Kantian imperative)

Yet another way to think about it: It turns IP into a zero-sum game, where it should be a positive-sum game.</comment></comment></comment></comment></comment>


Digg overtakes Facebook; Both cross 20 million U.S. Unique Visitors - <AUTHOR> http://blog.compete.com/2007/06/20/digg-overtakes-facebook-cross-20-million-visitors/ <comment><USER2> Congrats to both sites, although I rarely visit Digg anymore and am addicted to Facebook. Honestly, I'd rather have the market that Facebook has, rather than the Digg market. I believe because of it's start, Facebook has a solid hold on the college age market, while digg has a nice footing in the geek area.

</comment><comment><AUTHOR> Thought this was quite interesting: "Average stay on MySpace is 2x more time than on Facebook." What you think? Comment 4 was also quite interesting!</comment>


Space pier, an alternative to the space elevator. - <AUTHOR> http://autogeny.org/tower/tower.html

<comment><USER2> All this makes me wonder, why not just use nuclear spaceships? Aren't they much more viable?

</comment><comment><USER3> Interesting.

I played around with the math a few months ago. Looks like you could do the same thing from the ground, with minimal rocket assist. You'd just get the payload package hotter than a fireball on the way out -- sort of a reverse re- entry. But a ground-based, low atmosphere mass driver could easily be built without huge diamond towers. A cannister/payload system could be constructed which would include a final rocket assist into orbit.</comment>