Another sad anecdote: A bank in Finland suspended an account for a text in free-form message field of a bank transfer. The message was for a vet visit of a dog named Ira. When you say "Ira's payment" in Finnish, you add suffix -n, so the text field said Iran, which of course must indicate money transfer to a sanctioned country. It is comforting to know that the bank system catches all the illegal activity that the sanction-busting criminals helpfully announce.
HN user
Anchor
This is quite interesting, the researchers describe the inhibitor working like a biological mask for your nose. In mice the protection lasted for 8 hours, and human trials are pending approvals.
unless a new battery technology arrives that for a start eliminates our need to once again fuck over some very poor countries
It is already here. Google LFP batteries.
Makes sense. Changed from "Elements of AI course soon free for all EU citizens" to "Elements of AI course soon available in all EU languages".
We can also cut them to make room for new trees. If we don't burn the C in them to CO2, but use them as raw materials (buildings, alternative to plastics, etc.) there is even more potential for carbon capture in this way.
Of course, the long term solution is to grow as many new trees per year as we emit CO2, so there is an upper limit for our CO2 budget, but this should give use time to convert to carbon neutral energy production and consumption without hampering the the GDP growth too much. In fact, it has been estimated that world GDP can actually grow even during the transition, due to, for example, positive effects of improved environment (health improvements lead to productivity improvements and so on).
From the release notes: "Parchment and vellum are made from animal skin so change material composition and color for spellbooks with those descriptions from paper to leather; eating those books now breaks vegetarian conduct" (emphasis mine)
There is something heartwarming about the attention to detail in some games. NetHack, Dwarf Fortress, ... I wish more games would be made with this mindset. Many modern games seem to overemphasize the "gaming" aspect, and sometimes forget the "playing" with all its joyful intricacies.
Same thing has happened in Sweden. There's a cohort of elderly people who arrived to the country as children during WW2, e.g., from Finland. Many were under 10 when they arrived, and now that they have gotten old, some of them have lost most of their ability to speak Swedish, and are only able to speak in their native language from early childhood.
Data consistency with concurrency (transactions).
I have that dream too. It seems that the more years I spend as a developer, the less I am comfortable to taking on technical debt. Maybe it is because there are so rarely opportunities to pay it off - and the interest rate is almost always way higher than anticipated.
Management acts this way because they have no way of evaluating the effects of maintaining code quality. Only developers with significant experience are able to evaluate the long-term impact of each technical decision (and even we are still not very good at that).
<rant target="not you">
And why should management be able to evaluate technical decisions and code quality in the first place? That's our job! The problem is that we have given management the false choice of lower quality + faster shipping vs. higher quality + slower shipping, when in fact we should not have given them any say in the matter. And before we hit me with the but we have to be first to the market and fix it later line, I need to point out that companies don't die because they were not first to the market, they die because their operations and development became so slow and costly that they could not compete anymore.
What we should do as developers is to stop talking about code quality to our managers! When we are asked for an estimate, we give them as accurate estimate as possible with the code quality that we feel is sufficient for long-term maintainability of the system. And we don't negotiate on quality anymore, and especially we don't negotiate on estimates! Only functionality (MVP and all that). Then we don't need to ask for refactoring time, rewrite time, code polish time, stabilization time on our systems (that we hardly ever get anyway), because it is all in there in the original estimate.
Management expects stable productivity, they base their estimates of operational costs and investment costs on the number of people working on the system, not on the age of the codebase (why should an old codebase cost more to work with? they ask). If we give them false hope on the productivity of the team by producing crap fast in the beginning, the whole business case may collapse when we produce the same crap slower and slower and slower later. Management is in no position to evaluate the effects of bad code on the business case, because they don't understand that. We do. The only thing we can do as developers, is to remove the option of low quality code altogether.
And we say that it is so slow to create quality code? And estimation is hard?
We learn it. We can write high quality code as fast as the usual junk we see in most systems. We keep track on our estimates and evaluate how well we did, and improve. But it takes effort. All I can say is that it is our responsibility.
</rant>
On a positive note, the solution to this on a personal level is to find a place to work where technical excellence is built in the development culture (and there are such places), and cultivate that culture especially with the new hires (mentoring, pairing, etc.).
Except for the problem of too many layers of indirection.
If their hateful conduct and ideas are hidden from you, how will you know to fight back?
"I disapprove of what you say, but I will defend to the death your right to say it."
We should not be afraid that our ideas will lose if all sides are heard. We must win this war of ideas, there is no other way. But we cannot win unless we can point to what is wrong with their ideas. For us to achieve that, they must not be hidden.
It seems that history did not end. Every generation has to win their incarnation of this war, again and again, unfortunately. The beginning of our struggle is drawing nearer and nearer.
But he does bring the shortfalls to public attention, he has repeatedly said that driver's should not view current version of the system as self-driving vehicle, for example.
His plan is to evaluate the self-driving capability by comparing its performance to the human drivers, in shadow mode, perfect the technology to surpass human driver (10 times safer, per his comments), then present statistics from that to the relevant authorities (who should be qualified to evaluate any claim they make on these grounds), and only then proceed to release the self-driving technology to market.
I disagree that he is first a salesman. He is an engineer - and as an engineer he knows that anything he sells has to work or the product - and the company - does not last. He knows that very well, and has bet his fortunes on his engineering skills.
He is a salesman only second. And that is why this can actually work.
Imagine a car company that sells cars that may kill people driving them. And imagine that it would actually be one of the most common accident type that kills people. Would you be okay with that?
The thing is, every product is working and not working at the same time to a degree. It is only a matter of statistics - are we better off with or without the product.
A less of a classic but a really good discussion http://waitbutwhy.com/2015/08/how-and-why-spacex-will-coloni... (the whole Musk series is worth the read too).
The classic answer would be http://www.lettersofnote.com/2012/08/why-explore-space.html
Tesla does much more in-house when compared to other auto plants, they buy more individual components and raw material and less partially assembled parts. I'm told that many of auto plants that produce the complete vehicle do mainly integration work these days. Tesla's approach is different, so they require more hands, but pay considerably less for the upstream supplies flowing into the plant.
Please note that you are referring to the first version of PW. The newer version was unveiled recently, and here's some info on PW 2: https://electrek.co/2016/10/28/tesla-powerwall-2-game-change...
This is also the pattern used by most version control systems, which use several strategies to deal with long histories efficiently. We use them all the time to move backwards in time, and between alternative realities until we eventually merge to a consistent state all users agree on.
I thought change logs served this purpose quite nicely. Every time there is a breaking change, the user needs to check the change log anyway. If there are only some small breaking changes, they are only pleasantly surprised.
The pseudocode is intriguing. I personally have been stumped 2 or 3 times by static code analysis, disagreeing firmly with the machine for few minutes before realizing my mistake, but it is of course possible that there have been bugs in the analysis system of R#, which might explain what you saw.
Adjusting the rules and settings of R# is a daunting task, I agree. However, usually if I have special requirements for a project, I just set Inspection Severity to none for the language features I don't want to use, and that solves the issue for that project.
Hi and thanks for the work on Roslyn, I really like what you guys are doing with it.
Yeah, I know, many of the features of ReSharper are something VS should have had for a decade, regardless whether ReSharper has them or not. We - VS users - tried to tell VS dev teams in around 2005 that JBuilder (of all things, if you can remember that - it got eventually Eclipsed) had better refactoring and navigation tools than Visual Studio. The message from VS has consistently been that you are going to fix that, and when I heard of Roslyn, I though that this time it may be really happening. Only it has been ten years. Luckily .NET/C# was marginally better from developer perspective than JVM/Java from the beginning (the difference has grown ever since), and ReSharper (and other plugins) helped to keep Visual Studio afloat until today.
Now that Microsoft has embraced open source, community contributions, shorter release cycles, .NET Core, etc., I think you have a great foundation for the next ten years of .NET.
Oh, rest assured, I will continue to bug you guys through different channels.
ReSharper | Options | Environment | Search & Navigation | Rich mouse navigation in the editorFunny coincidence, I'm tweaking performance of manually managed contiguous memory using structs and refs as I'm writing this reply (the application is a combinatorial optimization system). There's nothing in ReSharper that currently suggests me to replace structs and refs with something else, or that I need indirections into my SoAs and AoSs.
But yeah, static analysis can yield false positives if you use for example reflection (one more reason to avoid it in most cases), but there's an option to turn a specific message off for particular line, class, etc. You can also edit ReSharper suggestions per solution basis, so if there are some special requirements, they can be incorporated into its behavior.
I agree that the tooling is about as heavy as you can get when you combine VS and R# with solution wide static analysis turned on, but it's nothing an equally heavy development machine can't fix. Then again, I may be old school in this, as I prefer massive desktop machines and too many screens. What kind of machines you use?
It is also worth noting that the structure of the code affects the static analysis and other features. It is faster to operate with lots of smaller isolated modules than large and coupled ones. The same techniques that kept C++ project compile times manageable, keep the static analysis real-time in C#. One more reason to decouple modules.
One additional selling point of ReSharper to me has been the embedded continuous learning enabled by it. Almost every time a new language feature is introduced, it is ReSharper that shows me how and when to use them, using suggestions in my existing codebase. I especially like how they are able to translate several nested foreachs and ifs into one line LINQ statement - and back again. This ability was instrumental for me to really become fluent in LINQ. This level of code analysis and refactoring is something we just don't see yet in Visual Studio.
I especially cannot live without the high quality static analysis possible on .NET anymore. So much so that any dynamic language just feels "shaky". I mean, when you are not entirely sure you covered all method calls with that refactoring, it feels uneasy.
Upon reflection, my code editing workflow follows surprisingly often the results of the static analyzer: I remove a code element and let the ReSharper figure where I need to go to make the required changes, be that variables in one function - up to solution wide elements. Alt+PgDown - Alt+Enter is a very powerful combination.
Edit: my goodness, it just struck me that I have used C# for 13 years already.
Visual Studio seems to keep incorporating features from ReSharper in every new version, and ReSharper subsequently keeps adding new features as a response. The ReSharper developers have the fun task of combining these features into a coherent UI.
New features in VS2017 that were already in ReSharper include configurable suggestions from static analysis, Ctrl+T navigation (it even uses the same shortcut), structured find references, intellisense filtering, multiple refactorings in given scope, live unit testing and coverage (in ReSharper Ultimate).
This is great and a bit amusing at the same time, but as a user, I like the improvements we get.
Once built, you can use and reuse the materials that went to the battery almost indefinitely. The stuff inside the battery does not get consumed, it just changes form. And once you have used all the cycles, you can take the battery apart, leaving you with the stuff you began with, ready to be assembled into a new battery. So if you generate all your energy via solar, you only need sunlight to charge and recycle them all.
The satellites are on Low Earth Orbit (LEO), so they are much closer to Earth than typical communication satellites. When the distance from ground station is 1000-1500 kilometers up, latency is not a problem. In fact, latency via satellites may be smaller than through fiber as speed of light is greater in vacuum. IIRC in fiber it is something around 0.6c, so a 40 % off from a space-based approach. Also there's probably going to be more switches along a ground-based path than along the satellite-to-satellite route.