Show HN: Bookmarks manager – Fastbmk.com - <AUTHOR> http://fastbmk.com/ <comment><AUTHOR> Hello HN! I built Fastbmk.com as a fast, lightweight and reliable bookmarking service. You can create bookmarks with tags and notes. List bookmarks by tag. Search bookmarks. Import and export bookmarks.

Browser addon is available for Firefox and Chrome. Using addon, you can create bookmark and check if the current page is already bookmarked.

I intentionally used a minimal set of web technologies to create a tool for everyday use, which doesn't waste resources of client's computer.

Minimalistic design Low CPU/Memory usage Quick server responses

I already use the service on a daily basis and it works just fine. So I invite you to try it too :) Currently the service is more like a minimum viable product. A lot of features are planned to be implemented in the future.

So your opinion, questions, suggestions and ideas are greatly appreciated :)

<comment><USER2> Good stuff mate! why dont you give it a shot at my rollout system, and get your project rolling..

[http://grandappstudio.com/roll- out?utm_source=new_yc&utm_cam...](http://grandappstudio.com/roll- out?utm_source=new_yc&utm_campaign=promo)

We are happy to introduce awesome Downtime alerting system for your website and webservices.

Is your website really up and running all the time ?

Every hosting provider gives you a guarantee of 100% availability. Do you know its the really the case ?

Your website goes down for so many reason, Can you always keep an eye on them?

Don't worry, We will take care of this, even when you are sleeping. We will notify you on your phone via SMS or Email. So that you can take remedial action.

Cost: 10$ Per website Per Month paid annually.

Interested folks can signup this form, we would on board you ASAP. First 500 signups gets 2 months subscription completely free.

[https://goo.gl/forms/qMdzFqwcH9OzVeh52](https://goo.gl/forms/qMdzFqwcH9OzVeh52)

<comment><AUTHOR> No, thank you :)</comment></comment></comment>


Why I hate all articles about design patterns (2016) - <AUTHOR> http://www.smashcompany.com/technology/why-i-hate-all-articles-about-design-patterns <comment><USER3> Bizarre. The article doesn't explain much about why the author hates design patterns. The best I could come up with is in this passage:

 _Perhaps I'm being unfair to Design Patterns, but those articles [about design patterns] seem like the worst kind of tech writing, the most likely to inspire useless discussion that doesn't help move a team forward. Catering to software developers perfectionism tends to be bad for business. And this particular type of article seems to be the most extreme in that regard._

To recap, DP articles:

\- are the worst kind of writing (still no explanation)

\- likely to inspire useless discussion (sometimes play is a lie?)

\- catering to perfectionism (this can be said about any tool)

The article reminds me of many folks I've met who despise analysis and planning. They're constantly getting themselves into trouble that requires quick action. When it works, the chalk the success up to their quick action. They denigrate project planning tools of nearly every stripe. They're also typically very bad communicators and don't manage time well.

But in the end, the need for quick action resulted from the immense dis-ease the person feels around planning, brainstorming, and up-front analysis. The cycle repeats on every project.

There must be an anti-pattern that describes this kind of behavior...

<comment><USER4> I thought it was explained really clearly at the very beginning: It's what those cargo cult architecture conversations are full of. The ones where people sound smart but aren't actually designing anything useful.

I think the author might be taking it a bit too far, but they are certainly describing a real thing that I see all the time. Which is bad engineering choices made without thinking and then justified with a string of design pattern terms, used incorrectly.

<comment><USER5> > "The ones where people sound smart but aren't actually designing anything > useful."

I've been part of lots of teams and teams composed of great and poor levels of talent and I've never seen this type of behavior which you describe. Usually the folks getting up in arms over architecture are pissed because folks with experience shot down their idea for reasons of pragmatism and the individual couldn't handle it because of ego.

<comment><USER6> You may have been lucky. One of the worst messes I had to make work was nonsense a senior dev was working on up until he quit. It was a mess of object oriented wankery that soured me to even the term 'object' for years. He needed to implement 6 funtions with a couple of sql statements to do session handling in php, and instead there were factories and visitors and repositories and facades and I couldn't tell you what else this guy was thinking. He was supposed to be done, and it just needed deployment, but it ended up taking me 3 months, and a half dozen late night deployments and rollbacks before I managed to get it working. If I'd been more experienced at the time I would have ripped it all out and just implemented the 6 functions we needed, but I really assumed he'd had a good reason for the nonsense he'd written.

<comment><USER7> Years ago I was a TA for first year computer science. I graded my students' assignments on code style, with reference to automatic grades generated by a test suite.

One of the most interesting things I learned was how much variance there was in code size between submissions. I would first read an assessment from a good student which was completely correct and 500 lines long. The code would seem reasonably clear, compact and well written. Then I'd pick up the next assignment, which had also gotten 100% on the automatic tests and it would be only 150 lines of code. And the code wouldn't seem any more compact or unreadable compared to the first - they both looked like decent solutions; but one of those solutions had implemented the same spec in 3x less code!

And then I'd pick up a submission by a weaker student who got 50% of the automarking results done. The submission would be 600 lines, and you could see the sweat that had gone into writing it. The student was clearly struggling to keep track of all the moving parts in their code. If that was all I looked at I would have assumed the assignment would have taken 1000 lines to implement, and be way too hard for my first year students.

(In case you're wondering, there was no difference in programming languages, tooling or knowledge. All students were using the same environments to write plain C code.)

The lesson I learned was that its very hard to tell whether you or your coworkers are actually using a good approach to solving your problems. I never hear people say things like "Oh, I think this different abstraction could save us 70% of our code". But having seen enough examples I think its usually the case that those abstractions exist. We just (bizarrely) don't seem to spend any time looking for them. Intuitively I would expect that bad abstractions would be obvious in code, but that seems to be often not true in practice. After reading the first students' submission I usually would still have no idea how long the average correct submission was going to be.

<comment><USER8> It seem clear to me that both students described in second paragraph produced good code, although the shorter one was better. The second paragraph student was clearly behind them. It just does not seem hard.

I heard colleagues say "if we split this away, join these two classes into one and hide it under interface, it will be simpler/shorter". The word abstraction was not used, but it was abstraction they were talking about.

So maybe it depends on local culture, whether people talk about how things are done overall or whether they focus on idioms only.

Edit: fixed typo in clearn/clear

</comment></comment></comment></comment></comment></comment><comment><USER9> > They had begun work in 2011, but they rejected all of the existing document > databases (such as MongoDB or Riak). In 2013 they decided to work on version > 2.0 of their software, which would be a complete re-write, but they decided > to continue to keep JSON strings in PostGres.

That's speaks in their favor, in my opinion. We actually consciously moved the way MongoDB -> PostgreSQL JSONB column, and are pretty happy with that. Sorry, original author, but if you recommended us to use shiny new databases like MongoDB or Riak, we'd probably think of you as a young and inexperienced engineer.

Although I agree about Design Patterns. For example, you'd use/no use ReactiveX regardless of whether you know about Observer pattern or not.

<comment><USER10> The #1 enginering design pattern is to obey speed of light transfer of information latency. Moving data into and out of MongoDB has that unavoidable cost, and it is a waste if the only thing you want is JSON formatting of the same data already in your RDBMS.

<comment><USER11> Overall latency is important. Where it comes from isn't very important. Transferring data a few light-nanos of distance into or out of a colocated Mongo DB instance simply isn't going to move the needle on any important metric. (Disk IO latency might, but that has little to do with the speed of light.)

</comment></comment></comment><comment><USER12> I hate to be negative, but as far as I can tell, the only thing this article does is indicate a lack of understanding of design patterns. Equating them to a pseudo-intellectual exercise is missing the point by a proverbial mile.

Here's a brief explanation: Often when you are coding, you find an interesting solution to a problem. Then when you look at someone else's code, in a different domain, you realise that they are using a very similar solution. You ask them where they got the idea and they say that they saw it in some code in yet a different domain. So you think, "Hey, this seems to be a useful solution to a problem that occurs in several domains". You tuck it away in the back of your mind and when you see that problem again you say, "I've got a solution to that problem!" and you use it.

That's a design pattern. _Everybody_ uses them. The alternative is to bloody mindedly refuse to learn and to use completely novel approaches to the same problems every time you see them. That fact that people write down these solutions and give names to them doesn't suddenly make the solutions ridiculous. The fact that some programmers mindlessly apply "patterns" in the hopes that they can escape thinking doesn't make the solutions bad. That's like saying we should never make libraries because some bad programmers think they can glue 1500 libraries together to make a website without having to know how to program.

What the author is complaining about has nothing to do with design patterns. People sitting around building mythical designs that never get built has been going on since before the time of Fred Brooks. There are whole classes of architects, analysts, and consultants who have mastered the art of getting paid big money to talk impressively about software without ever writing a single line of code. Quite a lot of them write popular blogs! That's nothing to do with design patterns.

I am half curious to read the author's rants about OO, but I suspect I'll find more of the same -- some programmers wrote some terrible, terrible code and called it OO. It must stop! Sigh...

<comment><USER13> I'm partial of the explanation of DP as missing language features. In fact, Design patterns all use the human compiler to check for correctness of implementation.

PaulGraham said "Peter Norvig found that 16 of the 23 patterns in Design Patterns were 'invisible or simpler' in Lisp."

With this mindset, functions (or subroutines) are language patterns in assembler.

In the other extreme, if you use a sufficient advanced language, all your language patterns are actually checked by the compiler and/or interpreter, instead of the programmer. They stop being patterns and are just language features.

[http://wiki.c2.com/?AreDesignPatternsMissingLanguageFeatures](http://wiki.c2.com/?AreDesignPatternsMissingLanguageFeatures)

<comment><USER14> Isn't there a point where it's more desirable to have 'features' available through patterns, than through the language itself? The larger and more complex the language grows, the more cognitive overhead - so programmers of a hypothetical 'perfect' future language might still use patterns, simply so the language didn't grow out of reasonable proportions.

<comment><USER15> If code is data then in principle you could implement them as libraries rather than language extensions. I don't use lisp or haskell enough to know whether someone has already done this.

That said I'm also not convinced that it would help in many cases. What would you enforce about a wrapper for example other than it's constructed from one argument and returns a different type containing a reference to the original one? If you're not able to do that yourself then would a wrapper library really be any use?

</comment></comment></comment></comment><comment><USER16> Not a good read to be honest. Author does not sound like a solid programmer. Examples he is giving actually say he might be a "change chaser" - A person who would make a change just because he can add something new to his CV.

The fact that guys he was talking about used PostGres to store JSON as a text field literally means that they chose a simplicity over introducing another dependency from no-sql db with all the cost of supporting it. Unless one needs to search over information stored in JSON it is perfectly and probably disarable to store it as a text field.

Author remark "they spent years for what they can spent weeks just by using a framework" is a proof that he has little or no experience of doing such things himself. No framework can save you so much time. I was designing UI using frameworks and using just basic language tools. Difference is in trade off obetween quality of standard framework components over flexibility of desinging your own. Time is not so much different and might even take longer with frameworks as adoption time for frameworks could be long especially for teams with a high turnover.

I decided to not read till the end because author did not present himself as a person whose opinion might be useful.

</comment><comment><USER17> I get what he's trying to say. I think he expresses it very unclearly. I'll try to elucidate the main idea in an example:

If I give a programmer a task. His task is to create an api that can email someone a message with a subject and tell me whether the message is successfully sent. All I need is this:

        func email(address: str, subject: str, message: str) -> bool

I do not need this:

        Class Email(AddressObject, SubjectObject, MessageObject, ConfigObject, ClientObject).send_mail()

The definition of the Email object vs the email function is about 10x more complex with little benefit. The send_mail method is virtually IDENTICAL to the email function, the objects and patterns you are building are just extra cruft you are layering around the email method. Not to mention you literally have to define 5 extra objects as well. It's obvious to me that most of the code is 100% cruft yet why does everyone who is knee deep in design patterns gravitate towards that Email object? I look at Email object and I think: I get what you're doing, but WHY.. what is the point? Are people really unable to see why this abstraction is unneeded?

Some clown once told me dependency injection (The example object pattern above) helps with unit testing. I agree. Literally, the Email object has 5 extra objects that need to be unit tested so more unit tests!. More lines of code = more unit tests = a better program... In all seriousness, the core method is send_mail and that cannot be unit tested because it's IO. Everything you build around that method is extra BS that only needs to be tested because you made it exist.

Sometimes it baffles me how people just start using design patterns everywhere. I think what's going on is that people reach this cathartic state when they understand a new mind bending concept. Dependency Injection is a bit of mind bender, and this catharsis people feel when they reach a point of understanding blinds them from the downsides of patterns in general. Actually dependency injection is a stupidly simple concept, it's the word "dependency injection" that adds artificial complexity to the concept by making it sound cool and harder to understand.

<comment><USER18> Of all the patterns you could pick on, you pick on one of the most useful in modern OOP; however, I think you _actually_ intend on picking on dependency _inversion_ , not injection. Dependency injection is simply an automated way to satisfy constructor dependencies in OOP languages where your intent is to invert a dependency graph. I won't go into why dependency inversion (see: Dependency Inversion Principle, the "D" in SOLID) is so valuable because much has already been written on the topic.

As far as your email example, sometimes the language's basic type system abstractions (e.g., string, integer, etc.) do not encapsulate a real-world concept sufficiently. Encapsulation failures can frequently lead to bugs when edge cases are hit. I may, indeed, need to create an Address class to replace "string address" parameters if there is validation logic inherent to the existence of an email address in my code. If there isn't, then the base type of string would do just fine, of course.

<comment><USER17> >Of all the patterns you could pick on, you pick on one of the most useful in modern OOP; however, I think you actually intend on picking on dependency inversion, not injection. Dependency injection is simply an automated way to satisfy constructor dependencies in OOP languages where your intent is to invert a dependency graph. I won't go into why dependency inversion (see: Dependency Inversion Principle, the "D" in SOLID) is so valuable because much has already been written on the topic.

Both patterns are total failures. You are talking about the most misguided religiously followed pattern(s) in all of modern programming. AN equal amount has been written about how horrible both DI concepts are if you care to look. You think putting an acronym in your response and using big words like injection proves a point? Not SOLID at all. It proves nothing.

You have literally ignored my main point. It baffles me how blind some people are. The Email object requires 10x more code and 10x more abstractions and 10x more unit test coverage to finish then a singular function. You haven't even addressed this fact yet.

>As far as your email example, sometimes the language's basic type system abstractions (e.g., string, integer, etc.) do not encapsulate a real-world concept sufficiently. Encapsulation failures can frequently lead to bugs when edge cases are hit. I may, indeed, need to create an Address class to replace "string address" parameters if there is validation logic inherent to the existence of an email address in my code. If there isn't, then the base type of string would do just fine, of course.

Do you seriously think that encapsulating an email address in an object makes a difference? Here's some "validation logic" for you:

        //raises error if invalid
        validate_email_address(email: str)

I cannot make an example more clear. If you want to send a VALID email all you need is a function that validates an email and a function that sends it. You do not need to shove validation into an extra object then inject it into another one, then instantiate that object then call the send method... Doing this adds NOTHING beneficial to your code.

This one guy told me that by encapsulating the email address into an Address object I am effectively eliminating a runtime exception from the system because the type checker is, in a way, doing the validation. haha. I cannot comprehend how this guy cannot visualize the fact that all he is doing by using an address object rather then a validation function he is just creating a class then basically moving the validation function over to be a method of that class. The runtime error can still occur... just in a different location and obscured by useless abstractions and code surrounding it.

Many OOP patterns are pointless abstractions. Many smart people hate OOP all together, (including the founder of YC and this site). Maybe you should look into why.

You are basically the topic of this article.

<comment><USER8> > 10x more unit test coverage to finish then a singular function.

That is not true. Assuming that both have same functionality, e.g. both either validate address correctness or both don't, you need exactly same test cases. The only difference is that they will be structured differently - in one case you validate address as part of `AddressObject` test and in another as part of `func email` or `func validate_email_address`.

The tests with valid and invalid address however needs to exist in both cases.

Whether you go by functional or object oriented way, validation should be separated from main. It can be in another object or in another function, but it definitely does not belong to main function that does also sending. There is very little difference between two, the only one is that whether you validate before hitting send function of after.

> You do not need to shove validation into an extra object then inject it into > another one. Doing this adds NOTHING beneficial to your code.

It is not big deal either. It does not make it harder to understand, both variants are dead simple. Both are immediately readable. Frankly, people who have low abstract thinking or were lazy to learn basics of OOP hate it. It is the same as with people who hate any other paradigm - functional programming and what have you. Functional programming is too hard to read unless you have put work into learning it.

There is such a thing as bad OOP, but when you pick dead simple easy to read example and claim it is something complicated, the the issue is not with OOP.

<comment><USER17> >That is not true. Assuming that both have same functionality, e.g. both either validate address correctness or both don't, you need exactly same test cases. The only difference is that they will be structured differently - <USER2> one case you validate address as part of `AddressObject` test and in another as part of `func email` or `func validate_email_address`.

Typically when you make a class. You create additional methods under that class. Those additional methods such as getters, setters, constructors, all need to be unit tested for full coverage. Like I said... Cruft code.

>Whether you go by functional or object oriented way, validation should be separated from main. It can be in another object or in another function, but it definitely does not belong to main function that does also sending. There is very little difference between two, the only one is that whether you validate before hitting send function of after.

We're in agreement here except I never brought up functional programming. Where in my post did I say it? I'm talking about procedural programming. Like C.

>It is not big deal either. It does not make it harder to understand, both variants are dead simple. Both are immediately readable. Frankly, people who have low abstract thinking or were lazy to learn basics of OOP hate it. It is the same as with people who hate any other paradigm - functional programming and what have you. Functional programming is too hard to read unless you have put work into learning it.

This is besides the point. I don't care about how hard or how simple or how lazy people are. I'm talking about pointless logic and unneeded abstractions. This is what the article is talking about. Here is a way to make it even more clear. Compare the two below:

        Class Email(AddressObject, SubjectObject, MessageObject, ConfigObject, ClientObject).send_mail(msg: str, subject: str, address: str)

        func send_mail(msg: str, subject: str, address: str)

Do you see how the send_mail method is IDENTICAL to the send_mail function? The class and the dependencies getting injected into the class are a pointless layer of abstractions when ALL you need to send an email is the send_mail method. This is the core of the argument. Don't get into semantics about people being lazy.

And also, again, I never mentioned functional programming. I'm not talking about it. I'm talking about straight up procedural programs of just regular functions that you see often in C code.

>There is such a thing as bad OOP, but when you pick dead simple easy to read example and claim it is something complicated, the the issue is not with OOP.

I picked something dead simple and easy so readers can understand what I'm talking about. You'd rather me hand you some OO source code so you can parse that insanity?

<comment><USER8> > Typically when you make a class. You create additional methods under that > class. Those additional methods such as getters, setters, constructors, all > need to be unit tested for full coverage. Like I said.

That is great argument for why full coverage is nonsense. Why would you test getters, setters and constructors if they do little?

> Compare the two below

I read and understand both just fine. Moreover, second one must have a place where equivalent of config and client objects go - but I dont see where it is. Or, you added do-nothing config and client objects go to OOP example to make it look worst. OOP example also have address twice, subject twice and message twice.

Here is more equivalent code:

* Class Email(AddressObject, SubjectObject, MessageObject).send_mail()

* func send_mail(msg: str, subject: str, address: str)

> I picked something dead simple and easy so readers can understand what I'm > talking about.

The trouble is, that readers dont see it.

The point of functional was analogy.

<comment><USER17> >That is great argument for why full coverage is nonsense. Why would you test getters, setters and constructors if they do little?

Errors and code changes can happen at anytime and anywhere and in places you never look. You have full coverage for full safety.

>I read and understand both just fine. Moreover, second one must have a place where equivalent of config and client objects go - but I dont see where it is. Or, you added do-nothing config and client objects go to OOP example to make it look worst. OOP example also have address twice, subject twice and message twice.

The function doesn't need a config object or a client object because those are patterns and abstractions that are unnecessary. That is the point of the article. Patterns that are blindly followed religiously and abstractions used in a way that is excessive.

>The trouble is, that readers dont see it.

It's not possible to speak about what other people see. You can only speak to your own intelligence which is the only logical possibility here.

>The point of functional was analogy.

The point was that you think functional and oop are just two different styles of programming that are both equal and good. This is incorrect. One is better than the other but at the end of the day I wasn't even comparing those two styles.

<comment><USER8> Which patter requires config object and client object for send mail functionality? I read a lot about them and there is none. So, unless you can name it, you are making stuff up.

It is not even about abstraction. I can write func send_mail(msg: str, subject: str, address: str, from: str, server: str, port: num, <following 20 config variables>) and have procedural code with same functionality.

Writing test for every getter and setter will not give you safety at all. This sort of test is completely pointless.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> Design Patterns are used very often; you probably just don't notice them. Most of the patterns described by Fowler [1] can be found in large web application frameworks.

For example, Ruby on Rails uses Active Record, Page Controller, Template View patterns. If you look at an ORM, for example Hibernate or Doctrine, they use even more patterns described by Fowler.

But of course they are mostly used in frameworks. If you are writing a CRUD app, just take a web framework and make everything as simple as possible.

[1] [https://martinfowler.com/eaaCatalog/](https://martinfowler.com/eaaCatalog/)

</comment><comment><USER20> All these comments are terribly reactionary. I completely agree with the author.

Before you write a design pattern, abstraction, or interface, ask yourself: Is this the simplest possible thing that can work?

And then: Will I ever touch this code again?

And then: How hard would this be to rewrite if the requirements change?

Design patterns were meant to future proof code, but usually they just introduce complexity and useless abstraction, or serve to paper over limitations of your language. You probably can't predict the future as well as you think you can.

Your program is a document. You can change it. You can make it do anything.

<comment><USER21> > Design patterns were meant to future proof code

That's a misguided but unfortunately common view. Best practice is to refactor to patterns, don't try to divining them from the start.

> paper over limitations of your language.

See [http://wiki.c2.com/?DesignPatternsAreMissingLanguageFeatures](http://wiki.c2.com/?DesignPatternsAreMissingLanguageFeatures)

<comment><USER22> > That's a misguided but unfortunately common view. Best practice is to > refactor to patterns, don't try to divining them from the start.

I would add that IIRC Martin Fowler himself, a manwho writes whole books dedicated to desing patterns and software design, is also the man behind the "monolithic design first" mantra.

</comment></comment></comment><comment><USER23> I too misunderstood the value of design patterns when I was lad. Dr Mike Lance set me straight, and I'm forever grateful.

</comment><comment><USER24> Anyone have any good articles about design patterns that they've bookmarked or feel like sharing?

</comment><comment><USER25> Legit question: where does one learn new design patterns if not from articles?

<comment><USER26> ... books by the authors of such patterns ?

</comment></comment><comment><USER19> The problem arises when people use something just because they think it's cool and someone wrote about it on Twitter and not because it has clear advantages compared to other solutions. Do not blame design patterns if you don't understand them. But you can blame book authors for not explaining it to you properly; maybe they don't understand the patterns too.

Also I disagree about DB and normalization: in most cases the best choice will be SQL DBMS and normalized data. Please let me explain why:

\- normalization saves you from duplicating data; MongoDB will make you do the opposite. Updating the data will be more difficult and you will spend more time writing the code.

\- fixed schema will make it easier to understand DB structure for new developers and helps you to detect errors; with MongoDB all invalid data will go straight into the storage and you will spend additional time fixing them later.

\- foreign keys and transactions save you from saving inconsistent data into the database; MongoDB won't help you with this.

Designing a database properly doesn't require much thinking, it is a natural thing and you are not losing time.

But I understand what the author is talking about. Recently I was using two of Google's products, Doubleclick for Publishers and Google Analitics. Their UI is super slow, at least on my hardware. One Chromium tab with DFP page consumes over 700 Mb of memory. When I decided to inspect it, I found that on DFP page they used Dart "apps" compiled to JS; each of them was not less than 2.4 Mb. Even the "changelog" app which was just displaying information about recent changes (yes, they did it as a separate app).

In Analytics UI, they decided to use Material Design with large number of animations, it is very slow and UI elements are too big for 1280px wide display. It looks more like your legacy enterprise app written 10 years ago in Java and IIS, rather than a Google product.

They could just use something simple, like Symfony Framework and jQuery and avoid most of those problems. I think the reason why they didn't is because Google employs smart people and gives them a boring job; to entertain themselves they tried to play with something new, like Dart or make Android- like UI but didn't have enough time to do it properly.

<comment><USER27> > It looks more like your legacy enterprise app written 10 years ago in Java > and IIS

I would like to see this, given that IIS never had an official Java ISAPI module.

<comment><USER19> Then let's change it to "IIS and Java Applets".

</comment></comment></comment><comment><USER28> I love design patterns because they tell me where my company shouldn't be focusing.

One thing we did very early on was going after clients where there are no well-established design patterns.

</comment><comment><USER29> I hate all articles about monads. There, I got it off my chest.

</comment><comment><USER29> This is a really serious indictment, folks: "Also, they were doing some unusual things, such as storing JSON strings in a text field in a PostGres database"

<comment><USER30> Don't understand if you are being sarcastic. I can say that the giant blobs of XML in our text fields are very annoying. I have to compare them with Kdiff and too many of them don't fit in DBVisualizer's buffer.

<comment><USER31> I think sarcastic. Psql has great support for json - they were probably taking advantage of it. If you've already got psql set up in your project and have minimal json storage requirements, it can be all you need. You also gain the possibility of retaining some normalization of the data if necessary, which is a lot more complicated if you throw it all in an entirely different database.

<comment><USER32> Small nit: psql is the command line client bundled with Postgres (PostgreSQL). And yeah, the JSON/JSONB support in Postgres is pretty nifty. Postgres 10 added full text search for JSON/JSONB columns.

<comment><USER31> Oh geez, you're right. It's really the only way I use postgres so I kind of equated the names, but yeah, different tools.

</comment></comment></comment></comment></comment><comment><USER33> > Perhaps I'm being unfair to Design Patterns, but those articles seem like > the worst kind of tech writing, the most likely to inspire useless > discussion that doesn't help move a team forward.

Design patterns have their place, though I can see merit to arguments that assert they have been emphasized out of proportion to their utility over the years. But this is a strange critique, given the content of this particular article.

</comment><comment><USER34> The issue I am having with design patterns is that they are full of big weird words that doesn't mean anything to a new programmer.

</comment><comment><USER35> If you have only done greenfield development and source-based extension (instead of having to either provide 3rd party extension points or use them), your opinion on modularity is invalid.

</comment><comment><USER36> Patterns exist whether or not you are aware of them or give them a name. Most nontrivial programs will end up recreating patterns whether the programmer is conscious of them or not.

</comment><comment><USER37> It's much easier to express what's wrong with design pattern chatter:

Each design pattern represents a failure in the host language to provide facilities sufficient to abstract the pattern as a library component. when you find yourself relying on design patterns, it is a sign that it is long past time to switch to a more expressive language.

<comment><USER38> Indeed, I wrote a bit about that here [https://drewverlee.github.io/tags- output/Design%20Pattern/](https://drewverlee.github.io/tags- output/Design%20Pattern/).</comment></comment>


SICP Distilled: An idiosyncratic tour of SICP in Clojure - <AUTHOR> http://www.sicpdistilled.com/ <comment><USER2> This was a Kickstarter a year ago (i baked too): [https://www.kickstarter.com/projects/1751759988/sicp- distill...](https://www.kickstarter.com/projects/1751759988/sicp-distilled)

Unfortunately the author still not be able to fullfill the goals :/ So, bookmark this and visit it in a year or two again.

<comment><USER3> I am with you, and also a backer. The original goal was exceeded by a wide margin (£12,927 pledged of £3,500 goal). 12K GBP is a non-trivial amount of money. There are no videos (if you exclude a low quality recording of a talk on the project [https://www.youtube.com/watch?v=LVM8N0eH9Qk](https://www.youtube.com/watch?v=LVM8N0eH9Qk)), no screencasts and the text only covers a few of the topics outlined in the campaign.

<comment><USER4> Either of you please email me with your backer number and I can refund you or turn what you paid into a donation to Médecins Sans Frontières if you are not happy.

I am very pleased with what is there so far, think it genuinely captures all the best bits in an accessible way. I am most proud of the Escher and Evaluator bits and associated projects.

I have lots more partially complete, feel I have a fair bit of momentum now and do still intend to make videos as I said in the update to backers, backers will see them first. I am genuinely sorry it has taken so long to get this out.

I think I was quite fair minded re: pricing etc during the kickstarter. I changed it from a sliding scale to allowing unlimited people taking the lowest amount (£20), then created a 'pay what you can' tier and invited people to switch to it if they wished.

Best wishes, Tom

<comment><USER5> It seems like a communication problem. If you're still going forward but don't push sub-par content out in the public due to pressure, this is acceptable; but if people don't know (I can't read the KS status updates, but there's not many of them) they'll be angry just because of that.

</comment></comment></comment></comment><comment><USER6> I feel very uneasy about this project.

SICP is a classic text, and although it is old, it has not aged. I wonder if this is a sign of a stagnation in the field of computing, that as the machines we use become exponentially more powerful, we still know very little about how to use them. In any case, SICP is still an excellent introduction to computing and does not need to be updated just yet.

The name "SICP Distilled" feels very misleading. The programming language has been changed, in what I assume was an attempt to be more trendy, and the content has been changed to the point that it only superficially resembles the original text. There is no better language to explain the concepts of SICP than Scheme, and it appears the author understands this, as he had to remove sections of the text to compensate for Clojure's unsuitability. It appears that he changed or removed a large portion of the text, in fact, and added in their place new ideas which are arguably unrelated to the spirit of the original book. Perhaps it is merely the name "SICP Distilled" that makes me apprehensive, and I would be happy if it was marketed as something completely unrelated, with only a nod to SICP as its inspiration. However, it feels wrong as it is.

Peter Norvig wrote that SICP "is a very personal message that works only if the reader is at heart a computer scientist"[1] It is entirely possible that this project will bring some of the most important ideas of SICP to those who do not fit that description. But is that a goal we should be striving to achieve? This question makes me think back to a portion of the quote, on the very first page of SICP, by Alan Perlis: "Above all, I hope we don't become missionaries. Don't feel as if you're Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don't feel as if the key to successful computing is only in your hands."[2]

[1] [http://www.amazon.com/review/R403HR4VL71K8/](http://www.amazon.com/review/R403HR4VL71K8/) [2] [https://mitpress.mit.edu/sicp/full-text/book/book- Z-H-3.html](https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-3.html)

<comment><USER7> I haven't read this new book yet, so I can't address your contingent criticisms of it, but some of your criticisms are not contingent on the contents of the book, and those I think I can refute.

We've actually learned a lot about how to program since SICP was written; Clojure embodies some of that knowledge.

To take one example, Scheme was built around the state-of-the-art FP- persistent data structure of the 1950s, the singly-linked list, which was still state-of-the-art in the 1980s. Clojure's standard library includes state-of-the-art production-quality data structures of the 2000s, which can support many more operations persistently than singly-linked lists can.

To take another example, miniKanren, which is also in Clojure's standard library, is a dramatically more powerful logic programming system than anything that was available in the 1980s. Basic miniKanren is small enough that you could in fact present it, starting with mu-Kanren, in a book chapter. This may be a better way to introduce people to nondeterministic programming than the simple temporal backtracking approach in SICP.

Of course, we've learned a great deal about formal semantics, types, and proving properties of programs since then, some of which could be presented productively even in dynamically-typed languages like Clojure.

Perhaps most importantly, we've learned an enormous amount about building distributed systems since then.

SICP is, to my mind, largely about different relationships between time, memory, and programming. It begins with a timeless, memoryless reduction semantics, and expands from there, exploring different relationships with time: mutating, backtracking, lazy, and so on. Since SICP was published, some new approaches to time in programming have become important: transactional stores, although those were already in use in niche applications like transaction processing and business data processing in general; incremental computing, where parts of your program are re-executed by need, while leaving other parts alone, although that was already in use in niche applications like compilation of large software systems; and partial evaluation, which, again, existed but was not yet popular.

A SICP for 2015 would surely incorporate some of these things, though I'm not sure which. And surely there were lessons the authors themselves learned in writing SICM that could be deployed to good effect in a new SICP, as well.

<comment><USER8> The backtracking in sicp's logic language is more like minikanren than Prolog. What minikanren offers in addition is better integration with Scheme (and more painful syntax).

Upvoting; just had a well-actually to add.

<comment><USER7> Hmm, that's an interesting point. I didn't realize that.

</comment></comment></comment></comment><comment><USER9> I think this is awesome! One thing – would be really awesome if examples would be editable and you could evaluate them via ClojureScript somehow, that would make a huge advantage I think.

</comment><comment><USER10> "To use an analogy, if SICP were about automobiles, it would be for the person who wants to know how cars work, how they are built, and how one might design fuel-efficient, safe, reliable vehicles for the 21st century."

On that note can anyone recommend SICP-equivalents for automotive, locomotive and aerospace engineering?

<comment><USER11> I can't speak to locomotive or aerospace, but I found The Reluctant Motor Mechanic by John Fordham a great introduction to how cars work. It was written in 1979 and you can pick up a used copy from Amazon for approximately $0.01+shipping.

It's a thorough introduction to how the whole car works, written to be understood by actual humans who don't have experience with engineering. He goes through each system, starting with the engine, until he has covered every piece of equipment inside your car. It doesn't take as long as you'd think, either - he's pretty concise.

It was written in 1979, so it only covers technology up to that point, but since the car is basically the textbook case of what you can achieve through incremental improvements, it's still pretty relevant. Plus, it's got a lot of good illustrations!

</comment></comment><comment><USER12> What is the sense in teaching SICP in a language that has no tail optimization? McEval would run straight into the wall.

<comment><USER13> You can use recur for tail call optimization in Clojure, though it's messier than Scheme.

> Note that recur is the only non-stack-consuming looping construct in > Clojure.

[http://clojure.org/special_forms#Special%20Forms--%28recur%2...](http://clojure.org/special_forms#Special%20Forms--%28recur%20exprs*%29)

<comment><USER14> I personally think there's something to be said for making tail recursion explicit, as Clojure on the JVM requires, although the greater mess is not good, especially for introducing the concepts, and Clojure on the JVM can't do all types of desirable tail recursion.

</comment></comment></comment><comment><USER15> Excercise 1.5 needs fix, def form is is invalid

<comment><USER4> Thanks! (you might need to shift-refresh to see it yourself as I set cache headers your browser should also honour)</comment></comment>


Show HN: Yuptude – a tiny bookmarklet that controls HTML5 video speed - <AUTHOR> http://yuptude.com <comment><AUTHOR> Hey there, HN!

A few months ago, I threw together a simple tool to control the playback speed of HTML5 video on sites that don't have a speed setting like Youtube.

It has turned out to be pretty useful for me, and I use it constantly to quickly consume content on sites all over the web. It even works on Netflix, if you're interested in watching movies in a fraction of the time!

I figured others might find it useful too, so I cleaned it up, made a little website, and put it out there. I'd love to hear any feedback y'all have!</comment>


Where's a Place to Hire Reliable Freelance Developers for Projects? - <AUTHOR> I have had limited success with upwork and okay/limited success with Code Mentor<p>I am looking for someone to help me create a stock portfolio web app <comment><USER2> [https://news.ycombinator.com/item?id=16875868](https://news.ycombinator.com/item?id=16875868)</comment>


Ask HN: Review my relaunched startup - <AUTHOR>

Hi Hacker News,
This past week I re-launched my new web project called mostrecent.net.
I'd done a small launch for feedback in December with mixed results. I got very little user interest but I did get some good feedback. Overall the site needed to be easier to use and their needed to be more of a "hook". In this case the hook is being able to use Adsense to make money.
The basic idea of the site is to let you, as an expert in your field, build a news page. On this page you can highlight whatever it is on a particular topic that you know to be important. This is different from a blog (where posts quickly disappear off the page) and different from a social news site (where you may post the most relevant article, but the mob decides what gets exposure).
The pages are Drudge Report style portal pages and are edited using a very simple drag and drop interface.
I'd be very interested in getting peoples thoughts as well as suggestions for future versions.
http://mostrecent.net
Thanks!
Ian <comment><USER2> Quick notes:

The design is a turn-off.

The demo editor does not work. I gave my page a name, but none of the link or text buttons work.

Posting a review request at noon on Sunday limits your exposure.

I don't quite get the value prop here -- even if making a page is "easy", it's not easier than writing something on my own blog.

I can't open my own subjects without asking you? What if I don't care about the dozen languages listed?

Server went down at this point. Sorry, man. This is a nice idea but you'll need to give users more power and more reason to use it. Maybe importing links from delicious or similar.

<comment><AUTHOR> What browser are you using that the editor stopped working? You can do any subject you want, in fact I may even add it to the list. I added the box on the left to give the site some initial focus.

<comment><USER2> I tried both FF3 and Safari3 on Mac.

Ah, I see -- I misunderstood the "let me know". I got the impression that new subjects had to go through you.

My other comments stand, though. You need an info/UI designer to go over the site, and you need to improve the value prop to contributors. There are lots of sites in similar areas -- three that come to mind are squidoo, mahalo, and twine.

</comment></comment></comment><comment><USER3> The promise that you, too can make a web page, and it's as easy as surfing the web(!) smells really 1997. Especially considering that the content is all about programming languages and the like, I doubt anyone in the target market is intimidated by making a web page.

Also, just looking at it, what's it for? Making web pages about technology? There are lots of web pages about technology, and lots of places to host new ones.

</comment><comment><USER4> Sweet! Looks like you put a lot of work into this. More content probably needs to be added before you can see exactly how it will be useful to your audience.

I would get rid of the ads for now and spend a bit more time reconsidering the user experience. For example, the color scheme, bold headlines, brief blurb of what the page you are about to click on is. It would also be nice to know what pages are external and which are not.</comment>


Show HN: Patterbuzz - Your Content Your Way - <AUTHOR> http://www.patterbuzz.com

<comment><USER2> Hi Guys, I am the founder of this company and i welcome any comments, suggestions, reviews, criticism etc. send me a mail at email@example.com or comment here..

a bit of description of the project : Patterbuzz enables users to read premium content on their mobile devices and pay for only what they wish to read. So, If you wish to read only a cover story of a magazine, you do not need to buy a magazine for Rs 100/. Instead, you can pay Rs 5/ for only the cover story and read it on your iPAD in an rich and interactive way. this means Patterbuzz wants to unbundle content packaging and let users buy what they wish to. Patterbuzz introduces a digital wallet for the users to make purchases easier and in a pre-paid pay as you go model. In short, we want to be iTunes of publishing industry. This is a unique business model and we are the first ones in India (probably the world) to create this kind of platform for premium content publishing on mobile devices.

Our facebook page is [https://facebook.com/patterbuzz](https://facebook.com/patterbuzz) and twitter handle is @patterbuzz</comment>


Dear Big Company: Why You Need to Hire Me - <AUTHOR> https://www.linkedin.com/pulse/dear-big-company-why-you-need-hire-me-micah-bolen

<comment><AUTHOR> In late July 2010, Peter Eckersley, Chief Computer Scientist of the Electronic Frontier Foundation presented a lecture at the Privacy Enhancing Technologies Symposium held in Berlin, Germany. The lecture, entitled "How Unique Is Your Web Browser?" related to an EFF research project dubbed Panopticlick[1].

For the layperson, Panopticlick runs a simple test on your web browser to see how "unique" your web browser is compared to the EFF's current dataset. As of the writing of this post, my browser fingerprint (aka whorl) appears to be unique among the 5,644,302 tested so far.

At first glance, this may seem fairly straightforward. Panopticlick is relying on cookies, right? Wrong. Panopticlick is relying on IP addresses, right? Wrong. Panopticlick can be tricked by spoofing cookies and/or IP addresses, right? Again, wrong.

So, what does this project and its implications have to do with me and, moreover, why you, Big Company, should hire me? The answer is not that I participated in this project in any way back in 2010, but I that I understand it at a very deep level and have been developing a related project[2]. Don't let the name of my project or the README fool you. If you don't understand what you are looking at, ask a software engineer. If they don't understand what they are looking at, ask me. I am more than willing to offer insight and receive feedback.

Thank you for taking the time to read this brief post. I may add more details if this discussion piques anyone's interest. In the meantime, have a pleasant evening.

Cheers,

Micah

Sources:

[1] [https://panopticlick.eff.org/](https://panopticlick.eff.org/)

[2] [https://github.com/micahbolen/WangularFire](https://github.com/micahbolen/WangularFire)</comment>


Sort tables fast with Sortable.js - <AUTHOR> http://github.hubspot.com/sortable/docs/welcome/?hnd2

<comment><USER2> I needed something that provided sorting, filtering capability for a recent project. After searching high and low and trying a few options, I finally settled on datatables ([http://datatables.net/](http://datatables.net/)). It is incredibly feature rich and works very well for my use case.

Sorting is great functionality but if you really want adoption, I suggest you add the richness required by a variety of use cases. . Sorting . Filtering (regex, case etc) . Searching (column or full table) . Show/Hide columns

I don't mean to undermine to work put in here. It looks great and good luck.

<comment><USER3> We haven't officially announced it yet, but we've been working on a sort of replacement for datatables, that's more fun to use and easier to customize, called Dynatable. It also has searching, filtering, and paginating, and supports using templates for reading and rendering, such that it could be used to make interactive lists, grids, charts, etc.

[http://os.alfajango.com/dynatable](http://os.alfajango.com/dynatable) if you're interested in checking it out.

EDIT: I don't mean to hijack this thread to just plug our project, just seemed relevant to the parent content. I actually really like the idea of modular single-purpose javascripts that are really well done. The issue becomes when each library has to duplicate functions from other libraries due to them being intended for individual use. For example, I imagine a lot of functions in listjs that duplicate some of the functions in jquery (I haven't actually looked through the individual functions in listjs yet, so this is just conjecture), which is great for the times when you're not using jquery, but other times, it's just a bunch of duplicated code.

<comment><USER2> This looks very good. I'll consider this for my next project.

A few things I really like 1\. Applies to tables, lists etc 2\. Nice progress indicator. This is missing in datatables and is a pain point in my current deployment. 3\. stylized lists and charts. Very cool

what i didnt see 1\. filtering. eg: find in column x where string not equal to blah 2\. Searching specific column rather than entire table.

I apologize if this exists and I missed it. Overall, look great. Best wishes on this.

<comment><USER3> Awesome thanks!

 _what i didnt see 1. filtering. eg: find in column x where string not equal to blah 2. Searching specific column rather than entire table._

See the "Year" and "Max Price" examples at the bottom of the "Querying" sub- section under "Operations", right before "Pagination". You would do that by adding your own query function:

        $('#my-table')
          .bind('dynatable:init', function(e, dynatable) {
            dynatable.queries.functions['myQueryName'] = function(record, queryValue) {
              return record.myAttribute != queryValue;
            };
          })
          .dynatable();

Then, you'd invoke the query like this:

        dynatable.queries.add('myQueryName', 'hello');
        dynatable.process();

And that will execute your query function which finds all records for which `myAttribute` is not equal to "hello". Of course, you'd need to bind the above query execution to some user input, like the `change` event of a text field or something like that, and instead of 'hello', you could pass in the value of the input.

This is a common scenario, so dynatable provides a shortcut to this style of invocation of your custom query functions by passing dom elements to the `inputs` config option. So, you could replace both of the above with this:

        var dynatable = $('#my-table')
          .bind('dynatable:init', function(e, dynatable) {
            dynatable.queries.functions['myQueryName'] = function(record, queryValue) {
              return record.myAttribute != queryValue;
            };
          })
          .dynatable({
            inputs: {
              queries: $('#my-input')
            }
          });

This will now cause the `myQueryName` function to be run on the dataset with the value of the `#my-input` dom element and process the results on the `blur` or `change` events of that dom element (the events that trigger the query processing can be changed via the `inputs.queryEvent` config option).

I think this answers both of your questions. If there's a different sort of syntax you had in mind for providing an easier or more straight forward way of doing this, please let me know!

</comment></comment></comment></comment><comment><USER4> I turned it into a bookmarklet which will make every table on a page sortable, if anyone's interested: [https://gist.github.com/zackbloom/7774909](https://gist.github.com/zackbloom/7774909)

</comment><comment><USER5> The "sorting" aspect of it is wrong, 2.44% is greater than 1.03% but shows up last: [http://i.imgur.com/0qmIk3s.png](http://i.imgur.com/0qmIk3s.png)

EDIT: I took a look at the source. There's an extra "data-" field to use as the value to sort with which is hard coded to "0" for the 2.44% row. This also answers my question of how it was sorting the textual date fields properly (each has the year in that data- field).

<comment><AUTHOR> This is intentional. Since that is an "Other" category, I elected to force it to the bottom of the sort order by setting `<td data-value="0">` for that column.

See: [https://github.com/HubSpot/sortable/blob/e07209b89deac83950c...](https://github.com/HubSpot/sortable/blob/e07209b89deac83950cd1e83e4f5bc3796449dcf/docs/welcome/index.html#L266)

</comment></comment><comment><USER6> I've been using the original sorttable.js you reference on your GitHub page for my own product for a number of years.

How does yours differ from that one in terms of features/capabilities?

Is it a rewrite with more modern techniques?

<comment><AUTHOR> Yea, more-or-less.

Here is a short summary of some of the major changes:

– Tables with `data-sortable` attribute are automatically initialized.

– The sort arrows are made with CSS-border triangles instead of special characters.

– The sort arrows are always present but hidden for non-sorted columns so that columns don't resize when sorting.

– `sorttable_`-prefixed class names are now `data-` attributes, so they are valid HTML5.

– The library doesn't attempt to recognize date formats. Instead, it recommends you add `data-value="#{ timeInMillis }"` to your <td> containing a human-readable date string.

I'm sure there are more that I can't think of at the moment, but that's a decent list.

<comment><USER6> Thanks for the replies guys, one additional question I had which I didn't see directly answered would be the type of browsers it should be compatible with or was tested on? The main page shows some browsers listed but I think that was simply demonstration data to show off the script and wasn't actually showing the versions it was supposed to support.

<comment><AUTHOR> Browser support is listed in the documentation ([http://github.hubspot.com/sortable](http://github.hubspot.com/sortable)): IE8+, Firefox 4+, Current WebKit (Chrome, Safari), Opera.

<comment><USER6> Great, thanks! The Internet Explorer one was the one I was probably most curious about. I'll have to give it a test go and see if I can go ahead and use it to supplant the older sorttable in my script ;-).

</comment></comment></comment></comment></comment><comment><USER7> please create a "filterableandsortable.js" too ;)

<comment><AUTHOR> It's a fair criticism. We really wanted to nail the very common use case of: "I put a small table in a blog post and I want it to be sortable and look good."

But I think you're right that it would be great to have a pairable tool which adds filtering and possibly another which adds client-side pagination.

<comment><USER7> Tere's also "keep my table headers frozen" functionality that's often requested along sorting, filtering and pagination.

<comment><USER8> This was a huge point for me when using the old tablesorter script. They had a plugin called StaticRow that would allow you to add the "static" class to a tr tag and it didn't change when sorting. Did you guys implement that too?

<comment><USER4> This library supports that if your static row is the header (uses th tags).</comment></comment></comment></comment></comment>


Chinese pour $110bn into US real estate - <AUTHOR> https://www.theguardian.com/business/2016/may/16/chinese-pour-110bn-into-us-real-estate-says-study <comment><USER2> It's interesting that the article says the biggest foreign buyers of US real estate used to be Canadians. I bet a sizable portion of the Canadian buyers are in fact Canadian Chinese (also HK and Taiwan) who immigrated there in the late 1990s. Having lived in Vancouver, I've seen my family's house quadruple in price from 2005 to 2010. Now that Canadian immigration laws have become more restrictive, Chinese immigrants are using EB-5 to come to the US and settle in places like the Bay Area and LA. This is why I think the Bay Area real estate market still has room to grow and the entire US real estate market will experience a sustained recovery in the next 5-10 years.

</comment><comment><USER3> Better and cheaper than going to war for territory</comment>


When Antifa Hysteria Sweeps America - <AUTHOR> https://www.nytimes.com/2020/06/17/opinion/antifa-protests.html <comment><AUTHOR> After reading this article and his related 1998 article on the mob killings of "sorcerers" ([https://www.nytimes.com/1998/10/20/world/fears-of- sorcerers-...](https://www.nytimes.com/1998/10/20/world/fears-of-sorcerers- spur-killings-in-java.html)) had no choice but to share.

</comment><comment><USER2> It's good to be prepared. The threat is real. Just look at what happened in Seattle: they took over 6 blocks, kicked out all the police, and set up walls and checkpoints for their new country: CHAZ but it has not yet been internationally recognized

</comment><comment><USER3> I think all of those folks know very well that the "antifa" they hear about on Fox News is nothing but a boogeyman. They're not stupid, but they are a lynch mob in search of a victim. Lynch mobs have never been about fear, they've always been about asserting power through violence.</comment>


Ask HN: Throttle FCC (net neutrality) to smallband speeds – Add your sites here - <AUTHOR>

For Apache (snippet):
https://gist.github.com/m1/e5f1f190ba309b500f0a
For Nginx (snippet): https://gist.github.com/kyledrake/e6046644115f185f7af0
Neocities is already throttling the FCC, read the blog post that started this: https://neocities.org/blog/the-fcc-is-now-rate-limited
A list of previously known FCC IP's https://news.ycombinator.com/item?id=7716915
If you use MaxCDN, it's just a settings checkbox: http://blog.maxcdn.com/throttle-fcc-fight-net-neutrality/
Join the fight for Net Neutrality! <comment><USER2> This seems very childish, will likely negatively impact third parties, and doesn't really even get the message (any message) across to them.

It also somehow manages to miss the point of what the Net Neutrality debate is even about... At this point it is mostly about peerage fees and if ISPs can extort them from third parties. It won't suddenly cause internet speeds to drop to pre-broadband levels, even for non-fast lane services.

I now have a negative opinion of "MaxCDN" and "neocities." I've never heard of them before, so now my only opinion is a negative one. Good job?

This is misguided. These guys have the right idea:

[https://www.battleforthenet.com/sept10th/](https://www.battleforthenet.com/sept10th/)

That is more constructive, gets an actual message across (rather than passive- aggressive nonsense), and best of all might actually swell a movement for positive change.

As an aside, if I was a customer of either "MaxCDN" or "neocities" I'd be pissed. You guys are no better than the ISPs, purposely degrading third parties' traffic (between your clients and their users) to further your own agenda.

</comment><comment><AUTHOR> [https://neocities.org/](https://neocities.org/)</comment>


Apple's iPhone X assembled by illegal student labour - noir-york https://www.ft.com/content/7cb56786-cda1-11e7-b781-794ce08b24dc <comment><AUTHOR> Will this deter anyone buying this super expensive phone?

<comment><USER2> Probably not. Slavery was only stopped by "extremists" that caused a civil war. "Nice" people kept on keeping on for the most part.

</comment></comment><comment><USER3> Paywall-locked, can someone mirror?

<comment><USER4> Same thing was published ~two years ago. Basically every time theres big crunch at Foxconn due to new Apple product unveiling they do a "work experience" month, where high school students are enrolled into assembly line sans payroll.</comment></comment>


Spacebrew: Connect interactive things - <AUTHOR> http://docs.spacebrew.cc/ <comment><USER2> I'm not normally one to complain about this, but the page is 8.9mb fully loaded, most of that is images. I'm on ~10 megabit broadband (shouldn't really be called broadband) but it was still noticeable.

</comment><comment><USER3> One of the other contributors to Spacebrew here. Let us know if you have any questions.

Many awesome people on the internets make Spacebrew possible. All of the code is open source and can be found at [https://github.com/Spacebrew](https://github.com/Spacebrew)

Let us know how it works for your projects, we'd love feedback and people's experiences getting started.

</comment><comment><USER4> Is this somehow related to node-red? It looks nearly identical. I always wondered why things like this didn't gain much popularity. They essentially make it extremely easy to interface anything with anything. Hardware, Internet services, local scripting, all of it.

<comment><USER3> We are all going after different parts of the process. For us it was key to make connecting as easy as possible. Another good toolkit like this is [http://noam.io/](http://noam.io/)

They all have different pros and cons. We use Spacebrew a lot at meetups or hackathons where people have existing projects that they'd like to connect, but don't want to have to rewrite them. They can usually find (or we have even had people quickly write) a library for their environment since it is a very simple protocol and they are then on the Spacebrew network ready to publish or subscribe to data.

</comment></comment><comment><USER5> Can someone describe to me what this is? Is it trying to unify IoT services or something?

<comment><USER6> I helped make Spacebrew, its best used for prototyping and sketching IOT. we were really inspired by Proccesing.org and Ardunio, and wanted to make a project that could be used by students and designers in workshops to make an IOT project. Much of the problem was really about having interactive objects and physical computing projects that people made as one offs and being able to connect them together.</comment></comment>


Elon Musk's pedestal is crumbling, exposing Tesla risks - <AUTHOR> http://www.marketwatch.com/story/elon-musks-pedestal-is-crumbling-exposing-tesla-risks-2016-07-11 <comment><USER2> I'm still bullish on anything Musk does. EVs are going to be big business and so are batteries/solar panels. And building the gigafactory and supercharger network was very smart.

The one exception is the Autopilot, which I think he's overhyping as much as everyone else is (wrongfully so). That overhyping is going to put lives at risk, because even if it saves lives in most situations where perhaps a human wouldn't be able to do the same, I think there are also "unexpected" situations for the car's AI that a human _could 've_ prevented. Until that changes, I don't think self-driving capabilities should be hyped up as much as they are now. And hyping them up with footnotes saying human drivers should pay attention regardless of the AI feature is _so much worse_.

Someone put it quite nicely in a comment I saw on Reddit: "I want the self- driving car to be better than the best human driver, not better than the *average human driver."</comment>


Next Up: Arq 7 - <AUTHOR> https://www.arqbackup.com/blog/next-up-arq-7/ <comment><USER2> Very interesting. I've been using Arq 5 for the past year, to back up my MacBook to a Linux VPS. When I read that people had migration problems with Arq 6, I decided to skip that version and hold out for a bit.

The background seems that Arq 6 was a rushed release, and some people found out that their previous backups were hosed after importing them in the new version. The interface (not the engine) was written in Electron, but people did seem to prefer it to Arq 5.

Now they seem to be moving to an all-native interface once more, with an upgrade path that seems to simply adopt Arq 5 backups as-is (not try and convert them).

All in all, Arq is still that one Mac/Windows app that does backups to your own space and is extremely simple to set up.</comment>


Ask HN: Simple little business - what should I call it? - <AUTHOR>

I'm normally OK at this, but I'm struggling here!  Anyone got any original ideas?
I deliver empty boxes to people's homes, they fill them up with their unwanted goods (small electricals etc.), I then collect, list and sell everything on eBay and pay them the proceeds (less commission) straight into their Paypal.
I'd eventually like to be able to sell direct on my own site, avoiding ebay.
It ideally needs to be a common TLD as the customers are unlikely to be tech-savvy.
Update: I didn't expect much attention from this so I kept it brief.  Here's some more info since people seem interested in the business itself.
I'm not started yet - I just used the present tense for brevity above. I'm going to test the market over the next couple of weeks with a sample dropoff to 100 houses. I founded a student storage business [www.thebigspace.co.uk] 7 years ago and so I've got a good grasp of the logistics of collecting and moving boxes. I also have lots of empty boxes and storage space.  Any thoughts on the viability of the business are also welcome... <comment><USER2> UnPackage.com

With spelling of Un-Package in normal copy and also buying Un-Package.com to redirect. Probably get Un-Packages.com and UnPackages.com too until you're sure whether you want the verb or the noun as your main focus.

\----begin sample copy----

Introducing Un-Packages -- a greener, easier, and more lucrative way to get rid of things you don't want. It's just as fun and easy as buying something online, but in reverse!

1\. Put something in a box.

2\. Put it outside.

3\. Wait for pick-up.

4\. Receive money a few days later.

5\. Decide what you want to do with your extra money.

It's really that easy. Request an Un-Package today and have less clutter and more money tomorrow.

_______ end copy ______

EDIT/OFF-TOPIC: Incidentally, I enjoy coming up with names for things and have done it successfully for friends' websites and businesses in the past, but I've never made any money off of it.

I've flirted with charging for a service like this in the past, but I've never gone through with it. If anyone would like a few ideas, I'd be glad to spend a little time on it for either no charge or for an optional gratuity in return for a winner.

<comment><USER2> Furthermore, with the "package" concept, you can take it beyond your locale if and when the economics and logistics are right. I'd send you an unpackage tomorrow if you'd take it.

<comment><AUTHOR> I'll take it if you're in the UK. You don't have to send it - I'll arrange a courier to collect it. Drop me an email: firstname.lastname@example.com

<comment><USER3> This does make me think that you could use the up front cost of sending the package to deter timewasters and filter for quality. If you send a courier for a box of stuff then how're you going to stop people putting excess rubbish out in your boxes and having it collected? You'll be like a high-class litter collector that saves people a trip to the skip (once).

If you get people to pay to send the box to you then you could refund that payment when any item sells? This would encourage people to send stuff that will actually sell.

The postage charge could still be made for your own collections and wouldn't have to be the full charge.

</comment></comment></comment></comment><comment><USER4> I upvoted my favorite TLD on the page (clutterbin.com)

However, I'm curious about your business model.

1\. How much revenue are you bringing in?

2\. What is the commission structure like?

3\. How many customers do you have?

4\. Where is your business located (generally, of course)?

5\. Does this business model scale well?

Thanks in advance, I know I'm prying but it seems very interesting. I've chatted with a friend of mine who tried the 'eBay drop-off center' business but it was difficult because people would drop off their junk and it took a lot of time to sort, research, post, and ship the items. If you've discovered a better way of making money from this process, I'd love to hear more about it.

<comment><AUTHOR> I'm not started yet - I just used the present tense for brevity above. I'm going to test the market over the next couple of weeks with a sample dropoff. I founded a student storage business [<http://www.thebigspace.co.uk>] 7 years ago and so I've got a good grasp of the logistics of collecting and moving boxes. I also have lots of empty boxes.

1\. Zero so far.

2\. I'm going to start at 15% after selling costs (ebay fees and shipping)

3\. I'll start by dropping boxes to 100 houses and see what I get back - if it works at that scale then I think it should scale up.

4\. UK.

5\. I hope so. I suspect it will because I can bulk up similar things and then ship them to the markets where they'll sell well. Eg. Old phones still fetch good money in Africa. XBox and Playstation games sell well in Eastern Europe. Likewise, DVDs are still in demand.

I think the advantage over the dropshop model is:

1\. Much more appealing for householders: I've got loads of stuff that just depreciating year by year. By the time I've found a box, boxed it up, found a dropshop, driven it there, and filled in the forms I could have sold it myself. This way you just pick the box up at your front door, walk round the house and fill it, write your email address on the box, and leave it back at the door.

2\. Scalability: I can do this nationally by shipping inbound boxes for $7.50. I can also use a rep system, whereby local people (think Avon ladies) take on their area on a part time basis.

3\. Low overhead: No premises. Centralised facility for sorting through things - ideally with the facility to simply enter a model number and condition for common items to generate a standard listing, without the need to write anything or photograph things.

Drop me an email if you want - email@example.com

<comment><USER5> Take 30%. Seriously.

<comment> a-priori And, put a minimum on it. They pay you $10 per box (for example) up front, and when it sells you pay back the difference.

You don't want to get burned by people giving you junk that won't sell for anything.

</comment></comment></comment></comment><comment><USER6> clutterbin.com

Think about what you're doing for people and maybe you'll get more ideas.

You're helping people by making it easy to clean up their unwanted clutter and then magically, they get money and peace of mind because they're not surrounded by stuff they don't want :-)

<comment><AUTHOR> I don't love this to be honest. I don't want to be seen as an alternative to the bin - if it's ready for the bin I'm not going to be able to sell it. I want people to feel comfortable putting an old laptop in there, perhaps a 19" TFT screen etc. For me clutter and bin are two negative words.

<comment><USER7> Yeah I was thinking the same thing. Maybe it's good for people looking to get rid of clutter, but what person is going to want to go and buy some clutter?

<comment><USER8> Many, many people. The old phrase "One man's trash is another man's treasure" really does apply. Check the craigslist "FREE" section or look at something like freecycle to get an idea of people jumping on the chance to own something someone else will toss in the trash. Granted, those are free exchanges, but it's not that large of a leap to see people paying for things as well.

<comment><USER7> I agree, but if you're trying to get someone to buy something from you, you don't tell them to take a look at some clutter.

freecycle sounds happy, the products are free, you're doing good by recycling. clutterbin sounds like a bunch of clutter thrown randomly in to a bin that you have to wade through.

</comment></comment></comment></comment></comment><comment><USER9> Hi Alex Here are my ideas. I apologize for mixing up the good ones with the stupid ones.

TossitAndProfit

BoxitAndHawkit

FillPhilsBox

RustyDustyMustyAndBling

CashForYourStash

OneMansTrash

AnotherMansTreasure

SloughOffYourToffStuff

WrapYourCrap

HunkOfPlunkForYourFunkyJunk

KnickKnackBricABrac

BarmyGitsKaboodles

FackYerTackle

LesMoore

JackDawse

LowellWatt

SellDeezTingsMon

TallyMansBananas

MoolaNoFoola

DoshForTosh

TankitAndBankit

<comment><AUTHOR> What a list! SloughOffYourToffStuff - I used to live in Slough, that made me chuckle. TossitAndProfit - as a marketing tool like CompareTheMeerkat would work very well.

<comment><USER3> >TossitAndProfit

You're going to use a mock porn site to promote your gig?

<comment><AUTHOR> There isn't enough porn in marketing.

</comment></comment></comment></comment><comment><USER10> Interesting, I've recently been doing something similar with friends and family but with a charitable twist...

They donate their unused electronics (iPhone, Blackberry, iPods, etc) to me and I give them away to people who need them in exchange for community service hours.

The goal is to get people involved with the community as well as recycle used electronics that would otherwise sit in a drawer for years and eventually wind up in a landfill.

So far I've used craigslist to give away an original 5gb iPod, iPhone 3g and 15" Macbook Pro battery in exchange for ~40 hours worth of community service (Habitat for Humanity and soup kitchens).

I've been tossing around the idea of turning this into a non profit so that donations can be tax deductible. It would be nice to have a monetary incentive to donate used electronics in addition to the feel-good karma incentive.

Right now I'm wrapping up a few projects and hope to dig into this idea a little deeper in the next week or so (come up with a name, look into what it takes to become a 501(c)(3), list some more items that have been donated, etc). When I do that, I'm definitely going to refer back to this thread for some ideas!

</comment><comment><USER11> dude, that's a great idea. I've never sold anything on ebay because I can't be bothered with the setup and management. You're providing ebay outsourcing. that's awesome. Where do I sign up? I have a box of crap right next to me waiting for your address. (I'm in the UK)

<comment><AUTHOR> Amazing - I literally had this idea just before lunch. I've dropped you an email with the details.

For anyone else in the UK, I'm happy to order a courier to collect your box from you. Shipping (£6 I think) will be deducted from the proceeds of sale. For now drop me an email - email@example.com.

At this rate I'll have an IPO on Monday.

</comment></comment><comment><USER12> FromYourDoor.com (a play on "to your door")

ByeByeBox.net (unfortunately .com is taken, but it's only parked)

<comment><AUTHOR> I like ByeByeBox. FromYourDoor would be a great one for a taxi company.

</comment></comment><comment><USER8> I really like this idea. I'm curious on how you avoid the scenario of people thinking you're underselling how much you made on eBay? Or do you not see that as an issue because it's really unwanted stuff anyway, so _any_ money made is a profit? That and you could potentially link them to the auction listing(s) for _their_ items to see the progress.

Maybe have policies that all auctions are $1 starts with no reserve and they get what they get?

<comment><AUTHOR> That's the plan - we'll link their boxes with ebay listings so they can follow it themselves if they want. It's totally transparent.

</comment></comment><comment><USER13> I had a friend that did exactly this in France starting in 2007. I didn't hear about it anymore a year later, so I'd say his venture ended, but I really am not sure. I can't remember the name and google doesn't find anything anymore, as anything touching eBay is SEO'd to high heaven.

<comment><AUTHOR> I'd definitely be interested in talking to your friend. Feel free to pass on my email - email@example.com.

</comment></comment><comment><USER14> Reminds me of cash4gold. I think a better business model would be to pay them directly for the box. The drawback is that you have to become good at evaluating the market value of what's inside the boxes.

<comment><AUTHOR> It's a trust issue. This way, our interests are aligned, and people aren't going to think 'Hey, this might be worth something - I'll hang onto it'. I'm going to get the best price for their stuff, and they can see it. Cash4gold pay as little as they can get away with - I don't want to be 'exposed' in the scams section of the paper.

<comment><USER14> Cash4gold is not a scam and they make a shit load of money.

The trust issue in my opinion will lie in you walking away with people's stuff with no real incentive in getting the best price out of it since every sale is profit for you. Also, what will you do when an item doesn't sell after some time? Do you ship it back to its owner?

Just think carefully about your business model because profit-sharing might not be the best way to go.

<comment><USER15> Cash4gold is a scam in the sense that they prey on uninformed people, and make it difficult to get items you do not wish to sell back.

<comment><USER14> I'm with Arrington on this.

"Making obscene profits may make you jealous, but it isn't evil. There's a reason so many people are using the Cash4Gold service – it's easy and convenient. They don't make promises on their website that they don't keep, and they aren't tricking or scamming people. They are simply buying low and selling high, and that's capitalism at its finest."[1]

[1] [http://techcrunch.com/2009/10/04/there-is-a-difference- betwe...](http://techcrunch.com/2009/10/04/there-is-a-difference-between-evil- and-just-absurdly-profitable/).

</comment></comment></comment></comment></comment><comment><USER16> I have the URL usedly.com that I would be willing to donate...

<comment><AUTHOR> Cheers - very good of you. For now I'm going to just work on the fundamentals before going for a permanent brand. It's easy to get tied down on a name, but if I can't make it profitable it's not going anywhere.

</comment></comment><comment><USER17> Off the name topic, but I've been looking for this for months!

I imagine the business margins (at least starting off) would resemble a pawn shop or consignment shop. Have you looked into those?

I hope it works. Tell me if you launch (in the states)!

</comment><comment><USER18> EmptyCloset

I also want to suggest <http://www.needanym.com/> for collecting potential names for projects/companies/sites in a structured way for free.

</comment><comment><USER19> www.box-away.com is available.

If you want to avoid the hyphen, you can go with

www.MagicBoxAway.com, or use colored boxes, and go for www.BlueBoxAway.com (or GreenBoxAway, or YellowBoxAway, etc.)

<comment><AUTHOR> Coloured cardboard boxes cost a surprising amount extra (almost double). BrownBoxAway doesn't have the same ring to it. MagicBoxAway is pretty good though.

<comment><USER20> Yes, but they look so sleek. Seriously, people will judge the trustworthiness of your company by the appearance of your boxes and the quality of your branding. I don't know the costs of the cardboard boxes you're looking at, but I suspect that the price difference might be worth it. Add a simple logo and you'll be golden. ...I like the 'redboxaway' because the color is the brightest, and because red and box are the same number of letters it leads itself to more logo options. There is a possible name clash with a popular video rental business though.

<comment><AUTHOR> To give an idea of price for boxes (a random fact, but maybe useful). A double-walled cardboard box measuring 18" x 12" x 12", with a logo and text in one colour, costs around 90p when ordering 1,500 at a time. They are suprisingly expensive. And that's with me collecting from the factory.

<comment><USER20> 90p ~~ $180... For a single box?! I can get them cheaper at Staples, though not in bulk. Who's your supplier?

<comment><AUTHOR> £0.90 = $1.41. You sure they're cheaper in staples? Here's Staples prices in the UK [1] - £3.99 for a box of the wrong size, but roughly the same volume. And ours are printed for £0.90.

[1]: [http://www.staples.co.uk/office-supplies/shipping-cartons- ma...](http://www.staples.co.uk/office-supplies/shipping-cartons-mailing- boxes/removal-archive-boxes/double-wall-stock-box-495-x-440-x-220mm)

<comment><USER20> I'm sorry, I saw the 'p' and thought Pound not Pence. Excuse my ignorance of British currency notation.

</comment></comment></comment></comment></comment></comment></comment><comment><USER21> www.packyes.com www.boxbyme.com www.packadoodle.com www.boxyboxing.com www.boxinthehand.com www.boxmule.com

<comment><USER12> Packadoodle is fun. You'd want to make sure to buy a few likely misspellings.

<comment><AUTHOR> I really like this one - it's not really fun but I'm not sure it hugely relates to what I'm doing.

</comment></comment></comment><comment><USER22> TheListBox.com

ListByBox.com

I wish droplister.com or something similar was available (your business is like dropshipping, but in reverse).

Good luck, its a great idea!

</comment><comment><USER23> alexcart.com - it's available, go get it.

<comment><AUTHOR> lol, cheers. I'm not sure I want the whole thing built around my own name though! And, somewhat unbelievably, a good number of people seem to be able to spell my name wrong.

<comment><USER23> I'm sure Craig Newmark thought in the same way. It's just that people's names are memorable and given the way you are starting, the personal touch might be valuable. Remember, names can always change...

</comment></comment></comment><comment><USER24> A little late to the conversation here, but I have a domain that I think would be a pretty good fit. I originally registered for a very different purpose. I don't expect to renew it in 2011.

TheProfitPalette.com

Clearly, you've received a lot of feedback with a lot of good ideas. If you want this domain because it is just that good (haha) then let me know.

Best wishes for your success.

<comment><AUTHOR> Thanks, good of you to offer. I'm sticking with box2cash.com for now, at least until I can test the concept.

</comment></comment><comment><USER25> I am interested in your business idea, but by the time you get it off the ground, I'll have thrown most of my shit away, since I'm moving. :/

<comment><USER3> If you're in the UK he said, <http://news.ycombinator.com/item?id=1820423>, you can send it now (or maybe tomorrow, it's late). Not soon enough?

<comment><USER25> Nope, Dallas, TX. :(

</comment></comment></comment><comment><USER26> Like the idea. Here are a couple names that came to mind

hoardsale, hoardbox, tidycrate, shipsold, sendsold, auctionboxx

</comment><comment><USER27> Nice idea, how about: MoneyForOldRope.co.uk

</comment><comment><USER28> This is absolutely genius. Please expand to Belgium pronto. I'd have no problem with a commission as high as 30%.

</comment><comment><USER29> According to nxdom these .coms are available: ridya, selldr, payrid, clutterz, easyrids.

</comment><comment><USER30> Have you tried wordoid.com? (not as a name, but as a source of names).

</comment><comment><USER31> EasyAuction

DoorToSold

<comment><AUTHOR> Easy Auction is long gone sadly.

</comment></comment><comment><AUTHOR> Follow my progress on Twitter: @box2cash (I'm not dead set on this name at all, I just need something to go at)

I'm in lockdown over the weekend working on this.

</comment><comment><USER32> ThrowAwayRecycler.com sounds like a good one. If you dont like it you can also try CashForYourJunk.com but some people might get the wrong idea.

</comment><comment><AUTHOR> I've got a blog up to track my progress. It's at <http://www.box2cash.com/blog>

</comment><comment><USER33> brownboxauctions.com discardedgoods.com brownboxgoodies.com

Checked and all are available as of 2010-10-22 9am PST.

On a side note, my younger bro was considering doing a student storage business. I'd like to hear any feedback suggestion you may have regarding it, if at all possible.

</comment><comment><USER34> How about richrubbish.com?

</comment><comment><USER35> simplelittlebusiness.com

</comment><comment><USER36> Desiderata. Desiradata.

</comment><comment><USER37> byebuybox.com and buybyebox.com are available.

</comment><comment><USER38> byebyebox.com

</comment><comment><USER39> HockBox.com

</comment><comment><USER40> CleanHouseForMoney

</comment><comment><AUTHOR> cash4box.com

<comment><AUTHOR> box2cash.com

<comment><USER30> Sounds dangerously close to casino spam to me.

<comment><AUTHOR> Not sure I follow you, can you elaborate?

<comment><USER30> The word "cash" is the most descriptive word ("box" is a rather generic term) in those names. Apart from that, the names sound completely generic. They remind me of get-rich-quick schemes and of shady online casinos, which are all purely about putting money somewhere.

Your business idea, as I understand it, is mostly about people getting rid of unused stuff, and paid for it, but without freezing their feet off in a fleamarket. I'd rather focus on that positive experience, because that is something online casinos don't have.

</comment></comment></comment></comment></comment><comment><USER41> trashtocash.ly

</comment><comment><USER42> unclutter

</comment><comment><USER43> A similar service - <http://www.gazelle.com/>

</comment><comment><USER44> Auctionbox ?

<comment><AUTHOR> the .com is gone sadly.

</comment></comment><comment><USER44> I like box and away. Anything with auction available?

</comment><comment><USER45> BSaleBGone

</comment><comment><USER46> CaptainShiznit.com</comment>


JQuery Overtakes Flash on World's Top Sites - <AUTHOR> http://appendto.com/jquery-overtakes-flash

<comment><USER2> not mutually exclusive?

<comment><AUTHOR> Not mutually exclusive, but it is evidence of trend that developers are choosing jQuery, JavaScript and HTML5 over Flash.

<comment><USER3> Er, how is that true exactly? All my Flash sites also use jQuery, while most sites don't (and didn't) need advanced Flash features while jQuery is still used because it simplifies AJAX calls.

How does that statistic say anything about HTML5 choice? Back to statistics class, with all of you! ;)

</comment></comment></comment><comment><USER4> Thanks to appendTo for making the world safe from Flash. Now I can browse safe from spinning wheels, and browser crashes.</comment>