New quasi-particle discovered: Introducing the Pi-ton - <AUTHOR> https://phys.org/news/2020-02-quasi-particle-pi-ton.html <comment><USER2> Quote": Instead of describing the motion of constantly moving electrons, it is easier to study the motion of the hole. If the electrons move to the right, the hole moves to the left—and this movement follows certain physical rules, just like the movement of an ordinary particle."

That's precisely how my physics professor in 11th grade explained to us how PNP transistors works, more then 25 years ago

<comment><USER3> I know all analogies, especially those explaining complicated physics to 11th graders, have to oversimplify some aspects of a phenomenon, but this one always rubbed me the wrong way. The hole moves _with_ the electrons, if they move right, the hole also moves right.

The crucial point is that the electrons at the top of a valence band have effective negative mass, i.e. they move opposite to an applied force. Of course their true mass hasn't changed, this is simply a consequence of the fact that we're considering a system of uncountably many electrons moving in unison. This means a full band carries no current (which is the situation in isolators), but if a band has some electrons missing at the top, these holes will be transported in the opposite direction of the usual electron current, which happens to be the correct direction for positive charges. Hence, we can talk about positive charge carries.

A better analogy would be a bubble of air underwater in a river. It moves with the flow of the water, not against it. I know it doesn't really matter, but I feel an analogy must at least have a core of truth.

<comment><USER4> The hole only moves with the electrons if the electrons are moving in unison. If they move one at a time, into the hole left by the previous electron, then the hole moves the opposite way. E.g. say a, b, c, ... are electrons:

      1. abcde
      2. abcd e
      3. abc de
      4. ab cde
      5. a bcde
      6.  abcde

(I don't know much chemistry or electronics, but that's how I've always understood the analogy.)

<comment><USER3> That is exactly the analogy I have a problem with, it is variously explained with cars in parking lots, people on seats, .... It is wrong however, the electrons do not move one at a time, they move in unison opposite to the normal flow of current.

Apart from theoretical considerations, we know it has to be like this because the voltage induced by the Hall effect flips for these kinds of semiconductors, and since there are no positively charged free particles in solids, this has to mean the electrons are now moving in the other direction, giving a complete illusion of a positive charge carrier.

</comment></comment></comment></comment><comment><USER5> I'm fascinated by the language we use. They have not observed the particle. It was found in computer simulations. Yet, the word used for this is discovered. At first I had the impression the observed it. I hope they do.

</comment><comment><USER6> tl;dr

The authors studied simulations of electrical conduction in a semi-conductor crystal. They found "bound states" of two electrons with two holes, which they call "pi-tons" a kind of quasi-particle that only exists in the crystal. They hope to find experimental evidence for this.

This looks like a more complicated version of a one electron one hole bound state called an "exciton" [1].

(I have no expertise in this topic.)

[1] [https://en.wikipedia.org/wiki/Exciton](https://en.wikipedia.org/wiki/Exciton)

<comment><USER7> And apparently, "pi-ton" is not a pun on "pion" at all, but rather derived from a characteristic momentum that comes up... somewhere. (I didn't read the article so closely -- just enough to be horribly disappointed that the pun I was expecting, was absent.)

</comment></comment><comment><USER8> I assume this a video by Sixty Symbols on the same subject [https://www.youtube.com/watch?v=8k6dKfmOufI](https://www.youtube.com/watch?v=8k6dKfmOufI)

<comment><USER9> I don't think it's related. Why there's no mention of X17 neither in the article nor in the paper?

</comment></comment><comment><USER10> So, electromagnetic field would actually be mediated by excitons and pi-tons not photons?

(I always found it fishy they were called electromagnetic, photons alone have no charge, only when they actually hit something does the field appear.)

That would mean during Compton scattering experiment, electric field would show discrepancy due to spontaneous formation of excitons and/or pi-tons, especially if you used coherent standing wave beams of electrons and photons and vary the phases.

<comment><USER11> > I always found it fishy they were called electromagnetic, photons alone have > no charge

Being the particles that mediate the electromagnetic force, they don't have charge themselves, but they only _interact_ with particles that have charges. Think of it this way: When you have a charged particle, it will produce an electric field. And when you have a moving charged particle, it produces a magnetic field. Photons are how energy gets deposited into these fields. And by interacting with those photons, other particles can draw energy from this field.

<comment><USER10> So moving charged particles in vacuum produce photons on their own. How do we know there are photons produced and not something else with right energy that happens to act on our sensor?

Specifically, the sensors that use photoelectric effect do not react in the right wavelength, while standard radio sensors are also sensitive to charged particles. And presumably also use this exciton/pi-tons interface.

How can we exclude it? Presumably fire photons from putative EM field at neutrons, observe emitted photons with wavelength change? (Essentially Compton scattering experiment with neutral particles.)

My whole problem here is there's a lot of "seems as though" in those experiments... Like when you try to measure center of charge with it.

</comment></comment></comment><comment><USER7> The preprint is here on arXiv for those who want a look at the original work and don't have access to PRL: [https://arxiv.org/abs/1902.09342](https://arxiv.org/abs/1902.09342)

(Really, it's a little annoying that phys.org doesn't link to that directly -- a good proportion of physicists prefer to look at the arXiv version instead of the official published version even when they have access to the paywall!)

<comment><USER12> Being accepted for publication still serves as a useful filter (not everything on arxiv is gold), and in this context it makes sense to link to the published version to demonstrate there is some credibility. They could put in two links though.

</comment></comment><comment><USER13> And now for something quasi-different: Introducing the Pi-Ton

by Cleese, Idle, Palin, Jones (Posthumous) & al.</comment>


Machine Learning Techniques for Predictive Maintenance - <AUTHOR> https://www.infoq.com/articles/machine-learning-techniques-predictive-maintenance?utm_source=hackernews&utm_medium=link&utm_campaign=external <comment><USER2> Funny, was looking at this repo a few weks ago, which has got some usable code, and using the same dataset.

[https://github.com/aqibsaeed/Estimation-of-Remaining- Useful-...](https://github.com/aqibsaeed/Estimation-of-Remaining-Useful-Life- using-CNN)

Related, please share if you have a probabilistic programming approach to this, à la Stan or PyMC.</comment>


DuckDuckGo vs. Google Infographic - <AUTHOR> http://optilocal.org/duck-duck-go-vs-google-the-infographic/

<comment><USER2> The viewer of the infographic is terrible, post a large png please.

<comment><USER3> Yeah, the first thing I did was looking for the original PNG, here it is:

[http://optilocal.org/wp- content/uploads/2015/03/DuckduckGO_f...](http://optilocal.org/wp- content/uploads/2015/03/DuckduckGO_final-01.jpg)

</comment></comment><comment><USER4> I don't know whether it's search habits, or what, but 80% of searches I do on DuckDuckGo I look at the results, sigh, and prepend !google.

<comment><USER5> I find that I get more relevant answers with DDG, but in the rare cases where I need a look at Google, I just append !sp to my search term. For the sake of privacy and just to support a search engine that is fighting tracking, I'll gladly give 3-4 extra keystrokes to support it.

</comment></comment><comment><USER6> The scale on the "searches" graph is horrible, some sort of broken linear scale which makes it impossible to gauge growth or make any useful comparison. They really need logarithmic scale there.

<comment><USER7> I'm not even sure how to read the number of annual searches from this graph. Why is there a different scale for Google vs. DuckDuckGo...?

<comment><USER8> They probably want to point out the growth rate of DuckDuckGo, something that would be impossible if they compared against Google's rates.

<comment><USER6> Logarithmic scale solves that problem if you're interested in the rate of growth.

</comment></comment></comment></comment><comment> mkr-hn I give DDG a shot every once in a while, then go back to Google when I realize I have to put !g in there most of the time just to get a good result. It obviously works better for _someone_ , but that someone is not me. The privacy-from-the-NSA angle is uncompelling when DDG is affected by the same laws that make my data on Google vulnerable. If DDG were being forced to log, they wouldn't be able to tell you.

<comment><USER5> The compelling part for me is the anti-tracking and anti-monetization of every data point. Personally, I prefer being outside of a bubble too.

</comment></comment><comment><USER9> Frankly, I'd prefer less anonymization in my search results. It's always annoying to me when I type in some programming related but generic sounding query, and the first programming result is at the bottom of the page.

Google should know me better than that by now.

</comment><comment><USER10> The infographic is siding with DuckDuckGo very much...</comment>


Sam Ruby: Life after Bug Tracking Systems - <AUTHOR> http://www.intertwingly.net/blog/2008/07/18/Life-after-Bug-Tracking-Systems <comment><USER2> Having a bugtracker or not is a tough decision. You have to keep your ways of communicating limited to a few channels. You _will_ need to address the social aspect of your project in one way or another. It's probably either a mailinglist or a bugtracker. Having both means one of them is probably heavily underused.

What you see a lot with projects is that everything happens through a bugzilla. New features, feature requests, bugs are posted there, some invalid because the user doesn't understand a program. The 'bugtracker' aspect forces you to put your message in a certain style.

With mailinglists like git@vger you get a mixture of posts. Some are from newbies that don't understand the system, some are comments on the current system and most of them are patches or status updates. Having a mailinglist allows a user more freedom in the form in which he wants to communicate, which lowers the barrier. You also get a nice mixture of users and developers on the same channel, by which you get better feedback.

The flipside of that is that you don't have any overview. You'll have to manage bugs yourself. If you want something fixed, you'll either have to make a patch yourself, get somebody else interested or just keep bringing the bug to attention.

Now compare this to a bugtracker. You post a bug there and nobody will look at it until you make a patch yourself, get somebody else interested or keep bringing the bug to attention. See the difference? Exactly.

</comment><comment><USER3> As I read this I immediately thought of Ditz (<http://ditz.rubyforge.org/>).

The idea behind Ditz is that, if your project has no centralized "truth", then a bug tracker that represents centralized "truth" doesn't make much sense. Instead, Ditz keeps track of your bugs right there in your Git repo, so when you check out that 3 month old experimental branch, all of the bugs that still existed on it are right there for you to read about.

</comment><comment><USER4> I think this represents life _before_ bug tracking systems:

XML Parsing Error: not well-formed Location: [http://www.intertwingly.net/blog/2008/07/18/Life-after- Bug-T...](http://www.intertwingly.net/blog/2008/07/18/Life-after-Bug-Tracking- Systems) Line Number 42, Column 101:String.fromCharCode(0xdc00+n%0x400);}else{return '&#'+ncr+';'}});for(var i=body.length-1;i>0;i--){if(cp1252[body.charCodeAt(i)]){body=body.substr(0,i)+'&#'+cp1252[body.charCodeAt(i)]+';'+body.substr(i+1);}} \</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>----^

But seriously, I'm curious what he has to say. In lots of companies the bug tracking overhead overwhelms the actual work done.

</comment><comment><USER5> Bugtracking doesn't matter if you aren't working for a profit-seeking enterprise or other enterprises that pay people to write software for them. For these situations, telling the users to fix the bug themselves and send in a patch will never ever fly.

<comment><USER6> _telling the users to fix the bug themselves and send in a patch will never ever fly_

Did someone say it would? We are talking about open source projects here.</comment></comment>


Why some NoSQL DBs only let you perform transactions on a single data item - <AUTHOR> http://dbmsmusings.blogspot.com/2015/10/why-mongodb-cassandra-hbase-dynamodb_28.html <comment><USER2> Misleading title: Abadi specifically called out particular NoSQL DB's, he wasn't generalizing to all NoSQL DB's. MarkLogic ([http://www.marklogic.com](http://www.marklogic.com)) is an Enterprise Database used by many large organizations as a system of record for information traditionally stored in RDBMS or Mainframe.

Joe Hellerstein gave a wonderful keynote at ACM SoCC last year that is a great read for all who are interested in this subject: [http://db.cs.berkeley.edu/jmh/talks/SoCC14-keynote.pdf](http://db.cs.berkeley.edu/jmh/talks/SoCC14-keynote.pdf)

MarkLogic has had transactions since version 1.0. The same mechanisms that enable multi-statement transactions are also critical for overall reliability. A recent Gartner study ranked MarkLogic as #3 for reliability (not NoSQL databases, all databases).

Many on HN may have not heard of MarkLogic as we are not open source. We are, however, the largest NoSQL ISV by employee count (and probably other measures also.)

I am VP, Product Strategy for MarkLogic (ExIngres, ExCohera)

<comment><USER3> Do you have info or can you point to anything where I can learn about MarkLogic without all the marketing speak on the site? It's really hard to get any info about how the software actually looks like and works and compares to other options out there...

<comment><USER2> [http://developer.marklogic.com](http://developer.marklogic.com) is the place to go.

The closest we have to a "comparison" is [http://www.marklogic.com/what-is- marklogic/features/](http://www.marklogic.com/what-is-marklogic/features/) those pages do actually end drilling down to documentation.

</comment></comment></comment><comment><USER4> ZODB ( [http://www.zodb.org/en/latest/](http://www.zodb.org/en/latest/) ) is a NoSQL database that has been around for almost twenty years now. It's a Python-specific NoSQL database that allows persisting of arbitrary objects in a tree structure. It not only has multi-object transactions, transaction savepoints for memory efficiency's sake (both optimistic and normal), a pluggable 3-way conflict resolver, two-phase commit and support for long- running branches which contain multiple transactions.

<comment> the-dude ZODB is no database. ZODB is a persistance layer. Where is the SQL in ZODB? The level of sophistication in the query interface is laughable.

<comment><USER5> It is a database, not a relational database.

</comment></comment></comment><comment><USER6> On the .NET stack, RavenDB[0] supports transactions on multiple items[1].

RavenDB is a nice middle ground: eventual consistency for queries for speed, but ACID for create, update, and load (one or more items by ID).

It uses transactions throughout, so a failure in the midst of 10 writes will rollback all of them, as one would expect in a traditional relational database.

[0]: [http://ravendb.net/](http://ravendb.net/)

[1]: [http://ravendb.net/docs/article- page/3.0/csharp/start/gettin...](http://ravendb.net/docs/article- page/3.0/csharp/start/getting-started)

<comment><USER7> It does indeed look nice, however the pricing looks worse than MS SQL in the long run (for the enterprise version).

<comment><USER6> It's free for open source projects.

For commercial enterprise, Raven is effectively $788/core/year [0]. Quite reasonable, IMO.

Contrast this with MS SQL Server Enterprise, which appears to be $14,000/core one-time cost [1].

(Disclaimer: I'm a part-time employee for RavenDB. But I loved and used Raven on my own projects before becoming an employee.)

[0]: [http://ravendb.net/buy](http://ravendb.net/buy) [1]: [http://www.microsoft.com/en-us/server-cloud/products/sql- ser...](http://www.microsoft.com/en-us/server-cloud/products/sql- server/purchasing.aspx)

</comment></comment></comment><comment><USER8> [https://en.wikipedia.org/wiki/FoundationDB](https://en.wikipedia.org/wiki/FoundationDB)

designers haven't solved all problem around transaction and performance, but that doesn't mean they have stopped trying

"As various NoSQL databases matured, a curious thing happened to their APIs: they started looking more like SQL. This is because SQL is a pretty direct implementation of relational set theory, and math is hard to fool."[1]

[1][http://blog.memsql.com/cache-is-the-new- ram/](http://blog.memsql.com/cache-is-the-new-ram/)

<comment><USER9> As a heavy user of FoundationDB I'd point out they have a five second transaction limit. One of the big compromises made to make their system work. This limit of course makes things... interesting in the real world.

</comment></comment><comment><USER10> What is the percentage of web applications that really need all that scaling? How many database instances does Hypothes.is need? What about Airbnb? Duolingo? Feedly?

<comment><USER11> Exactly.

To handle massive loads, you can trade away transactional integrity and get increased performance AND a whole new range of complicated problems that was more or less solved for you, that you now have to take care of yourself.

For some applications, the tradeoff is not a problem - and in others it requires a lot of work, up to more or less your own implementation of distributed transactions.

I have this feeling that I can't shake off , that a lot of people think relational (transactional) databases are complicated, and fail to see why they actually are complicated. This probably is not the category of people that truly need to solve their performance problems though.

</comment></comment><comment><USER12> This was very helpful. I am in my first project with MongoDb after a lot of experience with RDBMs and I do miss transactions. There are other things I miss more: foreign keys (dobt use dbrefs!), joins, and SQL, though.

Unfortunately this application is new, so we haven't yet seen the benefit of schemaless data changes.

<comment><USER13> PostgreSQL + JSON gets you working transactions and schemaless.

<comment><USER14> Plus it scales well and doesn't randomly lose data. Oh, and the project leaders are professionals who are honest and transparent about the capabilities of their product.

<comment><USER15> It scales, to a point. In my opinion however, any type of sharding/clustering is still a total mess in PostgreSQL. Most projects will however probably never need to.

<comment><USER16> How DARE you, sir, imply that we are not the next "Amazon"!

Kidding aside, I suspect with a little discipline, one could design a PG DB that could be ported to Oracle (Exadata???) should the need, and budget ($$$$$), for that sort of scaling arise. Cheap and safe now, Expensive and safe later (if needed)

</comment></comment></comment></comment></comment><comment><USER17> The question here is really "When do you need distributed transactions"? One of misuses is when one cannot achieve enough performance on a single node. E.g., one builds a system serving 1000 REST requests per second (RPS), achieving 2 seconds latency per request, having a DB as a bottleneck. To be honest, I've seen real software built giving 23 sec latency per only 50 RPS. Does it mean there is a need to scale it out or simply that a chosen DB is a problem? The cases I've seen through my practice are mostly on the latter.

Simply choose the most suitable solution, not the most hyped one. A mistake would be to sacrifise transactions via using some "general NoSQL database". Today, for real, you can have a single node capable of millions RPS on real- world scenarios with ACID transactions of arbitrary complexity, choosing solution like [http://starcounter.io/](http://starcounter.io/). Please, please don't just take yet another no-transactions DB, which is no-transactions even on a single machine, having 4 db nodes on 4 cores completely separate as if they've been 4 different machine. Then you observe bad performance and start to scale things up, paying more and more for the cloud. Not the best idea to spend time and money.

And, if you DO really need distributed transactions, then it mostly means they'd be driven by a logic of your subject domain. E.g., you might have one department in Sweden, one in the USA, then you need to manage distributed accounts in the right way, where "right" is up to your banking policy. However, if you need to scale reads, there is just no problem of doing so within "no-distributed-ACID" solution. The same time, if you need to scale writes, doing distributed transactions isn't a good idea either, as you've seen from the topic starter article.

So, right tool for the right job.

Outside of the brackets I keep a topic of fighting with latency via distributed transactions. I mean those things around caching, CDN and async replication. Distributed transaction isn't a remedy there at all, since it doesn't patch speed of light by any means.

</comment><comment><USER18> Nobody else has said it, so I'll do it: This website is horrible. The font color is #888888 on a white background, which is very hard for me to read. And I can't even fix it by disabling a CSS style in the web inspector panel like I usually would because the CSS styles are hard-coded into style attributes on spans for each paragraph! What is this, a website from the 90s? How is it so horrible, given that other random Blogspot blogs I'm checking have sensible markup?

<comment><USER19> You know how when you write something in Microsoft Word, and then copy it out into an editor, it takes terrible and broken HTML markup with it? That is exactly what has happened. The author has written the post in Word copied it to blogspot, and wham, bam, thank you ma'am, you get that clusterfuck.

</comment></comment><comment><USER20> Sorry to say but we have something that is truly transactional and distributed ([https://www.quasardb.net](https://www.quasardb.net)). It slows down a bit writes (because of the commit) but it scales well.

And before us FoundationDB delivered the same feature (although implemented a bit differently).

The truth is that there is a market for databases with "unreliable" writes and there are easier to design. That's why you see a lot of them.

<comment><USER21> What are you using LevelDB for? I hope not the main KV store.

Do you use 2PC or something like Raft to handle distributed transactions?

From the docs it sounds like everytime a node joins/leaves the cluster goes into a (brief?) unstable mode and failures can happen, that doesn't sound great.

<comment><USER20> I'm happy to see you've read the documentation thoroughly!

We indeed stopped using LevelDB. It has been used for a while but we couldn't work around some speed issues. LevelDB is good for many scenarii when properly configured, though.

The database is multilayered, LevelDB was the last layer, most parallel operation were managed by a massively parallel in-memory database which used LevelDB as a backend.

We do 2PC to handle distributed transactions. Raft breaks our consistency model.

When a node joins/leaves the cluster you might have some transient failures which are generally absorbed by the protocol.

I hope I answered your questions and feel free to give it a spin next week, we're about to release a major update!

</comment></comment></comment><comment><USER22> As previously noted, title is misleading. Also, pick a better document store (though you should note that rethink only guarantees operations on single documents as atomic):

[http://rethinkdb.com/](http://rethinkdb.com/)

Yes, "better" is subjective, but rethink has a good page detailing the differences (between rethink and mongo):

[http://www.rethinkdb.com/docs/rethinkdb-vs- mongodb/](http://www.rethinkdb.com/docs/rethinkdb-vs-mongodb/)

Feature-list type breakdown:

[http://www.rethinkdb.com/docs/comparison- tables/](http://www.rethinkdb.com/docs/comparison-tables/)

And pay attention to the guarantees that it provides/doesn't provide when you pick. I think this is a big part of what separates novice developers form middle-tier developers. There are always tons of choices, for just about everything in software these days, and your job is to figure out how best to solve which problem you're facing, in a way that future generations won't hate you for.

</comment><comment><USER23> Nothing in the first paragraph is true about Cassandra except perhaps that it does allow for some limited nesting of data. The rest of the article is great though. It doesn't even need the first paragraph.

</comment><comment><USER24> HyperDex Warp does lightweight multi-key transactions:

[http://hyperdex.org/warp/](http://hyperdex.org/warp/)

<comment><USER25> Are you using HyperDex in production? I have never heard about anyone using it -- but then good products often stay under the radar when all its users are satisfied and productive.

</comment></comment><comment><USER26> Have any of you heard of DocumentDB from Microsoft Azure? It is very similar to documentDB but It was specifically designed to have atomic transactions.

</comment><comment><USER27> The multi feature of redis kind of allows you to create some level of transactionality over multiple items, no?

<comment><USER28> Not over multiple nodes. Only on 1 node/core.</comment></comment>


Ask HN: How early is too early to move on from first job? - <AUTHOR> I landed a "software engineer 1" job with a fintech in the Southeast after graduation, pretty good salary (considering the low cost of living), good benefits, etc. But, I'm itching to relocate back to the West coast (I'm not from the South and this Bible Belt stuff is giving me the creeps). The product I'm on is scheduled to go to prod in Feb, but after that... Will it reflect negatively on my professional record for me to start job searching again so quickly (less than 9 months at my first job)? Or is this standard practice and something I should try for? <comment><USER2> Depends on the skills and experience that you can put on your CV. If you plan to continue to work in fintech, then some conservative firms might see you as job hopping prematurely. Depends on whether you are prepared to accept a drop in salary - after allowing for the increased costs of living back West. Depends whether your skills are in demand in non-fintech sector.

Assuming that you do not have to quit now or even in Feb. Your best bet is to start going for jobs that meet your criteria and see how you go. You will quickly find out whether your short tenure is raising any red flags or not. Having a completed project/product is always going to be a plus.

</comment><comment><USER3> For your first job this is easily explainable and as long as you leave on good terms with your employer you should be ok for any future reference checks too.

The concern with a short tenure at a job is when it becomes a pattern, say 3+ jobs w/o having stayed for about 2 years or more. That's when you might fall into a red-flag sort of situation when looking for future employment.

</comment><comment><USER4> Since you're relocating back you can always say it was for family reasons, homesickness or blame the southeast. I wouldn't worry.

</comment><comment><USER5> I transferred departments 8 months into my first job. Then left that new job 8 months after that. Nobody ever gave it a second thought. If you want to do something else, just do it.</comment>


The Web is Dead-on - <AUTHOR> http://blog.openappmkt.com/2010/11/14/the-web-is-dead-on/

<comment><USER2> It always gets me when someone rants about 'fragmentation' and then mentions Windows as if it isn't an example of it. It's the BEST example of it. They forget how many versions of Windows there are, and how hard it used to be to get programs to work on different hardware, even though Windows itself was the same exact version.

<comment><AUTHOR> Android is facing the same problem. Even on the Web, we have to deal with differences in each browser.

However, I'd argue that fragmentation within a platform (like Android or Windows) is less of an issue for developers than having to deal with 3 or 4 vastly different platforms.

</comment></comment><comment> mike-cardwell I've actually been trying to reduce my web browser usage on my laptop and move what I can to local apps. I feel a lot safer using a Twitter app, than using Twitter in a web browser, and a lot safer using an IMAP client than a webmail client.

<comment><USER3> You actually trust the browser less than the individual apps developed by different companies? I'd think the apps would have more security holes than a browser that's been tested and used by millions of people everyday.

<comment> mike-cardwell Yeah, in general. Twitter has had XSS flaws that hit people using web browsers but I've not heared of any Twitter app exploits. I'd trust Thunderbird+IMAP more than Firefox+GMail without a doubt. I don't read my RSS feeds in a browser either, they get pulled down and converted to emails and are read in Thunderbird.</comment></comment></comment>


Tasmanian farmer jailed for 11 months for importing garlic - <AUTHOR> https://www.theguardian.com/australia-news/2019/sep/10/tasmanian-farmer-jailed-for-11-months-for-importing-garlic <comment><AUTHOR> _The varieties of garlic were potential carriers of Xylella fastidiosa, a bacterium rated the biggest threat to national plant biosecurity._

<comment><USER2> some detail here: [http://www.agriculture.gov.au/pests-diseases- weeds/plant/xyl...](http://www.agriculture.gov.au/pests-diseases- weeds/plant/xylella)</comment></comment>


IOS Live-Chat: Userlike Beta - <AUTHOR> http://userlike.com/

<comment><AUTHOR> What do you think of iOS Live-Chat Software?</comment>


Show HN: Kanye West bot interrupts your Slack conversations - <AUTHOR> http://ledhack.org/imma-let-you-finish/

<comment><USER2> Next up: A Stallman slack bot that interjects into any conversations that mention "Linux" to remind everyone that it's "GNU/Linux"

<comment><USER3> [https://twitter.com/rmsthebot/with_replies](https://twitter.com/rmsthebot/with_replies)

:)

</comment></comment><comment><USER4> At first I was suspicious of this.. Slack sends every channel message out to be parsed by a script? That's not good! But once I looked at the source it all made sense. Yes, in order to operate properly you need to be sending every message in a channel to heroku so that it can do the .05% probability matching and not give a reply every time (or only on specific keywords). This is how most slack web hooks work.

Looking at the source is very educational! I can't wait to take this whole solution and modify it with some company-specific features. It's really a wonderful introduction into using this Slack feature and to Heroku as well. Thanks for posting!

<comment><AUTHOR> Let me know what you do with it. :)

</comment></comment><comment><USER5> trying it out. thanks.

<comment><AUTHOR> How did it go? :)

<comment><USER5> Haven't seen it pop up yet. Most of us post screenshots on that channel where I set it up. Will check the code to see why.</comment></comment></comment>


Go Nil Pointers and Rust - <AUTHOR> https://getstream.io/blog/fixing-the-billion-dollar-mistake-in-go-by-borrowing-from-rust/ <comment><USER2> A minor nit: There is a major difference between Rust references and C++ references - while both are guaranteed to point at something, only a Rust reference is guaranteed to point at something valid. A C++ reference can point at an already freed object if you aren't careful which can be worse than a NULL pointer dereference since this can cause silent corruption.

<comment><USER3> Can you define better "guaranteed"? If you take a NULL pointer and dereference it you get a null reference. I realize the language standard insists this isn't possible, and so compiler developers have started feeling justified in saying "if (&myref == NULL)" is nonsense they can "optimize out" (as if I somehow typed that by mistake :/...); but that is just the compiler making an unwarranted and clearly incorrect "assumption": _nothing_ in any of the language standard, the compiler, or the runtime "guarantees" that references point at something. If dereferencing a pointer was required to do a one byte read from the address that could not be elided by the compiler, or automatically injected the moral equivalent of "if (myptr == NULL) std::terminate();", that would be an entirely different story; but, as it stands, a dereference from a pointer to a reference is nothing more than a blind type assertion by the developer, and so there is no reason to believe a reference is somehow any less likely to be NULL than a pointer the developer always thought would point to something.

<comment><USER4> > compiler developers have started feeling justified in saying "if (&myref == > NULL)" is nonsense they can "optimize out" (as if I somehow typed that by > mistake :/...); but that is just the compiler making an unwarranted and > clearly incorrect "assumption": nothing in any of the language standard, the > compiler, or the runtime "guarantees" that references point at something

I don't see how there is nothing guaranteeing that your references are nonnull. My understanding was that the standard prevents you from having a null reference because the methods of trying to generate one are codified as illegal or performing undefined behavior. Am I wrong here, or misunderstanding what you're trying to say?

</comment></comment></comment><comment><USER5> Rust has algebraic data types. That's completely different than the proposed solution for Go, which is pretty much what Kotlin does. And IMHO its a bandaid.

ADTs are the way to go. If Go had ADTs I would pick it over Rust in a heartbeat, as I personally don't care much about not having a GC, and think go-routines are superior to async/await.

<comment><USER6> This sounds like a fit for OCaml with either Async or preferably Lwt. ADTs are natural in OCaml, and you can even have Generalised ADTs which can encode ADTs into the type system.

Granted, the main downside of OCaml is it still being single threaded. That can be worked around, but it depends on your workload.

</comment></comment><comment><USER7> People complaining about nil haven't thought the problem through. It makes the language way more complicated if variables can't sit in an uninitialized state (with a default value of nil or zero instead of random bits). Basic stuff like named return values no longer work. Slices can only contain certain special zeroable types.

The right thing to do is to know statically in your code whether a variable can be nil, or can't. Don't put stupid little nil checks in every function, but maybe do so when storing a field, e.g. to ensure an object holds valid state.

If your biggest problem is surprise nil pointer values, then that's good for you, because they're relatively easy bugs to track down.

<comment><USER8> > Basic stuff like named return values no longer work.

If Rust hypothetically wanted to add named return values, I think the way they'd do it is have the compiler check that all codepaths through the function initialize the returns. In general rustc is happy to let you declare uninitialized variables, and even partially initialize them field-by-field, as long as it can prove to itself that everything's fully initialized by the time you read it.

<comment><USER7> This won't work the way Go does it, or else you end up with fiddly little rules about when you're allowed to take addresses of variables and such.

</comment></comment></comment><comment><USER9> I looked for it in the article but I didn't see see it anywhere: In go you can have methods that execute with nil receivers. In practice this makes nil in go very different than null I'm java.

func main() { var a _A a.getB().getM() }

type A struct { B _B; }

func (a _A) getB()_ B { log.Println("getB") if a != nil { return a.B; } return nil }

type B struct { M string; }

func (b *B) getM() string { log.Println("getM") if b != nil { return b.M; } return "" }

Everything is nil but they both got executed! Obviously, you should use this selectively, but it's there!

Algebraic Data Types always seemed more elegant when I've seen them in other languages, anyone have anything but positive things to say about them?

<comment><USER10> Isn't this just the Maybe monad without any benefits of abstraction?

</comment></comment><comment><USER11> I do like the idea of explicit non-nil pointers. While I have refactored code to explicitly exclude all uses of pointers unless absolutely necessary and (as mentioned in the article) studiously check for nil when receiving interfaces and pointers, it feels hacky as hell. Non-nil pointers would bring us halfway to a better place IMHO.</comment>


First FAA waiver issued to fly a large drone beyond line of sight - <AUTHOR> https://www.aviationtoday.com/2018/10/19/ge-owned-avitas-granted-first-large-commercial-bvlos-waiver/ <comment><USER2> It might be the first waiver under thay law, but certainly isn't thw first civilian beyond-LOS Flight.

General Atomics flew a civilian-registered SkyGuardian UAV across the Atlantic in July 2018 to attend the RIAT airshow, for example.

<comment><USER3> Pretty sure the FAA doesn't have any authority to grant or deny clearance over the middle of the Atlantic.

<comment><USER4> The point was that this isn't indicative of this being a first time this happened. Ops comment had nothing to do with jurisdiction.

<comment><USER5> But it was never implied that it's the first in the world.

</comment></comment></comment></comment><comment><USER6> Pfft, they are late. My neighborhood is full of obnoxious drones flying around apartment buildings with no operators in sight and no one will do anything about it, so they may as well have a waiver!

<comment><USER7> The operators may not be in YOUR line of sight, and still have line of sight to the craft. Do you have evidence that this is not the case?

<comment><USER6> In one instance I watched the craft at low altitude go around several buildings in a way that it would have been literally impossible to draw a straight line to ANY point without going through one of the buildings. That's the only instance I'm 100% sure.

In other instances me and several members of our community literally went around trying to find who the hell was operating some drones over their properties (because they were dangerously close to some fragile things), and no one could find them. So possibly had some line of sight, but were pretty darn sneaky.

<comment><USER8> Operators aren't necessarily stationary, and there isn't necessarily one operator either.

<comment><USER6> Very true, though they generally cannot easily walk through concrete and fences.

<comment><USER9> You can't legally be moving and pilot a drone according to part 107 though if you're hobby flying it technically might be allowed but it's hard and not a novice thing too do since the RTH needs to be updated as does time left.

</comment></comment></comment></comment></comment></comment><comment><USER10> A decade late and a few bucks short. The FAA continues to keep the US in the dark ages of UAS while other countries eclipse us in drone use and development.

</comment><comment><USER11> Loving County has a population of ~134 and an area of almost 700 square miles. Suburban Amazon delivery this is not.</comment>


Food is free if you know where to look - <AUTHOR> https://fallingfruit.org/ <comment><USER2> I see it has listed a fruit tree in my yard... Is there a way to revoke that? I've given permission to my neighbors to pick as long as they knock, not to randoms.

<comment><USER3> Around 2000-2001 I rented a house in the small town where I grew up, and there was a plum tree in the yard. I mentioned to the landlord that I had been approached by the neighborhood kids asking if they could harvest from the tree, and the landlord said he had no problem with it if I didn't mind (that was his arrangement with the last renter).

Kudos to the kids for asking first, and at first I didn't mind, but they ended up climbing on my pickup truck parked near the tree (the only place to park it) and dented the hood and roof in several places. After I showed them the damage and asked them not to climb on my truck, I had a gaggle of neighborhood moms beating my door down to tell me how much of a prick I was to forbid their children from climbing my truck to get to the tree. I ended up having to call the cops to have them removed.

When the landlord found out I called the cops on them, he took their side and asked me to find another place to live (I wasn't under a lease, it was a month to month rental agreement).

I'm a homeowner now, in a house that is not in a neighborhood specifically so I can avoid incidents where people feel they have a right to invade my space and damage my property. Again, I'd have no problem if I had a fruit tree in my yard today and people walking past wanted to get a bite to eat as long as they are courteous about it, but mob mentality is not something I'm comfortable with.

<comment><USER4> Sounds like half the story. It'd be interesting to hear the other half.

<comment><USER3> I'm not sure what you're getting at, that is what happened. The only thing to add is that a few years later I noticed the house had been torn down and all the trees and bushes cleared off the lot. I have no idea of the circumstances surrounding that.

<comment><USER4> I'm just guessing the talk with the kids might have gone a little different than what was recounted. Sounds all rational and even-tempered. Perhaps some scolding or yelling was involved. We always remember ourselves as being perfectly polite in recounting stories.

<comment><USER5> Some parents are ready to fight you if you merely talk to their kids. Even more if you touch them -- like when you take away the chef's knife from the unattended five year old waving it around in the store.

Also, if a story was miscommunicated I imagine it was the kids talking to their parents: "Everything was normal until this old guy flipped out." They probably never mentioned the dented hood and by the time the parents get over there they had already made up their minds.

<comment><USER6> As a strategy against these kind of kids and people, I recommend bypassing. Do not talk to the kids. Take pictures, go to the parents directly.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Before you end up stealing someone's private property, introduce yourself to the property owner and ask for permission. If the property owner changes, you have to go through the process again. Rights aren't grandfathered in.

This seems to be beyond what many people are capable of. This app is going to be shut down.

<comment><USER8> There's something about the concept of private property that gets people properly riled up. It's mine, my preciousss!

What if you live in a monarchy and all the land and all the trees belong to the king? Do you have moral/ethical right to steal fruit from the king's trees?

There are very few private trees around where I am. This app lists a lot of trees in public spaces around me - trees I never gave a second thought before. I'm grateful for it.

> This app is going to be shut down.

Pray tell more. By whom?

<comment><USER9> how would you feel if someone stole your car? that is private property

<comment><USER8> Oh of course I'd be upset! (I don't have a car, but will entertain your theoretical scenario.)

If someone stole fruit from _my tree_ I'd be upset too!

<comment><USER10> I'm so lost; what is your point?

<comment><USER11> I'm not the OP or at all involved in this thread until now, but fruit trees will yield fruit again and again, a car will not. Now, if you owned the means of production for a Model T and I took a Model T, how upset would you be? That's more like "taking an apple" since you own the "tree"

<comment><USER12> Also not in this thread until now, but two thoughts:

First: A car can be "the means of production", if you're a driver for Uber/Lyft.

Second: the issue I understand is that this website isn't letting _one_ person take fruit from a tree, but treating all such things as open invitations for _all_ persons to take from the tree. To your analogy, that isn't taking a single Model T car, but seizing the factory and stating you're making cars for the entire city with it.

<comment><USER11> One could argue that if the City needs Model Ts and you're not doing anything useful with the factory, one should reprimand it to benefit society

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> Someone should do this for tech meetups with free pizza and beer. I practically lived on those my first year in the bay area. If you're smart you can eat for free every night of the week in exchange for listening to a few boring lightning talks and recruiter pitches.

<comment> dfeojm-zlib Terrible nutrition though, most def not how to run your body optimally.

Freeganing can save you bank.

Hit up the nicer grocery stores: Whole Foods, Trader Joes, Lunardi's, Nob Hill. Find out their schedules for throwing away perfectly good food because the arbitrary/conservative date on it "expired." One of my friends frequently scores expensive cuts of filet mignon steaks that they just toss (I'm vegetarian when it would increase demand for animal ag).

You don't need to waste time pretending to be interested in Meetups.

Also, if you go in the back of Starbucks and other chains that serve food, maybe an hour before closing time, you can score healthy vittles. (The give my friend all the black bean burritos and chicken salads he can carry.)

Personally, I'd be worried about eating fruit from trees in dense urban areas or near highways due to pollution and also pollution from landscape management (i.e., pesticides).

<comment><USER14> Many farms are near polluted places - especially airports and big streets where people wouldn't want to live. So you won't really escape the pollution - but maybe the _chance_ of eating car exhausts is better than the guarantee of eating them. Then again, you don't know what else happened with processed/supermarket food before it reaches you.

<comment><USER15> I think you have it backwards. The more accurate statement is that farms are everywhere, including near airports and big roads. It's not like farms cluster around major highways or airports. I would even go as far to say that your average farm plant sees less road pollution than a similar plant in a suburban environment.

</comment></comment></comment></comment><comment><USER16> It lists a virginia creeper in my area. Which has poisonous berries and can cause skin irritation...

</comment><comment><USER17> Check out Rob Greenfield if you haven't: [https://www.youtube.com/user/RobJGreenfield](https://www.youtube.com/user/RobJGreenfield).

He's living for a year on only food he planted or forages from naturally growing sources. He's in Orlando, Florida.

I find him inspirational. I'm now growing tomatoes, herbs, and salad greens in my windowsill and I've foraged several pounds of fruit and herbs from near my home -- and I live in Manhattan!

I can't believe how delicious and plentiful they are.

</comment><comment><USER18> Sarnia, Ontario has an entry labeled "Dumpster (edible)". It sounds like something you'd encounter in Nethack.

</comment><comment><USER19> OMG I laid the groundwork for the Falling Fruit mobile app, but I had to step aside and it was all so long ago! It has come along leaps and bounds since then.

The browser app has always been way ahead and the programmers behind the whole idea are super competent.

[https://github.com/falling-fruit/falling-fruit- mobile.git](https://github.com/falling-fruit/falling-fruit-mobile.git)

</comment><comment> marble-drink I always wonder why projects like this don't use OpenStreetMap. Public (and private) fruit sources could actually be added to OSM itself.

<comment><USER20> Especially considering the API costs of using Google maps now. I'm assuming they're getting free credits, but the list price per 1k loads is $7 so hopefully they're getting a lot for free.

</comment></comment><comment><USER21> There's also [https://mundraub.org/map](https://mundraub.org/map), a map that shows free fruits (mainly in Germany).

<comment><USER22> Unfortunately they do not open source their code.

Also I found this one:

"Wir gendern nicht, weil wir bei der Umerziehung des Menschen durch Sprachmanipulation nicht mitmachen wollen und weil die Mehrheit von euch dies laut Umfrage auch so sieht."

<comment><USER21> You omitted this part of the quote: " Wir duzen dich als mundräuber oder mundräuberin. Unsere Geschäftspartner aus Kommunen und Unternehmen siezen wir."

</comment></comment></comment><comment><USER23> The "About" section [0] of the site has the bio's of the people involved with the project. From there, there is a link to a free download to a 166 page PDF of David Craft's book on Urban Foraging [1].

[0] [https://fallingfruit.org/about?c=forager%2Cfreegan&locale=en](https://fallingfruit.org/about?c=forager%2Cfreegan&locale=en)

[1] [https://fallingfruit.org/docs/David%20Craft%20-%20Urban%20Fo...](https://fallingfruit.org/docs/David%20Craft%20-%20Urban%20Foraging.pdf)

</comment><comment><USER24> Today I've read an article about how Spanish farmers let fruit rot on the tree, since prices are so low that they can't cover the cost of labour.

Someone asked on the comments why they don't just let people go and grab as much fruit as they want, if it's going to waste anyway. The answer might be 'because regulations'. If you got a farm and people pick up fruit for free, does it count as unpaid labour? Could you get sued? People rather not take the risk. Not to mention the implications of allowing random people to freely roam your property, etc.

<comment><USER25> On my side of the ocean, people will gladly _pay_ to pick their own fruit (and pay even more to the ice cream stand by the parking lot on their way out). Just google u-pick.

</comment></comment><comment><AUTHOR> I think that 'street fruit' is a great resource. There are many fruit trees in neighborhoods that are under harvested, with piles of 'ground fruit.' I've always played by the rule that if I could reach it from the sidewalk, and it was overflowing, I would take some. For sure though, don't harm the fruit- producing plant, or any property surrounding it, because that's not considerate.

</comment><comment><USER26> There is a documentary I watched called "dive" a few years back which had a guy feeding his entire family with food he could get from the dumpsters of grocery stores. And it was not just unhealthy stuff. Fruits which were almost ripe like bananas are thrown out. The food wastage gives a good opportunity for free meals if we know where to look.

</comment><comment><USER27> Swedes will hate this app. Don't you dare take my secret mushroom spots!

<comment><USER28> Seriously though if somebody _else_ posted your secret mushroom spot on the map, it wasn't a secret to start with.

</comment></comment><comment><USER29> In my city it is full of dumpster diving spots that seems to be imported from trashwiki(?).

Three of four fruit trees in a sea of trash compactors, electronic waste disposals and residential trash. I can filter on a specific category but I can't seem to filter "everything but a specific category" to get rid of the freegan stuff.

</comment><comment><USER30> Super cool project! I was interested in something similar!! Glad to see they open sourced the data as well!!!

</comment><comment><USER31> Apparently not, I live in a metropolitan area of >1m people and there are just countless markers for "Dumpster (non-edible)" spanning the map.

</comment><comment><USER32> I'm going to be the cynic here and assign a high probability that eventually the insiders running the site will keep the really good spots to themselves, e.g., make it so that information about the really good spots is visible to the user id or IP address that uploaded the information and to the insiders, but not to the general public.

In the 1994, the last time I had information about them, the employees of the San Francisco Food Bank felt free to take any of the donations with the result that the clients of the Food Bank got whatever the employees did not want.

<comment><USER11> Yeah, that's like "Facebook keeping all the good friends for itself." It's kinda hard to "hide a tree" when they live multiple decades and people can keep independent databases. Not really something worth trying to hide imo. Perhaps technologically feasible on a day-to-day level, but if it were ever discovered, the scandal that would ensue would be disastrous to the whole project. And the whole point is to connect more mouths to more fruits, hoarding is actually counterproductive. That's wild about the Food Bank -- similar things probably happen in general for the "people who keep score for the game tend to have a higher score" thing. I wonder sometimes about the creators of those dating apps, and if they are also skimming top applicants.

</comment></comment><comment><USER33> Got to say this is an impressively dense map, there's plenty of options within 1 mile of my current location. Seems dangerous to use this info though, who knows what kinds of pesticides are sprayed on those fruit trees for example.

<comment><USER34> Who goes around spraying apple trees on public land? I'd be far more worried about finding a worm in my apple!

I do appreciate the efforts of the team behind this map. Found a strawberry patch only a couple of miles from my place.

<comment><USER35> Ah, no! I'd be _happy_ to find a worm in my apple -- read it as a guarantee that the apple has not been sprayed with pesticides.

Finding _half_ a worm, now,...

</comment></comment></comment><comment><USER36> I was directed to a pair of ponderosa pine trees. Yum!

<comment><USER37> I think you can get pine nuts from the cones of ponderosa pines, which might be why they're included.

The tree filter does in general seem over-inclusive regarding how practical getting something edible from the trees is though. The most common trees it turns up near me are sugar maples in parks. They do produce edible maple syrup, but you have to drill taps into them to extract the sap, which is probably not a great idea in a public park.

</comment></comment><comment><USER38> Interesting but (at least in my area) I wouldn't eat anything growing in bushes (like berries). The amount of leashed dogs I see peeing all over them makes me gag just thinking about it.

<comment><AUTHOR> Low fruit does carry that risk.

</comment></comment><comment><USER39> Ironic that you have to pay $3.99 for the iOS app.

</comment><comment><USER40> Food is always free. We pay for human labor not food itself.

<comment><USER41> Not really. If an owner owns tree he spends no labor on, the fruit still has value.

<comment><USER42> you still have to pick them and find buyers, usually (which is labor)

</comment></comment></comment><comment><USER43> ...well that's pretty offensive framing. Are time and tool acquisition free too? Because frankly you're going to have trouble eating possum without both.

I'm all for kids eating blackberries off wild bushes, but let's not pretend this is free to anyone except those that can already afford as much food as they need.

<comment><USER44> yeah its not free exactly, its not being policed.</comment></comment>


Show HN: Bootstrap In Practice, my guide for starters - ebook - <AUTHOR> http://www.williamghelfi.com/bootstrap-in-practice/

<comment><AUTHOR> A useful snippet from the page:

"This book is the introduction to Bootstrap I wished there was two years ago, when I needed it.

I wrote this book to help you start with Bootstrap and learn what it takes to use it for fun and profit."</comment>


Elon Musk has better things to do than run Tesla - <AUTHOR> https://www.wired.com/story/elon-musk-better-things-than-tesla/ <comment><USER2> "For models, Musk could look to Google co-founders Larry Page and Eric Schmidt, who have moved in and out of daily management at Google." Submarine promotion announcement for Eric Schmidt to co-founder of Google.

Good article. Musk seems less structured than Bezos and his "regret minimization framework". He will leave when it makes sense to _and_ is boring. Success is boring.</comment>


Ask HN: Should beginners review pull requests? - <AUTHOR> <comment><USER2> Absolutely, I see several reasons for that:

\- Code review is not only to say "this is wrong" or "you should do it this way". It's also an opportunity for all developers (especially beginners) to say "I don't understand why you do that". Every piece of code should be understandable by each member of the team, whatever their experience. Maybe the beginner dev will have to fix a bug on this complex piece of code.

\- Beginners often have another point of view (a more scholar, or naive one) that can help other devs seeing things differently, maybe in a better way.

\- Beginner devs are as good as anyone to find potential bugs, especially about the business requirements. For instance "I think you forgot to handle this error case".

\- Finally, seeing code from more experimented devs is a good way to improve.

Code review is not finding mistakes, it's a dialogue between a developer and the rest of their team about a piece of code. It's a great opportunity to make everyone improve, and it works for junior or senior.

<comment><USER3> This!

Let's add extra arguments on top:

\- Creating the habit of (and scheduling time to) reviewing patches since the beginning is great. You should also encourage them to trade reviews (if you want John to review your patch, just review one of his patches and then ask for a review!). Don't create developers that are not used to allocate time for review in their schedules!

\- Code written by senior devs will have to be read and modified by beginners, so you might as well included them in the review process. A lot of time they may make suggestions that leads to a code that can be better understood by newbies.

\- Reviewing patches (or just being aware of them) keeps the beginners up-to- date with the recent codebase changes.

\- Even if they don't understand the patches, they will get ever slightly more familiarized with the concepts involved, keywords, where each thing is, etc.

\- There's always _something_ the reviewers can do. They may not be able to assess if the locking model will lead to issues when the planets are aligned, but they may be able to check the constants against the specification, parameter misuse, off-by-one errors, etc.

\- You have to put appropriate weight on who is reviewing. A Kernel patch with a Reviewed-by: Linus Torvalds is probably good to go, but the same patch with just a Reviewed-by: Donald Trump may need more reviews :).

</comment></comment><comment><USER4> Yes, but as a pair with a more experienced developer teaching them _how_ to review a pull request:

\- What things to look for

\- How much scrutiny to give

\- When you should actually be pulling the code to run it

Heck, _I'd_ appreciate someone teaching me these things...

</comment><comment><USER5> Not to be glib, but beginner's should review everything they can.

<comment><USER4> It is important to know where to focus. One cannot focus on "everything".

</comment></comment><comment><USER6> Imho they should.</comment>


Ask HN: What alternatives to Symbolset? - <AUTHOR>

Anyone know any good alternatives to Symbolset? I'm having some serious issues with it in FF and IE. <comment><USER2> Font Awesome: <http://fortawesome.github.com/Font-Awesome/>

Although, if you're looking at icon fonts, you'll probably want to look at one of these two resources:

IcoMoon: <http://icomoon.io/>

Fontello: <http://fontello.com/>

</comment><comment><USER3> What problems are you having with FF and IE?

As for alternatives, there's the font version of Pictos (<http://pictos.cc/font/>) and you can export your own icons into a font format using Font Custom (<http://fontcustom.com>)

<comment><AUTHOR> Figured out the issue. Thanks all for your help!</comment></comment>


Firefox will get 3~9% faster when running gdoc test cases with chrome user agent - <AUTHOR> https://bugzilla.mozilla.org/show_bug.cgi?id=1307024 <comment><USER2> How about fixing it's CPU leak first??</comment>


Waymo CEO says self-driving cars won't be ubiquitous for decades - <AUTHOR> https://driving.ca/chrysler/auto-news/news/waymo-ceo-says-self-driving-cars-wont-be-ubiquitious-for-decades <comment><USER2> Aren't Tesla's driving themselves around?</comment>


June 8, 1637: Descartes Codifies Scientific Method - <AUTHOR> http://www.wired.com/thisdayintech/2010/06/0608descartes-publishes-scientific-method

<comment><USER2> I've also heard this date given as the epistemological turn, and I think it's a fair one to choose.

But I don't know why this isn't as well known as 1492, 1066 and other important dates.

<comment><AUTHOR> _"... I don't know why this (June 8, 1637) isn't as well known as 1492, 1066 and other important dates. ..."_

History has always taken a back seat in technology. Pity because science is built on history.</comment></comment>


Ask HN: How much did you spend on your startup before you got ramen profitable? - <AUTHOR>

How much did you spend on your startup of your own money before you got ramen profitable or got funded? <comment><USER2> Disclaimer: I had full-time employment to put a roof over my head and food on the table for the entire duration I've had a business.

$58.17 of my own money, spent in the one month before I had enough sales to fund all business expenses out of incoming revenue.

If I had to do it over again, I'd tell my younger self that the "bring it in for under the price of a video game" discipline was worthwhile, but $500 or so on icons, visual design, domains, and directory submissions in the first few months would have made my life much easier.

If you (somewhat arbitrarily) say having a day job is cheating and that my basic living expenses were de-facto invested into the business, then I'd estimate I probably spent something on the order of $15,000 of implied investment prior to ramen profitability. I think that is a pretty useless statistic but, hey, full disclosure.

</comment><comment><USER3> This is an interesting question because I spent the better half a year ignoring consulting work and focusing solely on our mobile software company. So if you include opportunity costs, you could say about $60k was "spent" over the course of about a year (about $5-7k or so was hard cash, the rest was 6-months of not doing service-related work).

The company became ramen profitable pretty quickly but I went back to doing part-time consulting work to maintain a lifestyle. As the AppStore grew exponentially, our apps pretty much remained ramen profitable. We missed our opportunity to make a bigger return when we launched our first app in Nov/Dec 08. Part of that was my fault based on how I setup the company, and being way to tolerant of lack of effort from developer-partners. Fortunately I learned my lesson with my own money.

We received angel funding about a month ago to start a new company, we'll have 1 (maybe 2) apps on iTunes but we won't be solely dependent on it for our success. This will let us stay focused on making a really fantastic mobile app, not only for Apple but also for Android and other platforms.

Right now I'm trying to decide if I should sell my former small business on SitePoint or something. I'm not sure we'd get much for it but it would be nice to put a nail in the coffin since I don't have time to really maintain the company. Anyone have any experience with small sales like this?

</comment><comment><USER4> To those who have said and are going to say that the time they have spent isn't worth anything, it is. The time you spend on your start-up is time you could be spending working a paying job, be it a "real" job, a freelance job, a consulting job, etc. You time is not free!

Now there is nothing wrong with this. You are investing your time into something you believe will be worth it in the end, but don't think you time has no value.

Evaluating how much your time is worth is another question though.

</comment><comment><USER5> I stopped doing consulting and lived off my savings whilst building my first SaaS app. It took a few months to get ramen profitable and I had zero income the whole time during development. Looking back, that was actually kinda stupid of me...

But we're not talking about time or opportunity cost, we're talking about hard expenditure right?

In that case, probably about $3000. Got spent on a bunch of things - hosting, buying software licenses, SSL certs, icon sets etc etc.

My biggest expenditure was on hosting. I went with a dedicated Rackspace server and I signed up way too early. 2 months into my contract I still hadn't launched and was, of course, paying a flat fee per month (not cheap!). This is precisely the situation I could avoid by using cloud solutions, but at the time there wasn't a cloud service out there I was comfortable with using. Tried out Rackspace Cloud Servers recently and would like to use that for future projects.

You live and learn.

</comment><comment><USER6> Camarades.com was funded from a software licensing scheme that brought in about 700,000 annually. In one year all the licensing income was spent on salaries for employees we hired and bandwidth (which was very expensive back then), the second year the business became profitable when we added 24x7 media advertising.

The licensing deal was abolished and the licensed software became completely free as long as people would host their video streams with us.

After that the whole thing was spun out as a different company underneath the parent, and extra shareholders came on board.

All told I figure about a million went in to it before it was really profitable, because it was launched off an existing stream of income we had in that sense a relatively easy time of it. It definitely is a lot of money to spend on something you are not sure is going to take off though, fortunately it did.

</comment><comment><USER7> Well, I spend enough for a nice new BMW or Mercedes Benz and I'm no where near ramen profitable after 6 months.

<comment><USER8> Did you work alone?

<comment><USER7> I work alone. Why do you ask?

</comment></comment></comment><comment><USER9> Working on a new game project; spent $590 for art, $20 on domains, using a server I'm already renting on another budget. Spent about 200 manhours on it (worth €10k or something).

</comment><comment><USER10> I'm still spending, altought it's more of time and energy, so far probaly >1000 $, I won't count my time I hope to break-even in January 2010.I will post it here.

</comment><comment><USER11> Mostly just time invested so far, thats the biggest chunk by far. Funds spent so far: $500 for legal, domains, hosting, etc.

</comment><comment><USER12> i wonder if there is a correlation between initial spending vs later success.

In some cases, i would be willing to bet that high initial spending lead to a greater turnout because you're able to leverage the money and convert it into increased traffic and sales.

<comment><USER13> That approach didn't really work out in the dotcom era. Of course, in some cases it would make greater turnout, but it is an expensive experiment.

</comment></comment><comment><USER14> $70, because domains names were expensive in 1998. Best $70 I ever spent, that's for sure.

</comment><comment><USER15> Around 10K€ or $15K in USD.

</comment><comment><USER16> <http://tweetminer.net/stats> \-- I spent $zero! :)

(check out <http://techzinglive.com> for weekly updates on how the business has been built)

Oops I guess the domain was an original cost $9

</comment><comment><USER17> Mr. Simpson, I didn't get rich writing a lot of checks.</comment>


Upgrade fading offices or convert them to residential in the age of Covid / WFH? - <AUTHOR> https://www.theglobeandmail.com/business/industry-news/property-report/article-future-proofing-upgrade-fading-offices-or-convert-them-to-residential/ <comment><USER2> I struggle to see how we cannot convert to mixed use - even before covid I would look in wonder at giant towers being thrown up in the City of London and think who on earth will be using then in ten years time?

We have always accepted it but most city "centres" are hugely discriminated towards adults of working age - just walk around and count the ratio of kids and mothers.

I remember a photo innLondon zoo of the first exhibit of some gorilla in the early 1900s - it was a sea of men wearing hats. We have reduced the list of people not "allowed out" and let women and children out a bit but we have still got a long way to go to have "walkable communities".

We need better balance -</comment>


Show HN: Autowrap C functions at runtime for the Python/C API - <AUTHOR> https://github.com/orangeduck/PyAutoC <comment><USER2> What do you mean "runtime" ? You have to compile some C code with macros to wrap a unique type signature for each function you want to wrap, so this seems to require a compilation step unlike e.g. ctypes which is a runtime FFI. If there's a compilation step, why wouldn't I just want to use Pyrex/Cython which let me write this:

        def py_do_something(float a, float b):
           return c_do_something(a,b)

while, during the Pyx -> .c compilation step, taking care of all the C API plumbing (refcounting, initializing a module structure, type checking etc.)

<comment><AUTHOR> By runtime I mean that the functions which are avaliable are registered at runtime - rather than being statically wrapped or converted by some previous tool in the toolchain. Sure, there is some macro stuff going on, but if you were to evaluate the macro stuff by hand you could even use PyAutoC to register C functions truly at run-time using dlopen.

A clear example of why this is useful is shown in the demo about overwriting __getattr__ etc. A static tool will just generate N number of getters and setters.

Pyrex/Cython are both pretty cool. I developed this for helping me with embedding python on an existing C codebase. Something those two things can't do. Similarly ctypes is great for doing it the other way around but doesn't work well for embedding and also doesn't do the automatic conversion so well.

<comment><USER3> For my money, something that looks like a C API with very obviously impossible things going on (passing "naked" names of primitive types like int and float) makes my personal WTF-o-meter go to eleven immediately.

I (of course) had to start reading the code to figure out what was going on, and saw that what looks like a function call is in fact a macro. That explains the "how" but (again, for me) it really doesn't come close to making it feel natural.

C code should look like C code, and you can't write a function that takes a bare "int" as an argument.

<comment><AUTHOR> Fair enough, I agree that it isn't the prettiest or most natural of code but it isn't any "magic" too far beyond convention. Without C++ templates this is the only way to achieve certain things - and is fairly standardized.

See va_args for an example of naked types being passed in the standard library. Really it is not much different from the fact you have to pass a format string to printf.

<comment><USER3> That's true, I had forgotten about va_arg()'s use of naked types. I do think the standard library has a bit more license to do weird stuff, and it's fairly well-known that va_* can be macros.</comment></comment></comment></comment></comment>


Ask HN: How do you make your warm-up time shorter - <AUTHOR> I used to work till late hours. That is - extremely late, I could stay up until 4am, have 6 hours sleep and then work the next day. That is not to say that I was working this whole time, I used to waste some of that time - like play chess every once and again, read HN post...
This will not come as surprise that I realized this hurts my family and so I decided I have to change the way how I organize my day.
I managed to change my life style to start work early (I wake up 5am and I'm in the office at 6am so I can finish at 3pm) and then spend quality time with family (quality that is I'm not tired or under phone / email). Once kids are in bed and I still feel like checking in I give myself 1 hour before 9pm, I go to bed not later than 9pm so I fall asleep before 10 so I can wake up at 5am again.
Everything would be fine if only I had shorter warmup time. That means when I come to the office at 6am I often need around 30 minutes of wasted time to make my mind to actually start working. What do I do during that time? I waste it to play mahjong, sometimes chess or read HN post...
I tried different things to fight these bad habits. One post here on HN suggests to maintain a TODO list, so first thing you do in the morning is to curate that list and keep it up to date in terms of priorities. This helped a bit but I still find it difficult to just jump straight in without having some of my time wasted.
If you still read this you might probably suspect that this warmup time is not just morning thing. Every distraction during the day (i.e. meetings, standup etc.) make me to waste some time to go back to the flow...
What are your ways of reducing this warm-up time? Or maybe I'm just lazy and nobody else have this problem? <comment><USER2> Man, don't be so harsh to yourself, your circadian rhythm won't change just because you want so :D I spend 1 hour each day in the same way, from 7am to 8am, and I bet there are a lot of people doing so. Instead of trying to make each single half an hour "productive" you can just be human and let yourself be adapting to waking up at 5am. If you can't but think it's a waste, avoid needing your analytical brain for something like chess and prepare breakfast for your kids, write poetry to let yourself go and drop into emotions, or dedicate time to some small housekeeping duty. All the time we live is somewhat "wasted", it's just as meaningful as we assign value to it. Don't stress yourself too much, people living in the countryside one hundred years ago used to live by the the sun, and they had so much time to "waste" that you wouldn't think possible, and I don't consider old farmers "lazy people" just because of that.

</comment><comment><USER3> I recall Arnold Schwarzenegger saying that he was the only one smiling in the gym. People would ask him why he smiles through all that pain. And he said that every rep brings him closer to his goal as Mr Universe.

It's not a wonderful goal, not even something his father was proud of. But it's a goal he kept in mind, every day, through every rep.

People are most motivated when they feel in control. It doesn't have to be actual control - studies show that even predicting a coin flip makes paying attention to flipping coins a lot more interesting.

A TODO list is half the job. Many people take a list, do what they can, give up on what they can't. The list does not give them control; and in fact it demotivates because it makes you feel helpless.

Visualize your plan. It might be worth taking some time to do this. Yes, it might increase warm up time, but you'll be able to go faster and finish faster, and it's not dead time. If you can't spare the time, you can still visualize while in the shower or on the drive to work.

Phelps would mentally visualize his race each night and then just play it back during training and during the race: [http://www.behaviouraldesign.com/2013/10/07/how-michael- phel...](http://www.behaviouraldesign.com/2013/10/07/how-michael-phelps-coach- trained-him/)

At the end of the day, review your plan. What went wrong? What should you have done differently? If you have no idea what happened, you could even break it down into scientific method - hypotheses and how to test them.

Remember, you don't have to execute the plan perfectly. You just need to convince yourself that you have increasing control over your day, and that should go a long way towards motivation.

</comment><comment><USER4> One weird trick: leave some code NOT compiling or with failing test or runtime error. Come in, reproduce the error and you'll be back in it quickly!

<comment><USER5> Hemingway would stop writing right when he was getting to something good, so he could continue on the next day.

<comment><USER6> I was fascinated with this when I first read about it, but I found this trick has a big downside to it: I couldn't get OUT of work mode. Sure, it let's you pick up immediately, but I found the reason was that I never put it down. Did anyone else have this experience?

I will say, this did not occur when I "picked up" something else. If I worked on another project or went to the gym and did something stimulating (sparring, not just picking up weights), then I had no issues disengaging from the day's work.

</comment></comment></comment><comment><USER7> > What are your ways of reducing this warm-up time? Or maybe I'm just lazy and > nobody else have this problem?

As far as I can tell, this is a fairly normal part of knowledge / creative work. You call it wasted time, but some part of it is essential to do the job well, and so you're legitimately working during that time.

It simply takes time for a human brain to shift from interactivity to contemplation, and a short chess game or similar seems like a good way to spend that time.

</comment><comment><USER8> One possible metric is "time to github commit". Track the timestamp of your first code commit each day. And correlate to how productive the rest of the day is. I've found that if I can get that first submission in before 9am. The rest of the day really opens up. A hack for this is to leave a little unfinished work the night before. A half implemented function for example. That way there is not too much of a context switch the next morning. And it is simpler to pick up right where you left off. Best of luck ;)

</comment><comment><USER9> Try beginning a problem towards the end of the day that you look forward to finishing and solving the next morning. That will create positive anticipation. That way, you can't wait to get started. It can be something trivial or more difficult.

</comment><comment><USER10> To be honest I think it's perfectly normal. I'm very much the same :)

The only times I don't have this "warming up stage" is when I have a problem from the day previously that I somehow figured out a feasible solution in my sleep

</comment><comment><USER11> You are definitely not lazy! It takes me a good 20-30 minutes in the morning to get situated once I'm at my desk. Sometimes that time is spent just reading email and catching up, sometimes it's checking HN, sometimes it's messing around on my phone. But I don't feel guilty about it because I'm paid for results and not my time in a seat, and sometimes I need that time to just chill and collect myself so I can keep getting those results. As long as you are getting your work done on time I wouldn't worry at all about this.

</comment><comment><USER12> I can understand the desire to increase productivity, but I often think we too easily try to combat our nature. For example, I tend to be very unproductive for a lot of the day and then have bursts of incredible productivity during which I do more in an hour than many do in half the day. I tried to fight that, but realized that the way my brain works is I map things out in my mind in almost an unconscious way, I mull over ideas (also semi-unconsciously). This is followed by a burst of productivity. This works for me and I've come to realize I don't need to fight it.

But since I'm aware of this, I've changed some things. For example, during my "down" time, I try not to get get too deep into other mental pursuits, I avoid dealing with things that might cause stress, etc. Basically, I try to ensure that when I'm ready to switch to productivity mode, my mind is clear and I'm ready to work. I'll even try to do some things that are arguably productive, even if it's not productivity towards my main work goals, for example reading documentation or guides on new tools I'm using...that kind of thing. Nothing too hands on or deep, but something that does make me better at my work.

I think you need to accept that's how you work and admire the diversity of creative/productive/mental "styles". Actually, you said it yourself! "I often need around 30 minutes of wasted time to make my mind to actually start working." What's the problem then?

So I don't really have direct advice for you. If it just takes you 30 minutes in the morning to get going, so be it. Have a coffee, do some reading while you ready yourself mentally for work.

The other variable number of distracted periods during the day is probably the bigger (or only) issue as I see it. For that, I'm afraid I don't have much advice, but maybe some of the points I made above are relevant.

EDIT: one way to think about it, perhaps, is that whatever your brain needs, it's going to get one way or another. You can't just ignore it indefinitely. Like, if you just tried to use sheer willpower to stay focused when your mind is begging you for a little break, you might be able to delay giving into that for a bit (which might actually be fine), but make a mental note that you're feeling the need for a break and schedule to take that in N minutes or later that day - basically at a time during which you reasonably feel it might be less problematic to be in your less productive mode. Point is, rather than trying to deny your nature outright, you can use your knowledge of yourself to reduce, what you perceive to be, the ill effects of your style. So plan around your tendencies instead of trying to ret rid of them.

<comment><AUTHOR> Great advice! Especially with taking mental note about need for break, I will take that advice!

My main problem is to get into the flow, once I'm there I'm able to maintain it.

I have days where the flow is so great that I sit whole day with code and be productive until the very end of my work day. I love what I do and those days power me up in such way that I just leave my desk and I'm so much easier to live with at home... That's what I want every day :)

</comment></comment><comment><USER13> I think it's way easier to keep in the flow than to start things and this delays my sleep rythm too if I'm not forced to get up in the morning. (I'm still a late person and will max out flex time at work to only get in at 10am or something)

30min downtime after work however is nothing, that's not warmup, that is well deserved rest and while meditating sounds super healthy and mahjong doesn't I'd argue it's quite similar. I think your brain needs this, especially if you do mental work during the day. But even on a free schedule I'd say off-time keeps me sharp.

If you took hours on a saturday I'd recommend habits: read hn (or what ever you choose, just not all of it) in bed so you than have a clear cut by getting up. Than have some pleasure along with starting your todo: good coffe and a nice sandwich or something.

Another trick is keeping your todos tiny: find a tiny thing you can do right now without it feeling a burden and don't feel pressured to do more. Once doing it it's often easy to continue by free will or at least have the task working in your brain in the background to get you back to it later.

</comment><comment><USER14> Time you enjoy wasting is not time wasted. You are not a machine that can be turned off and on at the flick off a switch. If you enjoy reading a small amount of HN in the morning, I don't see the problem at all.

</comment><comment><AUTHOR> Thank you everyone for your responses!

I was thinking about rationalizing this , and also about effect of my work that matters rather than hours sited at my desk, and also that human beings are not machines.

My goal was to park all non-work time and spend it with family, playing chess to get into the flow feels like non-work time...

Maybe what I wrote feels like exaggerating but it comes from my other thoughts I had about life. Mainly that if I ever want to start something on my own and in the same time not to make my wife to divorce me is to become more efficient with time I spend at work. When I feel I waste time this makes me frustrated and some of that frustration leaks to my home-time... in a way that sometimes I have a feeling that time not invested is time wasted. I feel like this especially on bad days where I don't feel like I have done enough.

I know the answer is simply "don't waste time", it feels awkward but it's like addiction and I don't have good idea how to fight it.

<comment><USER15> sorry for the soft approach, but I don't think the answer is "don't waste time", I think the answer is "be a bit more friendly to yourself".

I understand your goal is to be as productive as you can, but I don't feel talking yourself into anxiety and burn-out will get you what you want.

As you very rightly say, a human is not a machine.

</comment></comment><comment><USER16> \- Keep the mental work for the morning. \- Keep the physical work for the later part of the day. \- Till you had made up your mind, keep doing something else. \- We are not machines. So, as long as you are happy, you are doing good.

</comment><comment><USER17> I am in a related field (mathematics) and can pass along some (related) advice for a question I asked several people in the department: when do you find time to read papers and stay up to date with recent developments?

Most people said they read arXiv/papers first thing in the morning while having coffee to wake up. This advice has inadvertently helped reduce my wasted warm-up time since it is difficult to really think in the morning. I don't know what the equivalent of reading arXiv is for software development... reading HN?... so maybe you have already arrived at the solution :)

</comment><comment><USER18> Based on my experiences, in the very beginning of your day at the office, I'd recommend to tackle the work item which has the most odds of being completed in a certain time frame.

Let me elaborate - If you have a TODO list of N work items that could belong to one or more of - Set A - require more thinking Set B - require larger communication overhead Set C - have a clear go-to strategy and can be broken into multiple items

Then, picking up the items more inclined to Set C right after you reach the office might be a good strategy. The obvious reasons are a. you know what to do and b. you know how much time its going to take

</comment><comment><USER19> I also struggle with getting up to speed quickly in the morning, and find myself looking for distractions. One thing that helps is to reread the description of the story I'm working on. Compile the project again, look at what's still wrong, and think about what you were working on the day before.

Not giving in to distractions is still hard, though. It's a matter of willpower, but maybe also tricking your mind. Distract it from the unproductive distractions with some productive distractions.

</comment><comment> jerome-jh Change something physical: location of your desk, desk organisation, team, job, wallpaper ... and a the same time stop playing mahjong, chess and read HN at work. Just stop completely, and never do it again.

Your brain will get accustomed to this new order of things, and will keep it as a given: when at work, I work.

Changing something physical in your work environment is _required_ for your brain not to fall back to its old habits.

<comment><AUTHOR> "stop playing mahjong, chess and read HN at work. Just stop completely, and never do it again."

This is so simple and yet exactly what should happen.

</comment></comment><comment><USER20> On my first programming job (back in the 1980s), my manager said that studies showed that the maximum amount of real work you could get out of engineers was five hours a day. That's not because they're lazy or have a lot of meetings; it's a mental throughput limit. Rather than trying to run faster than anyone else can, maybe the correct answer is to accept that your brain has limits.

</comment><comment><USER21> Divide and conquer. Achieving small increments will fuel motivation for further work and also makes it easier to start. If your first task is, say, put your headphones on with music and do the build then you are more likely to just do it. And once you are there with your usual setup it's easier to just switch on. Routine helps, and with your morning wake-ups you are already on good tracks!

<comment><AUTHOR> Power of habits hmm... Sounds like something easy to try, thanks for advice!

</comment></comment><comment><USER22> Pour yourself a nice hot cup of your favorite tea (find out which is, if you don't have one). One hand to sip, one hand on the keyboard.

There, your warm up time is now half of what it used to be.

</comment><comment><USER23> Relevant, you are not alone:

[https://www.joelonsoftware.com/2002/01/06/fire-and- motion/](https://www.joelonsoftware.com/2002/01/06/fire-and-motion/)

<comment><AUTHOR> This article is indeed relevant, thanks for sharing!

</comment></comment><comment><USER24> Just out of curiosity, do you mind sharing some info about your circumstances?

\- what kind of job?

\- which country / state / etc?

\- what hobbies, especially sports do you have?

\- what exactly is the problem with your old schedule?

<comment><AUTHOR> I'm python developer, worked in a startup before doing all kind of technical stuff from product development, through infrastructure to daily development routine. I work remotely (however I rent a co-working desk for simple reason to have clear division between home time and work time), I'm based in London. Well, sport is sort of my Achilles heel - another thing I constantly fail to improve... Old schedule resulted in literally no time for my family, to the point my wife was thinking about divorcing me.

<comment><USER24> Well, congrats then on chosing to improve your relationship-incompatible behavior.

Unfortunately I don't have The Perfect Advice™, sorry :-)

I would probably do some self-reflection on my job situation. "Am I failing to deliver what is expected?" "Is my daily routine seriously that inefficient?" etc.

Sometimes we want to fix things which are not broken in the first place. YMMV

</comment></comment></comment><comment><USER25> Have you tried making the TODO list the night before? I don't do this regularly to avoid pushing myself too hard, but found it more effective.

<comment><AUTHOR> I used to rewriting down TODO list every day (like using pen and paper) and then looking through it every day (first thing in the morning though). At the time I had quite a few tasks that was long-term and also not fully under my control (i.e. I had to wait for somebody's input, and that somebody was not very cooperative). I figured this list helps me put pressure on myself but in the same time demotivates me a bit due to those long-term tasks..

</comment></comment><comment><USER26> Has it occurred to you that you need a warm-up _because_ you're in the office at 6am?

<comment><AUTHOR> Hmm good point... but in the same time I don't have other option at the moment, with small kids everything seems challenging... (I actually contemplate to start at 5am and move my evening activities entirely to take place in the morning...)

But that definitely is good point and I'll need to think about it. I often wake up at 5am so at 6 I'm already 1 hour on my legs, already had shower and some walk on "fresh" air with my cup of coffee picked up on the way. So I don't feel sleepy or tired at that point, just not concentrated and not in the flow.

</comment></comment><comment><USER27> Just in case if you don't know read "Deep Work".

<comment><AUTHOR> Looks interesting, I drop link here for future reference. [https://www.amazon.com/Deep-Work-Focused-Success- Distracted/...](https://www.amazon.com/Deep-Work-Focused-Success- Distracted/dp/1455586692)</comment></comment>


ICE: Track changes with JavaScript - <AUTHOR> https://github.com/NYTimes/ice <comment><USER2> The project is not being actively maintained

[https://github.com/NYTimes/ice/issues/126](https://github.com/NYTimes/ice/issues/126)

<comment><USER3> They're putting the project on ice!</comment></comment>


Bionic eye cam to shine a light on society - <AUTHOR> http://www.newscientist.com/gallery/dn16910-gallery-eyeborg/1

<comment><USER2> spam. there are lots more, can somone with kill power clean up the new page please ?

<comment><USER3> I thought it was interesting. Just because you don't like it doesn't mean it should be killed.

<comment><USER2> check the 'new' page then... 18 links in a row by the same submitter.

<comment><USER3> That doesn't necessarily mean that this one was not interesting.

EDIT: Also, if you want to talk about putting up useless posts, perhaps you should not be posting a link to OCW, a site most people here are probably familiar with. There's not many things that make me upset, but people who think they know what other people want to see, or, in your case, not want to see, is one of them.

<comment><USER2> Feel free to flag it.</comment></comment></comment></comment></comment>