Adguard found 220 sites that launch mining when a user opens their main page - <AUTHOR> https://blog.adguard.com/en/crypto-mining-fever/ <comment><USER2> _> Any alternative to advertising is a good thing._

If only. This isn't an alternative, it's a supplement. Sites have absolutely no incentive to stop advertising; they will simply continue to show the user ads while also discreetly wasting your electricity calculating hashes.

<comment><USER3> I would accept this as an alternative to ads. Ads can easily be blocked and have a high tendency to be blocked as they can be quite intrusive and a risk. So publishers will get less incentive to server them if everyone is just blocking them.

Cryptominer scripts can just as easily be blocked. So bad ones (long running) can easily be punished and I can have miners be blocked when running on battery power. This might nudge the market into the right direction where people allow miners and pay for content with computer power as a proxy.

I might even see a framework for browsers emerging to facilitate this market and provide better more efficient API's (GPU access) and better control (no mining on battery). Since this way of paying for content does already carry a lot of overhead in terms of total cost for all parties involved :(.

<comment><USER4> _Cryptominer scripts can just as easily be blocked._

Unfortunately this isn't true- it's pretty easy to proxy the request to coinhive through the web server of the main site. e.g. [https://github.com/cazala/coin-hive-proxy](https://github.com/cazala/coin- hive-proxy)

Site owners have incentive to run this proxy so they're not marked as a mining site OR to circumvent the 30% fee that coinhive collects. I don't think it will be possible to block mining in the future without blocking javascript completely.

<comment><USER3> That's true, but cryptominers will have a distinctive pattern when running. Ie: consuming a lot of cpu for a lot of time. So with some more work a blocker for this can emerge and kill obfuscated miners. Since miners really need to run to generate revenue while ads are sold on per view of click basis, incentive to play nice and be transparent with the user might be higher?

</comment></comment></comment></comment><comment><USER5> It would be cool if it evolved into something mutual between content providers and users. You have a bitcoin/ethereum/whatever wallet associated with your browser, and when you're on a website it spins up a mining process where you take a cut and they take a cut. It could be built on a platform kind of like AdSense where there's a basic agreement between parties on how things should work.

I make most of my living off of the donation economy. There are a lot of people out there who want to support good content. They just really don't like ads.

<comment><USER6> How about you just mine or work whenever you want for currency, and then pay for access with currency?

<comment><USER7> With pools of GPU- and FPGA- and ASIC-miners in play in a blockchain, raising the block difficulty, any individual user just doing CPU mining has a negligible chance of ever generating any money for themselves; and will only make negligible amounts by being a member of a mining pool.

These mining scripts are worth money to their owners only because they get to make _all_ the dividends from the covert mining pool they've created.

There is a reason that "immediately join a Bitcoin mining pool" isn't commonly-heard advice; that it's not something everyone does for their aunt. The average computer just isn't going to make enough money to be worth it—even just to pay for microtransactions.

<comment><USER8> Actually modern CPU can make around $20 per month with $5 electricity cost.

[https://www.nicehash.com/profitability-calculator/intel- cpu-...](https://www.nicehash.com/profitability-calculator/intel- cpu-i7-6700-340ghz?e=0.1&currency=USD)

<comment><USER9> Not at all. First, electricity is much more expensive than the price they put in their estimate. Second, a computer running at 100% CPU uses much more electricity than what they accounted for.

<comment><USER10> Let us not tunnelvision with US/USD PoV only. There are other countries and currencies in the world; both places where electricity is cheaper and more expensive.

</comment></comment></comment></comment></comment></comment><comment><USER11> Mining is incredibly inefficient and mining this way is _insanely_ inefficient.

The energy cost of a single Bitcoin transaction could power 1.5 American homes for a day. That was in 2015. ASICs are more efficient than GPUs which are orders of magnitude more efficient than your browser. This is an unbelievably stupid idea.

[https://motherboard.vice.com/en_us/article/ae3p7e/bitcoin- is...](https://motherboard.vice.com/en_us/article/ae3p7e/bitcoin-is- unsustainable)

Edit: yes, this uses Monero rather than Bitcoin. The work required is less and the price is also less. The argument is the same. This is inherently inefficient because if you could remove this inefficiency, the price would drop.

<comment><USER4> As I understand it, coinhive uses Monero, a crytocurrency that is hard to mine on GPUs.

From coinhive.com: _Monero is different. To mine Monero, you have to calculate hashes with an algorithm called Cryptonight. This algorithm is very compute heavy and – while overall pretty slow – was designed to run well on consumer CPUs._

 _There are solutions to run the Cryptonight algorithm on a GPU instead, but the benefit is about 2x, not 10000x like for other algorithms used by Bitcoin or Ethereum. This makes Cryptonight a nice target for JavaScript and the Browser._

 _Of course, when running through JavaScript performance still takes a bit of a toll, but it 's not that bad. Our miner uses WebAssembly and runs with about 65% of the performance of a native Miner. For an Intel i7 CPU (one of the fastest desktop CPUs) you should see a hashrate of about 90h/s. A native miner would get to 140h/s._

</comment></comment><comment><USER12> Interesting that they've considered whether the mining itself is bad, or if it's just bad form to mine without asking.

> The ethical way for a website to earn money by mining through its audience's > computers is to ask the audience for permission first, and to allow them the > possibility to opt out. Actually, such a practice could make mining even > more ethical than ads. After all, nobody asks us if we would like to see ads > on a website. Mining parasitizes the user's CPU, where ads parasitize the > user's attention, emotions, bandwidth, and often, their laptop or smartphone > battery, and supports an industry of personal data harvesting that is a big > headache in of itself.

</comment><comment><USER13> Here's the list of websites that have Coinhive JS installed: [https://www.datanyze.com/datanyze- coinhive.csv](https://www.datanyze.com/datanyze-coinhive.csv)

<comment><USER14> There are some public German schools in this document. No way they would install that miner on their own. Looks like a portion of the sites are hacked to run the scripts.

Edit: reading through all .de domains at least 80% (or more) have no intention or technical ability to install this on their own, e.g. schools, craftsmen, small businesses, etc.

<comment><USER15> A lot of them probably run an outdated Joomla.

</comment></comment></comment><comment><USER16> _How much money have these websites made? We estimate their joint profit at over US $43,000._

Why are they even bothering? The headaches involved in doing this aren't justified by the dinky revenue.

</comment><comment><USER17> Is there a reliable estimation on how much they make per visit?

The article states $43k for approx. 500M visits, so that's below 0.01 cents per visit; this in turn corresponds to a 'Cost per Mille Impressions' (CPM) of around 10 cents. So it seems that traditional ads would still make more money.

Can someone comment on how they came up with the $43k?

<comment><USER18> It does seem like a small number, but regardless of what it is, I doubt they are removing ads, so it is just additive.

</comment></comment><comment><USER19> There oughta be a list of surreptitious monetization, like the demotivational version HDTMM.

[http://www.seerinteractive.com/labs/how-do-they-make- money/](http://www.seerinteractive.com/labs/how-do-they-make-money/)

</comment><comment><USER20> Someone really should make 'Crypto-Blocker' plugins for browsers, similar to Ad Blockers.

<comment><USER21> Make sure the "resource abusive" filter is enabled in uBlock.

[https://raw.githubusercontent.com/uBlockOrigin/uAssets/maste...](https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/resource- abuse.txt)

<comment><USER22> No.

You'd always be one step behind. Reacting rather than acting.

I recommend

Firefox

NoScript

RequestPolicy

And if you want:

Ublock Origin

Umatrix

</comment></comment></comment><comment><USER23> How exactly does this kind of secret mining work? Is it effective at all? Don't you need to race to create blocks? How is the average consumer CPU going to win a single block like this?

<comment><USER24> It's all probabalistic; you could in theory mine a block by hand if you got absurdly lucky. Think of a machine with 8 GPUs being like dropping a million balls into the bingo jar, and coinhive like dropping 1 or two balls in for each visitor. If you get enough visitors, some of your balls will get drawn occasionally, making you money.

The reason GPUs and ASICs are used isn't because they have a better chance per se, but because they are more power efficient. With coinhive, the person who benefits is not the person who pays for the power, so that's not at issue.

<comment><USER25> It's repeated over and over that GPUs and ASICs give you a pretty big advantage over CPUs, but that's not true at all for cryptocoins such as Monero that use CryptoNight, that is why it's one of the only coins that makes sense to mine with a botnet or JavaScript.

</comment></comment></comment><comment><USER26> Do these things keep running as long as you are on the page? If so then in effect people who read slower will pay more to view the site.

That seems shady to me, at least for sites where the costs to the site are the same regardless of how long it takes the reader to read. If it takes me 5 minutes to read an article, and it takes some stay-at-home parent 20 minutes because they had to pause to deal with the kids, they pay 4 times as much as I do.

</comment><comment><USER27> I wonder how hard it is to subvert the mining process (!= the cryptocurrency) by sending back fake completion data.

<comment><USER28> Assuming they check your results before passing them along, it'd be noticed immediately. Hard to discover, easy to verify. Not much different than just blocking them.

</comment></comment><comment><USER29> This is such a ridiculously inefficient means of raising money, for everyone involved. What would it take to just get people to pay for the services that they use, out of gratitude?

</comment><comment> m-p-3 I think the idea would be accepted more if the websites using this were more transparent and would give some kind of warning before actually mining using your own resources.

</comment><comment><USER30> At least it helps strengthen the crypto-currencies, which is a good thing.

I'd be curious how much CPU is wasted rendering billions of ads, especially video, I suspect it's a lot more than the crypto hashing, and three orders of magnitude more money is made by this "borrowing" of your CPU in exchange for letting you read the site you're looking at.

<comment><USER31> _I 'd be curious how much CPU is wasted rendering billions of ads, especially video, I suspect it's a lot more than the crypto hashing_

The exact opposite. Video decoding is done quite efficiently in hardware now, and displaying ad images is not much worse than any other image or video. There is certainly an impact, but it's not continuous 100% client processor usage. On the contrary, mining is basically going to push the processor to 100% _and keep it there_ just by virtue of how it works.

<comment><USER18> That isn't true. Most Video ads on sites use a ton of cpu.

</comment></comment></comment><comment><USER32> No, 500 million people aren't mining cryptocurrency in their browsers. Clickbait extraordinaire. 500M monthly visits =/= 500M people, jeez.

</comment><comment><USER33> What if I'm on an official ISIS web site (bear with me here) and I mine a block for them. Have I provided material support to a terrorist organization?

<comment><USER5> No more than viewing an ad on their site brought them revenue.

</comment></comment><comment><USER34> Who is the person ultimately responsible for creating this junkware known as CoinhiveJS? That is the entity we should be focusing on, not these sites.

</comment><comment><USER35> Mine me. Please.

If I'm on your site, that means you're doing something for me, and I want you to continue to do it for me. I don't expect anyone to give me things of value for free, so if you want to to take my unused computer resources as payment for your services, go ahead.

<comment><USER36> The players in our tragedy of the commons haven't shown any restraint in polluting the Web and bringing my browser to its knees. They won't show any restraint with mining either.

<comment><USER6> So far it's only deployed on piracy sites, so, dog eat dog</comment></comment></comment>


Servo is much faster compared to Gecko [pdf] - <AUTHOR> http://events.linuxfoundation.org/sites/events/files/slides/LinuxConEU2014.pdf

<comment><USER2> First of, Gecko does a lot more than servo, so there is still time for servo to slow down when it needs to handle more and more edge cases.

But to me the real big news is that we might see a Firefox alpha release using servo next year. Wonder if that will be a two engine design or if the can somehow get servo to do all the chrome layout as well.</comment>


Ask HN: What equity stake is realistic as a technical co-founder? - <AUTHOR>

I'm a designer and developer who has been approached by someone locally about being the technical co-founder for a web-based business. I get on really well with the guy, he seems to know what he's doing from a business point of view, and I think the business is potentially very profitable.<p>My question is this: as the person who is designing and building the site/application on which the entire business depends, what kind of equity stake is realistic to expect in return? <comment><USER2> If you are going to be building the entire product, and not being paid a salary, you should have something around equal equity with your co-founder. If you are going to be paid, discount the equity split to something more fair based on how much you are being paid vs. what you normally make for your time (how much you are sacrificing by not having a full time job).

They might argue that it is their idea, I argue its mostly in the execution, which you will be a large part of.

<comment><USER3> _They might argue that it is their idea, I argue its mostly in the execution, which you will be a large part of._

Right the mantra around here that ideas are worthless exist for a reason. I would go even further and evaluate what the other person will be doing while you are building the product. If the answer is be the idea guy until it is done then he is going to market it, then I would argue that even 50% is too low. Because you could build it, and then get a sales guy to push it for 10% of the take after it is done. Now if he will be doing business dev and other work while you are working then I would say 50-50 is the right split.

</comment></comment><comment><AUTHOR> Thanks for the replies! Not sure if this changes anything, but here's a little bit more background info.

The business is web-based, but will not be profitable without a large amount of offline business development which the guy in question will be doing. It's also quite a niche business, and as this guy has previously run businesses in the industry he has the contacts/networks in place that stand to get this business off the ground.

Thanks for your input!</comment>


MonsterMash – A Single-View Approach to Casual 3D Modeling and Animation - <AUTHOR> https://dcgi.fel.cvut.cz/home/sykorad/monster_mash <comment><USER2> Procedural animation tools are such an exciting area.

We've had some glimpses of what can be done but nothing modern.

Over a decade ago, I was excited that spore's creature creator would inspire a real authoring tool but nothing seems to really have gotten there.

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

Unity is our flash-like game authoring platform of today and it's animation tools are nothing like what we once had. Flash was simpler and more fun 20 years ago.

We've really lost something here. Authoring in this area has become less accessible.

</comment><comment><USER3> This reminds me a bit of Teddy by Takeo Igarashi [1], which turns out is from 1999 already. I remember playing with that when I was younger.

[1]: [https://www-ui.is.s.u-tokyo.ac.jp/~takeo/teddy/teddy.htm](https://www- ui.is.s.u-tokyo.ac.jp/~takeo/teddy/teddy.htm)

</comment><comment><USER4> This is such a heartwarming work, finally some good use for all the HW, a great, easy to use tool for story telling. It's also great that you chose to make this a desktop app, and facilitate sharing and exchange with files. Although, You could have packed all the data into single binary blob for easier sharing.

</comment><comment><USER5> Looks great. Any chance this could make its way into Blender? That would be really nice. The grease pencil tool could be used for the drawing.

</comment><comment><USER6> The monsters and other creatures in those videos are super adorable. I can't wait for the program to be released and to try it myself. I am also hopeful that it might be open source even.

<comment><USER7> if it is, my son that's just getting into programming with unity will _love_ it...

<comment><USER8> Teddy[1], already mentioned in the comments, has a Unity version [1]([https://assetstore.unity.com/packages/tools/modeling/teddy-9...](https://assetstore.unity.com/packages/tools/modeling/teddy-99075))

hope it helps!

<comment><USER7> very cool thanks :-)

</comment></comment></comment></comment><comment><USER9> Wow, this is incredible. The closest analog I can think of with widespread support is 3D sculpting along the lines of ZBrush. Blender is fantastic, but the lack of this kind of tooling has always made asset creation enough of a commitment to put me off from trying to approach game-making casually. I guess "casual game-making" is still an oxymoron for now, but I think tools like this could change that.

</comment><comment><USER10> This is super cool and I would pay Maya-level prices for it. For indie game development, tools like this are gold.

Although MonsterMash is more advanced, this reminded me of Martin Hash's Animation Master [1].

[1] [https://www.hash.com/software-14-en](https://www.hash.com/software-14-en)

</comment><comment><USER11> This was a pure joy to behold. There are several current modeling features approaching this level of interactivity, but none this fine. Add mesh denoising and subdivision and this is a production workflow quality tool ;)

</comment><comment><USER12> Very nice. It's interesting to see the flowing and organic shape of the models. I'd be curious to see some meshes though to be honest. But this makes me want to play with it!

</comment><comment><USER13> Gawd I want this, I want to play with this, I want to hack this, I want this...</comment>


Los Alamos Declassified - <AUTHOR> http://www.nybooks.com/blogs/gallery/2015/jan/14/los-alamos-declassified/

<comment><USER2> Interesting to note that 3 of the scientists working on the atomic bombs were actually Soviet spies or in some way passing information to the Soviet nuclear program.

Theodore Hall is particular is interesting because he did it believing that a single country having a monopoly on nuclear energy would result in another Nazi-like menace being unleashed on the world. Quite a mature and far-sighted opinion for someone only 19 years of age.

<comment><USER3> Definitely. You will notice that when you read about Fuchs on Wikipedia, there is no mention of his motives. Certainly he had some.

</comment></comment><comment><USER4> If anyone is interested in the biography of the Manhattan Project in general, including much of the goings-on at Los Alamos, I really must recommend Rhodes' "The Making of the Atomic Bomb" ([http://www.amazon.com/The-Making-Atomic- Bomb-Anniversary/dp/...](http://www.amazon.com/The-Making-Atomic-Bomb- Anniversary/dp/1451677618))

It's an excellent read, cover-to-cover. One of the few assigned books I read with excitement while in undergrad.

<comment><USER5> If you're already familiar with Manhattan Project histories, check out "Hitler's Uranium Club: The Secret Recordings at Farm Hall" ([http://www.amazon.com/Hitlers-Uranium-Club-Secret- Recordings...](http://www.amazon.com/Hitlers-Uranium-Club-Secret- Recordings/dp/0387950893)), by physicist Jeremy Bernstein.

It's an account of the German nuclear programs, with the centrepiece being a curated set of transcripts from secret recordings of the candid conversations of a group of German scientists detained after the war.

Some vaguely YC-ish lessons on how their failure to produce could be attributed in many ways to seemingly mundane organizational structures that were debatably inherent to Nazi German society and internal politics.

Also some borderline pornographic payoff when they find out about Hiroshima. At the time, they were convinced they were 10 years ahead of anyone else, and were being detained as a prelude to being showered with honours and put in place to bring American and British science into the modern age. Then they set about convincing themselves they failed on purpose for moral reasons.

</comment></comment><comment><USER6> Feynman looks like a smug teenager in [http://assets.nybooks.com/media/img/slideshows/8611940694_88...](http://assets.nybooks.com/media/img/slideshows/8611940694_88808f20dc_k.jpg) I guess it makes sense, I just imagined him older in my head.

<comment><USER7> Well, to be truthful, judging by what I've read, he was a bit of a smug teenager. All his life.

</comment></comment><comment><USER8> I work for a home health company that specifically cares for sick employees of the nuclear era. People who worked at sites like Los Alamos, Oak Ridge, Savannah River Site, Hanford and elsewhere. Some of their stories are really incredible - particularly the level of secrecy.

Sadly, many ended up getting sick due to the dangerous work environment. I've seen pictures of guys holding uranium rods with barely any protection.

Many wont speak or seek help because the secret nature of the sites is so engrained into their psyche.

<comment><USER9> > Sadly, many ended up getting sick due to the dangerous work environment. > I've seen pictures of guys holding uranium rods with barely any protection.

This is often safe, actually, but that's not always the case. How safe can depend on a few factors, such as enrichment, purity, presence of neutron moderator (graphite, water, beryllium, etc...)

I've been within several feet of low-enrichment uranium rods before without any specific protection equipment (i.e. water) at one of the reactors I've visited.

Spent rods are definitely dangerous though.

</comment></comment><comment><USER10> I grew up in Los Alamos in the 1980s and 1990s and the detailed history of what happened on the receiving end in Hiroshima and Nagasaki is still mostly glossed over. The story told is more about the heroic wartime feat of engineering that was the Manhattan Project. Even now that gets played up more. Since I left they installed a statue of Gen. Groves and Dr. Oppenheimer in one of the parks there.

<comment><USER11> John Hershey's _Hiroshima_ is a good retelling of the horrors of the Little Boy experiment, if you are interested.

</comment></comment><comment><USER12> I highly recommend the book 109 East Palace, by Jennet Conant. It's a great look into the day-to-day life of the people working on the project, and some of the logistical challenges which were faced as everything scaled up.

<comment><USER7> Here's the obligatory reference to Feynman's biographies.</comment></comment>


Ask HN: Startup Co-founder working on a lot of other things. Advice? - <AUTHOR> Some background: I am currently working on a startup, and there are 3 of us. We're in the UK. We've been at this for about 3 months now.
I'm technical (coding etc), the other two are more business focused. They are planning the product out, I'm building it for them (it's a dashboard basically, showing charts and graphs, fairly standard stuff from my perspective).
Division of shares is 20% (me), 40% for each of the other founders (Mr X, and Mr Y).
The startup is Mr X's idea. He convinced myself and Mr Y to leave our very nice jobs and work on this full time. Mr X told us he would be doing this as well, but he has not. He is heavily involved with a number of other startups (I think 4 others).
Myself and Mr Y are banging our heads against the wall. We get Mr X on a call for an hour each day, which he is often late for as his other calls run over. Sometimes he is late to other calls as our call runs over.
Things that need to be done by Mr X just aren't getting done, it's me and Mr Y doing most of the work at the moment.
From my perspective, I think the idea is good, the industry is interesting to learn about, and I'm happy to sit and build out a dashboard, but it won't work without Mr X's full input. He's a very smart guy, and very knowledgable about this industry, but he's just not pulling his weight.
We are pre funding. Myself and Mr Y are currently relying on our savings, Mr X I think gets income from his other projects. I think we will be able to raise money, Mr X has a good track record in regard to funding.
We have tried:
* Asking Mr X to give up equity until he is on board full time. He would look into it...
* Straight up saying on calls, "we need you to stop working on your other projects and focus on this. we quit our jobs for this". Lot's of "yes that's the plan" etc
* Threatening to walk away if things don't change. Mr X gets very upset, promises to fix things...
So, what the hell do we do? All advice is welcome! Thanks <comment><USER2> Mr. X is living the dream. He has two guys trying to build his idea, does not pay anything for it, and still has 40% equity.

I have a couple of interesting ideas which could lead to a successful startup, hit me up, I'm always looking for good developers working for free.

</comment><comment><USER3> You and mr.Y forms majority in current company. I think if the regulations permit in UK, dilute Mr.X's share down to whatever percentage you think is appropriate or incorporate new company if nothing works.

This above thing works unless Mr. X has lot of leverage in other aspects like domain knowledge or clients.

If you are invested in the idea, I suggest you work on gaining the leverage before attempting anything.

</comment><comment><USER4> As a 4x founder myself (serial, not asynchronous), I don't think the concept of a "portfolio" entrepreneur is necessarily bad. However, if Mr. X is directly blocking progress then that is a problem. If you aren't being paid, that is also a bit worrisome. If he has a good track record, I am surprised he doesn't have seed money already to fund him at the idea stage. Another red flag would be if you and Mr. Y didn't really know or interact with Mr. X previously. Usually, successful entrepreneurs have fairly good network of resources and often times work with people they might have worked with before. Just saying they red flags and you may want to be cautious about how successful he may appear vs reality.

Is it possible you can bring someone else on that can do his role?

Does he have a vesting cliff for his own equity? How is the company formed regarding voting rights? Does the company own the IP? If you and Mr. Y effectively have 60% voting to his 40%, and he is vesting, you should be able to remove him and use his un-vested equity to bring in someone else.

If you don't have a company formed with proper stock/voting/vesting/ip assignments in place, then I would immediately stop until this is done. You have very little legal recourse. This is were co-founders get into huge legal problems later on. This should be a non-starter. You should immediately make claims on any IP you have committed if there is no agreement in place.

The biggest misconception is that ideas are worth something. They really are worthless. Execution is everything. Good ideas fail all the time. When two companies with the same idea compete, the one that executes better, mostly will win.

It is a huge risk to quit your day job to work on a project like this full- time. My last recommendation is to search internally for why you joined this team? Maybe it was exciting to be doing your own startup, or maybe you felt it would be easy with Mr. X to get funding. But startups are incredibly hard and 9/10 fail. So you should make sure that you honestly believe that the product/service is valuable and that this team can iterate it to market.

</comment><comment><USER5> Your 20% of shares + Y's 40% of shares is a controlling interest. That's enough to fire X. Good luck.

</comment><comment><USER6> If you're in a position where you have to constantly twist a cofounder's arm to work hard you probably don't want to work with that person. Did you sign any paperwork with Mr X. yet; if so try to buy out his share? Probably talk to a lawyer about an IP release form in any case. I have dealt with this a few times before and a lawyer once told me "Money changes people" \-- and that might be true once you start making money. Also, are you early on that you can just quit and rebuild with your friend who actually does work? Also 40% equity for 0% risk--imagine how far that equity can go in raising money rather than lining someone's pocket who does no work.

</comment><comment><USER7> "Myself and Mr Y are currently relying on our savings, Mr X I think gets income from his other projects."

" it's me and Mr Y doing most of the work at the moment."

It is just a matter of time before things crash. Extreme Red Flags here. Mr X seems like the type of person who knows what he is doing so it is unlikely he will change and only focus on this specific project. You need to either get more equity or get out fast before burning more savings.

</comment><comment><USER8> If you are working for nothing, all the work product (code) is yours. (There is no transfer of copyright document, right?) Quit, and bring your code and the one other guy and start your own company. Probably need to sue the leech for breach of contract, too, to dissolve the old thing cleanly.

An idea and $5 will get you a Starbucks.

(This is not legal advice. Do get a lawyer. They might have smarter ideas.)

</comment><comment><USER9> I run a legaltech in the UK. Other than dealing with a similar case with my own co-founder (I ended up splitting ways very early which in hindsight I'm glad I did), we've dealt with a case on the platform where one co-founder wanted to oust the other for similar reasons. Not even thinking of this with a legal lens, if trust is already an issue, you need to have a 'hard conversation' with him. Trust is everything at an early stage, more than the problem.

</comment><comment><USER10> I think outside the worrying mechanics of the situation here with you and Y working for free and etc.

It's pretty clear communication just isn't working out either. It doesn't seem like you trust X to do what he says / he isn't doing it ... if there isn't trust and communication, I think this venture may be doomed to conflict and the usual bad things that come of it.

</comment><comment><USER11> I'm in a very similar situation. My partners have other business besides the startup and I believe this is one of the main problems that's blocking our growth.

I suggest you: (1) to define tasks for your partners on a board (like trello), then just follow the tasks if they are being executed. (2) to have a limit date for the startup to profit and grow, and if the date is not met think about leave the startup.

Time is the most valuable asset. Use it wisely :)

</comment><comment><USER12> An ultimatum is useless if you don't actually carry it out when the push comes to shove.

</comment><comment><USER13> You are working for free, please don't do that; Mr. X is taking advantage of you.

</comment><comment><USER14> Never, ever, form a company without having a provision to earn the equity over time.</comment>


Mosaic Manufacturing 3D prints a flashlight using just a single extruder - <AUTHOR> http://www.3ders.org/articles/20141204-mosaic-manufacturing-3d-prints-a-flashlight-using-just-a-single-extruder.html

<comment><USER2> Very impressive being able to switch between regular and conductive filament so seamlessly. Following the links, I think maybe even the bigger story is the Functionalize F-Electric Filament. It has only 30 hours to go on Kickstarter [1], but has raised only a portion of its goal, is it as revolutionary as advertised?

[1] [https://www.kickstarter.com/projects/391466300/worlds- most-c...](https://www.kickstarter.com/projects/391466300/worlds-most- conductive-3d-printing-filament)

</comment><comment><USER3> The steps/mm on the extrusion on that flashlight print are too high by at least 5% maybe more.

It will be cool if it can be made to sync correctly...esteps are going to be an issue for sure as they already are though. I would like to test one out though before making a decision.

I am assuming the "dual" prints are with a dual fixed nozzle extruder. The artifacts on the surface look to be from the unused nozzle dragging through while oozing.

edit: my bad I thought this was the mixer not the splicer at first :) comment changed to reflect that

</comment><comment><USER4> So what is this? Is it splicing in different colors of filament before it runs to your extruder?

<comment><USER3> yeah...it splices based on estimates on where what color fits into the print. I have done it manually before just by feeding a new color in at the desired time.</comment></comment>


Programs must be written for people to read - <AUTHOR> http://raganwald.com/2016/03/17/programs-must-be-written-for-people-to-read.html <comment><USER2> I'd say that's true today, but it's not a luxury Margaret Hamilton had when she wrote the code for the Apollo lunar lander. Since things have changed quite a bit since the 1960s, I wonder how much code we software people will be reading 50 years from now.

<comment><AUTHOR> Very few of us read code today. Almost all of us read a human-readable description of what the software must do, and that is compiled into the actual code :-)

But seriously, the compiler/interpreter is the ultimate expression of Hal Abelson's dictum.

</comment></comment><comment><AUTHOR> Disclosure: self-submission.</comment>


Steve Albini's 20-year-old letter pitching to produce Nirvana's 'In Utero' - <AUTHOR> https://my.doctape.com/s/j9orjZ

<comment><USER2> That is an amazing letter from an amazing person. The ethical stance and the devotion to his trade are exactly what is needed. Thank you for posting this. Even though it will probably slide away sight unseen it was the best thing I came across all day.</comment>


Meet the 25-Year-Old Who Saved "SEO" from Being Trademarked - <AUTHOR> http://searchengineland.com/meet-the-25-year-old-who-saved-seo-from-being-trademarked-38066?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+searchengineland+%28Search+Engine+Land%29

<comment><USER2> Why did this even need to be opposed? There are tens of thousands, if not more, companies that list "SEO" as one of their services. There's no way the applicant can claim that SEO distinctly identifies the brand under which he sells this service.

<comment><USER3> Not automatically. Someone, in this case Rhea, has to actually do the opposing.

<comment><USER4> In fact, it looks like the request was ultimately denied mainly on procedural grounds rather than on the merit of the request itself. Kinda frightening really.

</comment></comment></comment><comment><USER5> I applaud Drysdale's initiative, and I'm sure the $17K she spent will reap rewards for her in her industry for a long time. But... it was probably a wasted effort. At least as far as preserving the generic use of the term "SEO," and certainly for Drysdale personally, except for the attendant acclaim she'll gain.

To be clear, registering a mark with the USPTO does give a business tons of advantages. Most obviously, it gives notice to others that the business considers the mark part of their identity, and it makes enforcing the their exclusivity to the mark easier. But registration isn't a slam dunk, and in this case I would wager a case of nice Scotch that the mark "SEO," even if registered, would basically be unenforceable. Here's why.

Without getting bogged down in too much detail, above all else, trademarks must be DISTINCTIVE. There's a whole framework setup the creates four categories of distinctiveness (from least to most): Generic, Descriptive, Suggestive, and Arbitrary/Fanciful. The framework comes from this case: <http://bit.ly/bNw3pp>

Generic marks are never valid as marks because they aren't distinctive enough to ever serve as part of a business's identity. If they were valid, we'd eventually cede the exclusive use of our entire language to mark owners. "Piano" is the textbook example of a generic term.

Descriptive marks are only valid once they've acquired an association with a particular company in the marketplace. "Red Piano" would be a descriptive term as applied to red pianos, and if a company came to be known at THE supplier of red pianos in the marketplace, the mark would probably be valid.

Suggestive marks are immediately valid assuming no one else has already established a confusingly similar mark. "Lovely Ivory" would be a suggestive term as applied to Pianos. Suggestive marks require some flight of the imagination to relate them to the goods they are fixed to.

Arbitrary/Fanciful marks are also immediately valid subject to the same limitations as suggestive terms. "Crap Sandwich" would be an arbitrary term as applied to Pianos. There is no connection between the mark and the goods.

[I've laid out a more in depth description of this framework here: <http://bit.ly/bVxbv1> ]

Applying the framework to the acronym "SEO" and the phrase "SEARCH ENGINE OPTIMIZATION" as it applies to the SEO services, both are generic terms because they are the label for an entire genre of services. Without some modifier that makes the term descriptive, SEO could never carry the distinctiveness necessary to describe an SEO firm. If the mark holder ever tried to enforce the mark "SEO", it would be at their own peril because it would never pass this test.

I will say that the $17K spent now probably saved the SEO industry some nuisance cease and desist letters and probably saved some cash for the first person that Jason Gambert opted to sue over use of the mark (it would have also been the last). In that regard Drysdale kinda fell on her sword for the greater good, however certain a favorable outcome may have been.

Either way, glad it's settled. :)</comment>


Your native language determines how you think of time - <AUTHOR> http://www.sciencealert.com/how-the-language-you-speak-can-change-your-perception-of-time <comment><USER2> Pretty sure there are many other things as well your native language dictates how you think about.</comment>


Being "First" Versus Being "Best" - <AUTHOR> http://techcrunch.com/2010/09/14/first-best/ <comment><USER2> There's also something to be said about being "The First That's Good Enough For Most People".

<comment><USER3> Exactly Linux is a prime example of this.

</comment></comment><comment><USER4> My way of formulating this truth has long been: "It's doesn't help being first, if you are very quickly second best."

But I don't equate "execution" with "product development". You can develop the best product on the planet, but if you don't execute well on everything else (recruitment, communication, cash management, customer insight, investor relations, route to market, etc etc etc) a business will still fail. You have to build the best product AND do everything else right. That's execution.</comment>


Time to rewrite DBMS, says Ingres founder - <AUTHOR> http://www.regdeveloper.co.uk/2008/02/18/stonebraker_dbms_outdated/

<comment><USER2> I don't necessarily agree with his claim that SQL or anything like SQL is unnecessary. While SQL is wordy and oftentimes clunky, it is language-neutral, works predictably across all systems accessing the same database, and doesn't tie the application developer to object-centric (not necessarily OO but leading there) design. It seems like Stonebraker is advocating Ruby here because of the hibernation features native to Rails, which is object-centric as it ties classes defined in the application to database tables. It's a sensible abstraction on top of the loose link between applications and DBs _for some applications_ , but e.g. extract-transform-load applications would be hindered by this abstraction more than helped.

By contrast, I think one thing that DBMSs could make steps towards obviating is explicit optimizations. Instead, there should be support in the language for telling the DBMS what's important when you do your DDL, then let it figure out indexing, reclamation, replication, and batch scheduling. I see this as being a similar optimization to GC -- the runtime performance will initially be in doubt, but it will ultimately enable the creation of complex systems with far less human effort.

</comment><comment><USER3> What strikes me about sql is that new programmers think even the smallest shrinkwrapped desktop app that persists data has to ship with a db engine with a sql interface. The ultimate result is all this modelling that's done to generate SQL for your interfaces using some fancy toolkit. The problem with this is that it creates an appearance of separation by generating a bunch of business objects for you. But it still encourages designing interfaces with data access in mind = monolithic development.

SQL is especially good for those times when you do not have all the answers for the questions that may be asked of your data. But if you already know all the ways your data will be queried, what's the point?

<comment><USER4> i would say tables are easier to use and conceptualize about, rather than files, lines and such!

with tables you directly deal with your porgramatic objects you dont think of storage, plus sqlite is very easy to use and very portable too!

</comment></comment><comment><USER5> I just saw a presentation on Franz's Allegro-graph - a system that stores triples up to the billions with very advanced query abilities: We are seriously considering using this: (they have a free java version that supports up to 50,000,000 triples) <http://agraph.franz.com/allegrograph/>

</comment><comment><USER6> Phil Manchester is the same guy over at regdeveloper who wrote this badly paraphrased executive summary of blog posts: [http://www.regdeveloper.co.uk/2008/01/24/stonebraker_dewitt_...](http://www.regdeveloper.co.uk/2008/01/24/stonebraker_dewitt_mapreduce) .

</comment><comment><USER7> Curt Monash's take on it :-

[http://www.dbms2.com/2008/02/18/mike-stonebraker-calls- for-t...](http://www.dbms2.com/2008/02/18/mike-stonebraker-calls-for-the- complete-destruction-of-the-old-dbms-order/)

</comment><comment><USER8> many, if not most, high-end OLTP systems didn't (and don't) use relational technology anyway. Programmers do what's necessary to get the job done. IOW this is preaching to the choir.

</comment><comment><USER9> Uh...somebody already did this, and called it MySQL. It's been fairly successful, though universally reviled by database experts who know what they're doing...

</comment><comment><USER10> Doesn't Lisp already do this?

<comment><USER11> I want that on a t-shirt!

</comment></comment><comment><USER12> I'd be hard pressed to envision a DBMS for business WITHOUT ACID. Transaction processing has to be "somewhere", and the DBMS has always seemed like the most appropriate place.

I remember the days when we had to roll our own record locking, transactions, and stored procedures, and don't relish going back.

SQL, OTOH, can hit the road and I'd never miss it. No problem putting it's job into my language du jour.</comment>


Apple's iPad outsells Android tablets by 24-to-1 - <AUTHOR> http://www.bizjournals.com/sacramento/news/2011/07/26/apples-ipad-outsells-android-tablets.html?ana=yfcpc

<comment><USER2> Google's numbers presumably only come from tablets running Honeycomb accessing the Market. Which means non-Honeycomb tablets (which have been out a lot longer, have greater penetration in non-US lands, etc etc) aren't counted.

I can't find any recent stats, but as of March 2011, the Nook Color sold 3 million units. Way ahead of the 0.9mil quoted in the article, and it's only for one device.

<comment><USER3> Nook color ain't a tablet per se. Or is it?

Makes me think, why can't we count ipod touch as a 3" tablet?

<comment><USER2> B&N call the Color "The Reader's Tablet", so I think it counts.

I think the main difference wrt the Touch is size: if it can easily fit in a normal pocket, it's a PMP; if it can't, it's a tablet.</comment></comment></comment>


Show HN: Stress Relief site – make a de-stress break to break them all - <AUTHOR> http://robotics.ovh/?experiments <comment><AUTHOR> Try to hold some a bit longer...</comment>


Linux Programming: Signals the easy way - <AUTHOR> https://www.stev.org/post/linuxprogrammingsignalstheeasyway <comment><USER2> Boost ASIO makes signal handling pretty painless in C++. It handles the signal and calls a callback in which you can use any function, not just signal safe functions.

[http://www.boost.org/doc/libs/1_64_0/doc/html/boost_asio/ref...](http://www.boost.org/doc/libs/1_64_0/doc/html/boost_asio/reference/signal_set.html)

</comment><comment><USER3> Can someone explain the use of "volatile int running" here?

I'm not sure it's correct but it might work here because the only place it's where it's read from without locking is the main thread (`while(cond->running)`), which is also the only place where it's written to (with locks this time).

I'd err on the side of caution here and go with the rule of thumb "volatile is almost always wrong". The slightest change of the code (e.g. allowing another thread to terminate the app) will cause it to fail. It's not much effort to change it to __atomic_load/__atomic_store and remove the volatile qualifier or lock/unlock the mutex every time it's being accessed (costs about 50 nanoseconds).

<comment><USER4> volatile is usually neither necessary nor sufficient for concurrency as it doesn't have correct semantics. In some simple notification cases (just a polled exit flag for example), given a few assumptions about the compiler and machine model, volatile might have worked. But C11 has _Atomic and there is no excuse for volatile.

In the specific example given in the article, not only volatile, but even _Atomic would be completely superfluous. 'running' it is set once in main before any threads is spawned so there is no concurrency issues; after that every read and write access is done under the protection of the 'lock' mutex, so there is no need for any special qualification in POSIX or C11.

Interestingly, a 'volatile sig_atomic_t' used in a signal handler is both required and sufficient to communicate with the thread of execution interrupted by a signal handler and is the only portable use of the keyword.

edit: there is another portable use in conjunction with {sig,}{set,long}jmp of course.

<comment><USER3> I'm pretty sure the example code is not correct, but may work out of luck.

The first 'running = 1' is not guaranteed to be visible to other threads because there is no synchronization around it. In practice the pthread_create will probably "fix" the race condition.

My best understanding is that you need a mutex or an atomic every time you access shared data to guarantee visibility. Most CPU architectures don't need the implicit memory barriers from mutex or atomic but it's not wise to rely on it.

<comment><USER4> the creation of the thread (i.e. the call to pthread_create) in main "synchronizes with" the invocation of 'worker' in the child thread; the store is sequenced before pthread_create; in turn the invocation of 'worker' is sequenced before the load in 'worker', which implies that the store 'happens before' the load, guaranteeing visibility and absence of races.

This is formally guaranteed by C++11 and C11 for std::thread and thrd_create, and also by posix for pthread_create although the language is more informal.

edit: missing step

<comment><USER3> Thanks for clarification. I didn't know that creating a thread guarantees visibility like that.

But it makes sense, it would be more difficult to write correct code without it.

</comment></comment></comment></comment></comment><comment><USER5> Is Signalfd viable at all ([http://man7.org/linux/man- pages/man2/signalfd.2.html](http://man7.org/linux/man- pages/man2/signalfd.2.html)) supposedly it was created as a better alternative i.e you can poll for signals from it. Has anyone tried using it?

<comment><USER6> The "signalfd is useless" article comes up every so often. The title might be an exaggeration, but there are problems to be aware of: [https://ldpreload.com/blog/signalfd-is- useless](https://ldpreload.com/blog/signalfd-is-useless)

In fact it looks like geofft is in this thread below :)

<comment><USER7> The article can be boiled down to the last sentence, which retracts the rest of the article:

>So my claim that there's a better alternative to signalfd is wrong, but it's still true that signalfd doesn't solve any of the other troubles with signal handling: it just saves you a separate thread.

Of course this sentence is disingenuous. Avoiding a separate thread is a huge gain. Dealing with concurrency is one of the main problems with signals. So yes, signalfd is absolutely hugely useful, allows for a lot of simplification, and should be the first tool you reach for if you want to handle signals on Linux and don't need portability.

<comment> charles-salvia Basically, the main problem with signalfd is a problem with the Linux implementation of signals in general: if your program requires some kind of logic where each individual signal delivery somehow "counts" in some way, you may run into a problem because the kernel may coalesce/collapse multiple identical signals delivered consecutively into a single signal delivery. So if your program has some kind of logic that relies on responding to each individual signal, you may have a problem. (Note that this problem does not apply to POSIX real time signals.)

But as far as I know, the only reason you'd ever care to actually count individual signal delivery events is with SIGCHLD. So when waiting for SIGCHLD, using signalfd is not sufficient. You'd need to also use one of the wait/waitid/waitpid variants to ensure that you can respond appropriately to each individual SIGCHLD delivered.

<comment><USER8> On the flip side of coalescing you can end in a situation where volume of signals leads to grinding down in the consumer or worse consumer hanging.

What do you do in that situation? You can force back pressure semantics on senders but then those can grind down, a lot of classic Unix tools were never built with that case in mind.

You could even argue that for signals coalescing should be preferred behavior and multiple signals could be merged together SIGIO, SIGCHLD. In SIGIO you can merge signals impacting FD, with SIGCHLD you should already be running waitpid with WNOHANG.

Sadly I don't believe this can uniformly apply to all signals (don't want to coalesce SIGSEGV/SIGBUS). Also siginfo_t complicates things quite a bit (since the info in there makes it hard to dedup). But such is life in POSIX.... we only now have the hindsight.

</comment></comment></comment></comment></comment><comment><USER9> > There are developers out there that try to catch signals like SIGKILL, > SIGABRT, SIGSTOP. This is a pointless attempt the signal will NEVER be > delivered to the program.

Partially false: SIGABRT _can_ be caught. Indeed, that's one of the methods used by the abort() function to stop: [https://github.com/lattera/glibc/blob/master/stdlib/abort.c](https://github.com/lattera/glibc/blob/master/stdlib/abort.c)

</comment><comment><USER4> > The worst offender I have seen was somebody trying to take a pthread lock > inside the signal handler. Then trying to fix the "deadlock" by making the > lock recursive!! This was so that a pthread_cond_signal could be sent to get > the application to exit.

we must have been looking at the same codebase...

for posterity, the correct solution is to use a posix semaphore which is async signal safe.

</comment><comment><USER10> That's needed for C/C++. I wonder, how something like Rust for example deal with it? Should one also worry about it by default?

<comment><USER11> For the signals that you must handle with a handler (SIGSEGV etc.), Rust doesn't help you. Your code must be "async-signal-safe", that is, everything must work correctly despite being called between two arbitrary opcodes in the host program. Importantly, this means anything that allocates is impermissible, since you might be in the middle of an allocation, and your allocator almost certainly has a per-thread lock and doesn't expect to be called reentrantly on the same thread. And there's no compile-time tracking (e.g., no function type) for functions that don't allocate. You also might be called in the middle of an unsafe block modifying global data, etc.

I've considered designing some sort of complicated DSL in Rust to construct async-signal-safe handlers, but it didn't seem worth the complexity. (Although, now that I write this comment out, I _think_ you can handle SIGSEGV safely from another thread as long as your first thread calls for help in an async-signal-safe way, so maybe that would be a library worth writing.)

For the rest, using sigwaitinfo or signalfd works just as well in Rust as in C/C++, but not really better or worse. There aren't any good libraries for it (which I keep meaning to do something about), but the underlying POSIX APIs are usable equally well in all three languages.

As for whether you should worry about it? Try not to use signals, regardless of language. If you're writing some sort of demand-paging system using SIGSEGV handlers, I hope you know what you're doing already. If you're thinking about SIGALRM, there are other ways to get a notification after a fixed time (and Rust's mio/tokio, for instance, gets you timers in your event loop). If you're trying to use SIGUSR1/SIGUSR2, please rethink your design - you'll be much happier with something like a UNIX socket listening for connections or a localhost-only URL for debugging or whatever. If you want to handle SIGINT (intercept Ctrl-C at a terminal), SIGQUIT (intercept Ctrl-\ at a terminal), SIGTSTP (intercept Ctrl-Z at a terminal), SIGTERM (intercept the "kill" command's default signal), SIGHUP (do something when the terminal exits), SIGWINCH (get notified when the terminal resizes), or SIGCHLD (get notified when a child process exits), you do have to use signals, but all of these can be run through sigwaitinfo or signalfd. And you don't _have_ to actively worry about them if you don't want to customize their behavior, or if (for SIGINT, SIGHUP, etc.) you just want to ignore them and not do anything special.

The only odd case is SIGPIPE, and Rust's standard library blocks SIGPIPE for you and returns EPIPE from a system call instead, and unblocks it in child processes, so you don't need to worry about it. (The default SIGPIPE behavior is basically legacy compatibility with existing C code from the very early days of UNIX.)

<comment><USER12> Can I just call mmap instead of anything requiring userspace coordination beyond function scope if I need dynamic memory in a signal handler?

How easy is it to fuck up the signalfd thing and end up not responding to SIGINT in a timely manner, because I'm being silly and doing some blocking work in the signalfd loop for some reason? Does that happen to people at all?

What kinda usecases are there for handling SIGSEGV? I'm not the kind of person to write on-demand-paging systems so I'm not really sure what that involves and when I need that sort of thing.

<comment><USER13> SIGSERV is basically a page fault in userspace. Its just named differently. The user mode linux kernel port makes use of it in exactly this way.

Another use case would be a massive one to one hash table. You allocate the address space and when you fault on it you load data from a database on demand and continue execution.

<comment><USER11> Linux also has userfaultfd for this, which I think is easier to program against:

[https://www.kernel.org/doc/Documentation/vm/userfaultfd.txt](https://www.kernel.org/doc/Documentation/vm/userfaultfd.txt)

There's also _something_ in Mach for this on OS X, but I forget the details. And a handful of non-UNIX OSes have had support for an outside program being able to get notified efficiently on segfaults and map pages in.

</comment></comment></comment></comment></comment><comment><USER14> I needed to write something that needed signal processing a few years ago, its very difficult to find simple help on the subject. Anyway, nice take, I will bookmark for future reference ;)

</comment><comment><USER15> > Some signals will be specific threads anyway.

Huh?

<comment><USER4> A word is probably missing:

> Some signals will be specific _to_ threads anyway.

I.e. some signals are not sent to the process but to specifc threads. See 'bleep' reply for details.</comment></comment>


UberRUSH – Now Open for Business in Chicago, NYC, and SF - <AUTHOR> http://newsroom.uber.com/2015/10/rush-open-for-business/ <comment><USER2> As a co-founder at an on-demand shipping service (fetchh.io) I've been watching uber's entry into this segment. We don't operate on the delivery side (not to mention we're in Australia) so we don't feel any competition. There are a ton of different liabilities around deliveries and I'm surprised to see uber expand in this direction, to possibly crush sidecar again.</comment>


Shaarli: Self-hosted del.icio.us alternative - <AUTHOR> http://sebsauvage.net/wiki/doku.php?id=php:shaarli <comment><USER2> I've finally switched to pinboard.in - the browser addons are definitely not as good, though.

<comment><USER3> Pinboard is great, the bookmarklet is the only addon I need. It's got one of the best tech communities out there, and it's basically del.icio.us in its heyday. Thank you, Maciej.

<comment><USER2> Ever tried to pin something on github.com? All the major browsers have disabled bookmarklets that conflict with content security policies.

<comment><USER3> I can't recall ever having a problem pinning stuff from github. Just to sanity check my own memory, I tried it just now. It worked fine.

edit: and this was using the 'popup with tags' bookmarklet from pinboard's howto page [1]

[1] [https://pinboard.in/howto/](https://pinboard.in/howto/)

<comment><USER2> "Content Security Policy: The page's settings blocked the loading of a resource at self ("script-src [https://assets-cdn.github.com](https://assets- cdn.github.com) [https://collector-cdn.github.com"](https://collector- cdn.github.com"))." for me

</comment></comment></comment></comment></comment><comment><USER4> Definitely not as featureful as something like this, but when Delicious started to go down the pan I switched to a simple Ruby script and a Dropbox- synced data file between all my machines. Several years in, it's still working a treat! "Dropbox + simple script" seems to be a great mechanism for many apps if you don't need easy public access.

</comment><comment><USER5> Interesting, although after reading the first bullet point ("Minimalist design (simple is beautiful)") looking at the screenshots was ... surprising ;)

</comment><comment><USER6> Also check out [https://bookie.io/](https://bookie.io/)

<comment><USER7> Thanks. I like the fact that it is self-hosted (unlike pinboard)

</comment></comment><comment><USER8> Next question is one of federation (delicious, after all, works as a search engine because of multiple user input). It would be really cool to see a world where all these roll-your-own things are starting to connect.

<comment><USER9> RSS?

<comment><USER8> That's good for following, but not searching the world.

By contrast, somehow, Mediagoblin intends to federate in a searchable manner, as I understand. But, I don't know how that's going to work.

</comment></comment></comment><comment><USER10> If you are interested in drawing attention, I'd suggest maybe hosting a cheap demo version on like a $5 DO instance for people to play with. ;)

</comment><comment><USER11> After leaving delicious, I've been using google bookmarks([https://www.google.co.in/bookmarks/](https://www.google.co.in/bookmarks/)). Isn't anyone else using it ? If anyone has tried using google bookmarks, how would you compare it with pinboard.in ?

</comment><comment><USER12> The project has not been updated for quite some time by the original author, but luckily there is a quite active fork on Github (including a public demo): [https://github.com/shaarli/Shaarli](https://github.com/shaarli/Shaarli)

</comment><comment><USER13> I used this for a long time and really liked it. It's very easy to set up and works great.

</comment><comment><USER14> sorry but Shaarly is the best choice, free, secure, légé, taxonomy, rss feeds and private bookmarks by tag. And a simple shared hosting is enough.

</comment><comment><USER15> I believe these are called "bookmarks."</comment>


Realmax Qian is a light, fully wireless AR/VR headset with a 100-degree FOV - <AUTHOR> https://venturebeat.com/2019/01/09/realmax-qian/ <comment><USER2> The image quality seems pretty low, same as Oculus Rift DK2 (1080p 100° FoV). Compare to the nReal which is 1080p with a 52° FoV (4x denser pixels).</comment>


Things Every Software Architect Should Know - <AUTHOR> http://97-things.near-time.net/wiki/97-things-every-software-architect-should-know-the-book

<comment><USER2> There are no such thing as "best practices". What's "best" always depends on circumstances.

As such, this is perhaps useful as a list of advice to software architects (basically senior senior developers, in my experience), but only with a huge disclaimer that _you must figure out for yourself which bits to apply in your current circumstances_.

Why is that disclaimer always missing from list of best practices, even when those lists (like this one) contain self-contradictory examples?

<comment><USER3> Agreed.

The key is to avoid slavishly following a rule. You should not shy away from breaking a rule, provided you have good reasons for the violation. First learn what the good rules are (as applicable in majority of cases) and then learn when to break them. The best practices are not supposed to be carried over verbatim into every development project.

</comment></comment><comment><USER4> I think the problem with this book is not about recipes it gives, and way how it approaches the problem, but the problem itself. I spent 8 years working in different software companies, and never met a person with the 'architect' job title, whose job would be different from one of either developer or manager.

Therefore, I personally do not believe in 'software architects'. And this book supports me in this! I went carefully through the list, diving inside some specific topics and it seems that all of them (or overwhelming majority) lie in the field of responsibility of someone who could be described by job title other than architect. "#12 There is no one-size-fits-all solution" -- fine, development issue. "#17 Business Drives" -- fine, management issue. And the the brightest gem of all: "#80 Dont Be a Problem Solver".

</comment><comment><USER5> I stopped reading after _One line of working code is worth 500 of specification_ and _It's never too early to think about performance_.

I thought this philosophy was proven flawed!

<comment><USER2> Nothing's proven flawed. Both of those pieces of advice work under the correct, narrow circumstances.

If you're building a web start-up, forget specifications. Write code. There is no way to have the slightest clue what you need to specify anyway. Write something that does something useful and put it in front of some users. Go from there. In different circumstances, of course (e.g. while building the software for a major Stock Exchange), this is the absolute worst thing you can do.

If you're building your start-up, it's almost always too early to think about performance. You need to have some vague awareness of whether it will be possible to optimise your code later and keep it clean and simple so that it remains possible, but ultimately I've found that it pays to optimise at the last minute - i.e. optimise when there are performance problems, not before. On the other hand, going back to the major stock exchange example, performance there is likely to be one of your major challenges, so you need someone on the team who is performance-minded and has built a stock exchange before, so that they know where the bottlenecks will be and can ensure those are avoided.

</comment></comment><comment><USER6> Well, O'Reilly recently reported that sales of of computing books in general were off something like 28% for 2008. So starting a new occupation (software archhitect) or pandering to those who'd aspire to the "title" may be a marketing strategy.

According to Amazon (<http://www.amazon.com/isbn/dp/059652269X>) the book was to be released Feb 13. I put it in my Amz shopping cart so I can let the reviews thereon tell me whether it's at least worth skimming it at Barnes & Noble (all that's available to me locally).

</comment><comment><USER7> 97 conventional wisdom recipes in an awful, screaming font, linking to explanations. I didn't read them all so maybe there are some gems, but I highly doubt it.

<comment><USER8> I skimmed through a few. There are a lot of platitudes in there, but a few of them are useful reminders or elaborations of things we know "in the bone", like #18 and #24.

</comment></comment><comment><USER9> It's not 97 gems. It's 97 screaming headlines. #7: Stand Up! I did that this morning to go to work. My software doesn't seem any better.

</comment><comment><USER10> Rule one: Rules don't always work.

Rule two: Follow the rules.

The challenge is to know which rules to follow and what "works" means.

</comment><comment><USER11> One thing every blogger should know: short lists.

</comment><comment><USER12> #98 Use Appropriate line spacing if presenting content over 96 lines long</comment>


Have OS X and iOS stopped converging? - <AUTHOR> http://www.defaultbreak.com/2013/06/12/have-os-x-and-ios-stopped-converging/

<comment><USER2> _> ...there is no sign of Mavericks adopting the new simple and uncluttered design. As an example, the new redesigned Calendar app differs significantly in both operating systems_

Wait, what? The Calendar app in ML is enrobed in faux-leather but flat and focused on typography in Mavericks. Even the red accent color is similar.

I expect that the final release of Mavericks will have more standard apps redesigned to match their iOS 7 counterparts.</comment>