skysight-inc/HackerNews huggingface dataset:
That shipping stable software that works and meets requirements is what people really want. In other words, what the non-tech business people want, or your customers want, is software that fixes their problems, makes their lives easier or makes them more money.

It's easy for us programmers to become fixated on using a newer JS framework, a slightly tighter Java loop or the latest cool language. Took me a few years to realise that even though I care a lot about those things, other people do not. They are interested in the outcomes, not how it got built.

I'm running my own business and building things for myself these days. I use vannilla JS on the front-end and Java 8 on the back. Since I gave up chasing the new cool tech I have built a bunch of stable systems that have been great, well received, products.

If you become someone who has a history of shipping things that work, you will do a lot better than someone who knows how to write hello world in every JS framework.
India's Zomato says data from 17M users stolen
Past the syntax similarities, both of these languages are intended replacements for an 'old' language (Objective-C => Swift, Java => Kotlin) on a dominant mobile platform, with interoperability as a major selling point (requirement?). As a mobile dev (mainly iOS) this is awesome to see and although I love me some Objective-C, working with swift has been a pleasure. Now Java on the other hand... (shudders).
With Google making Kotlin an official/first-class language and the syntax being so similar to swift I could see myself spending more time working with Android.
Adding my corollary, if you must use dynamically typed languages - ensure at any cost that you split it up into multiple small independent codebases.
Before becoming a professional programmer, be sure you understand that programming for recreation and for money are two completely different things, otherwise the latter has a big potential to take all the joy out of the former.
Couple of things are pretty apparent from the post:
1. Why would compromised developer account cause such a hack? Unless they don't have proper data control in place for production access.

2. The line about how "payment" related information is under PCI DSS compliant shows how these guys are running their business. I frequently see people, who are confronted about not following some form of compliance or hack, argue back on "segregation" of compliance. They say - X data needs (or was) to be compliant while Y doesn't. Sure not everything needed to be PCI DSS compliant but why not have better practices?

3. What about PII (Personally identifiable information) data they collect? Isn't that supposed to be rigorously protected? It seems they believe only payment and passwords are of use to hackers.
Bu Rust also must have an allocator under the hood that is unsafe and rust apps can call C libraries or C kernel so why do I see the Rust strike team complaining that something that they use indirectly is improved.
For me the major take away is that Nvidia is no longer the only supplier of "decent" DL hardware.

To think that any entrant no matter the size could come into the space and successfully develop a device in such short order is amazing.

Not only that but have it used within their own infrastructure for some time, and later to allow outside external usage, again amazing from a planning, execution, product perspective. Ah shucks, from a hardware perspective too.

Especially coming from a company In the traditional sense which has no business being in this sector (excuses).

It seems like NVidia is an army, polished to pump "chips". And this Google special ops team kicked ass.
* Functional is generally better but don't be crazy about it.

* Have tests but don't be crazy about it.

* Keep your development process as streamlined as possible.

* New languages generally aren't as hard as you might think and they might be the right tool.

* The right tool for the right job can make a huge difference.
...except in the interview.
That Richard's quote was a neat idea!
While I think OP is a bit too pessimistic, in a way s/he is right. Facebook can design a simple experiment, implement the changes in their whole platform, roll out, gather data, and iterate on it.

You are stuck with 25TBs of wikipedia for the rest of forever. And "academic datasets".

Because the important data is probably not inferable from web links or otherwise semi-passive Internet structures.

That said, I think the missing component is still a good mind theory.
That it's not a competition on writing dense code.

People tend to not say what they really want. Become good at finding the actual requirements. As a CS student, if there are requirements engineering courses, do take them.

For many projects implementation is the least important part of the project.

Professional conduct is worth a lot.
"free the slave" is not always trivial, though. Simply taking them out of the house moves them from a mat in the kitchen to sleeping on the street without a mat. They need a place to live, friends and family, and confidence to look for a real job.

Modern slavery is rarely keeping someone physically locked up (though sometimes it is). It's often more a matter of keeping the slave socially isolated and with too low confidence to dare to walk away.

I don't mean that they like their situation, but it's often what they're familiar with. Setting them free requires support and commitment.
As in all the disciplines, the most important 'tool' is the experience, and that - ça va sans dire - needs time.

That said, I think the best advice I can suggest is Divide et impera, https://en.wikipedia.org/wiki/Divide_and_conquer_algorithm
There is a saying in auto racing: slow is smooth; smooth is fast. I've worked with people that are all breathless go-go drama (screeching tires and spin outs to press the metaphor) it's annoying and inefficient. In the long haul they don't get nearly as much done as someone who is disciplined and methodical.
This. Make your _business_ case, not a technical case. This applies to software engineering, security engineering, etc.

The above comment does not absolve you from doing cool things, it's just that the cool things should align with business interests. No yak shaving. Sometimes writing a one-off script will take 30 minutes, and doing it by hand will take 10. Do it by hand.
How to delete windows.old
I wish I had learned to keep my head down and code without the expectation to release. Because nothing I released in the first 4 years of programming professionally was good, at least not by my standards today. Try telling me that 6 years ago.

I was dead set on building entire products, it's why I loved programming. It was why I love lego. But in hindsight it would have been a better use of my time to work on smaller projects and ideas. As almost nothing ever got finished before I was working on something new. I have very little in terms of a tangible outcome from that time period, and it extended beyond those first 4 years.

Now I wouldn't want to work on a full product before I knew I had all the larger parts finished first. I wouldn't want to work on those larger parts before I knew I had the smaller parts those larger parts depend on first.

Programming with this mindset has provided me not only with endless work to do. But less stressful, more satisfying, easily digestible work with semi regular tangible outcomes.
Hmmm, from the summary: "The theoretical magnetic energy product for this iron nitride (Fe16N2) magnet is 130 mega gauss oersteds"
> Counterpoint: The animals they are rescuing would have died in the wild.

Perhaps this is the preferred outcome, from the animal's perspective.

I mean if a human had the choice between dying and being caged in a 5x5 ft closet for a substantial amount of time, ...
Android to launch TensorFlow Lite for mobile machine learning
That seems like a pretty facile summary of the entirety of human history.
Slightly OT: I'm a reasonably competent Mac user, I use them all day and depend on them to control my house as I'm disabled. In the event I were to be compromised, can anyone suggest a logging tool/tools that I might be able to use on my network such that I could work out what the problem was and correct anything that needs correcting please?

We are looking at four or five Macs of differing types but all running the latest OS, a number of iPhones, iPads, more Raspberry Pi's than I'm going to admit to and a number of other IoT devices.

TIA!

Also, I really wish more companies would be this forthcoming when they pwned. I think it's really good when are large company comes out with this type of mea culpa, mea maxima culpa. If professionals can get totally pwned, I really do think it tends to make ordinary users think about their security a little more. Or maybe I'm just hopelessly optimistic!
Agreed. The wording of the 2nd amendment doesn't lend itself to encryption though which could be an issue.
> You can compile Kotlin to Javascript

Java (GWT) has been compiling to JS years before Kotlin was even a twinkle in JetBrain's eye.

I can't think of a language that doesn't compile to JS.
That is one of the great masterpieces of Western music.
Yeah, why not, Google will buy them if they are okay.
It is standard practice to include such a statement. If they said you were safe based on their practices, then it turned out there was a bug in their code or a library that exposed you, that would be really really bad.
If you're any good, and confident in your abilities, you can go contracting for the (comparatively) big bucks without needing over a decade's experience.

Most people are not that good, or confident, even among higher earners.
This is just one example, but my university recently revamped their football stadium due to a huge donation from an either an alumni or coach (I can't remember exactly) who donated specifically for this cause. If money comes from a donation, sometimes it's not the school's decision how money should be spent.
the concept of micromanagement
Well I can: it's a lot easier to get things done when everybody agrees on doing it. People with a shared culture are more likely to agree on things.
I wrote a web browser that ignores all text in <p> tags. Every page I look at is blank! Shoddy craftsmanship!
Thirded. Functional Programming should have been at least 4 years into programming, not 10
Crucial in a world where prosthetics and embedded sensors in your body could soon become common place.
> how do they create needs you didn't have?

They use all kinds of sophisticated socio-psychological techniques to do so.

Unfortunately, most people (including yourself) don't even realise this, hence they become more prone to such techniques.
Sure and I believe I have?
Aaaaand the UI is ugly like hell.

A combination of gitorious, sourceforge and the 90ths with a bit of modern dripplet over :D
This! and know why you are building what you are building.
If I could go back in time and give myself advice it would be:

0) Nothing is too hard to do, no matter how much those doing it might seem like towering titans many levels above you, or how out of your reach it may seem. Nothing is too hard, there are only things that take time, and things that take more time. If you put in the work, those titans will be your peers before you realise it. Of course, you can't do everything. If you want to put in the amount of work needed for some things, you need to focus. That means deciding to not do some things that you want to do.

1) No-one who is serious about programming gives a shit about language wars, they're for fanboys and spectators. People who get shit done are too busy to spend time on that. So don't sweat what language you choose (too much – there is still such a thing as the right/wrong tool for the job) and especially don't worry about the people insulting it.

2) If it's not constructive practice, you're wasting your time. I spent too much time - literally years - spinning my wheels, writing code but not getting any better at it. Make sure you're reflecting, make sure you're improving.

3) (related to #1) seriously stop worrying about choices and just get something done. You don't get things completed by worrying if you're using the right language/framework/library.

Unfortunately I worry that this advice would send me down another bad path and I'd probably need to add on something like:

4) All that said, some languages really are limiting, either in what you can do, the level of concepts you will learn, or straight up teaching you bad habits. Likewise some libraries / tools / frameworks are actually bad. While you should definitely avoid trying to optimise the last % of productivity, you should spend some time to make sure you're not using something highly suboptimal. If after reflection you believe you are using such a language/framework/etc, then broaden your horizons. That doesn't necessarily mean rewriting your current project, maybe do a toy project or some exercises in something else.
I don't get it. How does Kotlin actually solve Android's fragment/activity issues?
Co-founder here. We've also written recently about the 3 years of Bugfender, how we almost killed the product and how we managed to get now to over 10M installs: https://bugfender.com/blog/three-years-bugfender-9-5m-users/
Took me 5 minutes to find that page by my own. Screenshot or central link would be nice.
You don't have to design the whole thing before you implement. This applies more easily to smaller teams but there's a continuum between rapid dev and thinking everything out.

In my game dev it took me a long time to let go of "but I need to create an elegant/clever solution that covers all my planned features rather than just what I'm implementing now". What that got me was a lot of unfinished projects with elegant solutions. When you have time to code, code. Not necessarily the first solution that comes to mind, but maybe the second. Now you can keep coding instead of being stuck. Let your mind percolate on the solution in the background while you code, and while you're doing other things later. It's amazing how many times the solution will present itself after you implement a couple different pieces that now need to tie together. Use the power of your brain's pattern recognition.

Yes, you will "lose" some time in refactoring, but the truth is every project I've worked on, one-man hobby up to multibusiness teams, has had refactoring due to scope creep or "we didn't realize this would be an issue until we implemented it."

It will take time to learn how much thinking vs coding to do (both extremes are bad).

Final bit of advice: don't listen to the opinions of people as to what is a good or bad language. Try them out, use the right tool for the job.
For certain classes of problems the JVM just cannot be beat. Its a phenomenal bit of tech that laps the competition, especially with regard to large data sets, concurrency support, and instrumentation. Unfortunately, Java the language is fairly painful to work in (less so every release but still). Kotlin makes that particular problem less of an issue.

Even in plain Java though, your description of "the vast, lumbering Java engine cranking slowly and chugging and masses of XML configuration up the wazoo for everything" is largely only applicable in Enterprise software. Modern Java shops tend to eschew all those things and have for quite some time.
* Develop a good eye for hype and real trends. Try to follow the real trends and avoid the hype-fests. Avoid investing time learning fly-by-night technologies, but when something new and genuinely better comes along, jump on it.

* Listen to developers who have deep and abiding hatred for some technology that they can argue coherently (with a range of deep technical details, links to bug trackers, etc.). These rants are a gold mine can save you a universe of pain.

* Almost all good coding boils down to three things - choosing a less powerful language/approach, writing less code to do the same thing and looser coupling.

* All things being equal, take the job with the higher pay. It almost always means you're treated better in other ways, you work with better people, you work with better tech and on better code.
Plus, you can always reuse PubSubHubBub (now WebSub[1]), which is already used in RSS/Atom feeds to provide optional subscribing to updates if both the server and client support it.

[1] https://www.w3.org/TR/websub/
Here is an argument for your consideration:

Consider the concept of a business cluster, note that the city as a cluster is a reasonable idea [1].

Note that the population of Denmark does not break top 30 in a list of global cities [2].

Conclude that the country of Denmark, with its small geographic and demographic attributes, could specialise entirely in one high-margin economic area and further specialise their laws and social systems to that.

Basically, 5 million people can be sustained by the excess wealth of a strong local cluster. 50 million people cannot be sustained by one strong cluster, and the different clusters may have different needs.

I have no idea about Denmark, but if they /are/ clustered as a country around some high-tech industry, maybe the economically rational equilibrium to give out scholarships to support the local cluster? Maybe they are just nice people?
A country with many clusters needs a one-size-fits-all legal and social system that works with all the clusters. The economic equilibriums may be different to a single cluster.

[1] https://en.wikipedia.org/wiki/Business_cluster#By_type_of_co...
[2] https://en.wikipedia.org/wiki/List_of_largest_cities
Except for using what you know, and that tech doesn't really matter.

I would add that you shouldn't be afraid to use new tools is they get you to the end faster. Common case for me: I use c# for almost everything, but nodejs wrapped in an API for crawling
A beginner’s guide to acquiring new customers with email outreach
Upgrade

Or move to Linux
I think in this case he's including the suburbs in urban, as contrasted with rural living. In that light urbanization is generally harmful, as rural living tends to have less of an effect on wildlife since individuals are rarely stopping foxes, deer, etc from crossing through their property in the same way that miles of sprawl and deforested lawns do.
I was going to say the same thing. Why? For me at least, Lisp is by far the most enjoyable language to program in. Decades of my life spent fighting with class heirarchies and long compile times were all just in vain!
I wonder if Google's support for Kotlin has anything to do with Oracle's lawsuit over Java, or is it just a cherry on the top? :)
"Clever" usually ends up being a negative word when it comes to programming solutions. "Elegant" and "simple" are far more important. Keep searching until you find a solution that feels elegant and simple. If you're sure there is none, only then write clever solutions.

I also wish I had known to buy some Bitcoin.
Twice then theoritical max of rare earth ?
I'm well aware of the techniques they use, but my point is that no matter how much an advertiser tries to influence you into buying their product the final decision and action is always your own. You could argue that people with poor impulse control should be protected from advertisers, and I would agree with you to an extent, but that's a separate issue.
Android O Beta Program Announced for Pixel and Nexus Devices
The point is that the claim of cross platform everything is wildly unrealistic at this time. JVM/Android is production ready; javascript, getting there; native, not even close.

I don't doubt that 2-3 years from now Kotlin will have a cross platform solution, but to claim so today is borderline delusional. It's understandable that users are excited, Kotlin's on the verge of bigger things, perhaps even mainstream level adoption if everything falls into place, but there's a ways to go before they achieve one-language-to-rule-them-all.
Because that was not AI, and that was not a problem for them they set out to solve.
I also encountered way more IDE bugs in Scala than in Java. Actually during the full last year of development of a real-world commercial Scala project I encountered 0 bugs in Java and 2 bugs in Scala.

What about more objective measures?
Scala plugin issue tracker: 11667 issues.
Kotlin plugin issue tracker: 17664 issues.

And this difference is despite Scala being longer on the market and being more popular than Kotlin.

It looks like Scala IDE support is actually better than that of Kotlin.
You can find these with a minimum of research though, it's not like you _have_ to watch adds.

I haven't had regular TV in over 10 years and I surf with ublock origin yet I can still find the things I need to buy.
There is a big difference in using a programing language where unsafe code is explicit and easy to track down, versus one where each line of code is a possible security exploit.

Also Rust isn't the only option to write more secure code, it was already possible before C was even created using Algol and PL/I variants.

Quote from Tony Hoare's ACM award article in 1981, regarding Algol use in the industry, a programming language almost 10 years older than C.

"A consequence of this principle is that every occurrence of every subscript of every subscripted variable was on every occasion checked at run time against both the upper and the lower declared bounds of the array. Many years later we asked our customers whether they wished us to provide an option to switch off these checks in the interests of efficiency on production runs. Unanimously, they urged us not to--they already knew how frequently subscript errors occur on production runs where failure to detect them could be disastrous. I note with fear and horror that even in 1980 language designers and users have not learned this lesson. In any respectable branch of engineering, failure to observe such elementary precautions would have long been against the law."

EDIT: younger => older
- Don't use the next big thing before actually understanding the benefits only because someone else tells you to. (Looking at you, Angular and Docker!)

I'm curious, what do you not like about Docker?
If i understood it correctly, they are in fact contributing to llvm/clang and this is just a binary release with some EULA stuff.

Here's a Phoronix thread about it. Most posts are… well, garbage, but there are some from an user named "bridgman" who apparently works at AMD: https://www.phoronix.com/forums/forum/phoronix/latest-phoron...
Separate the code you do for work (delivering a product/service) from the code you use for learning and experimenting.

Keep your work code as simple as humanly possible.

Do your experimentation elsewhere (using the time gained by keeping your work code simple).

Your future-self, your co-workers, and your client will be grateful.
Interesting, I'm wondering if it will be more popular to learn ML model on mobile or just to deploy model on mobile and run predictions.
> while their own kids get to sit another generation out.

I don't understand that part. In the EU poorer kids have better chances to change their situation due to easier access to higher education.
I think part of that is that PyCharm is a JetBrains product. Those guys are the preeminent IDE makers out there at this point. Even Visual Studio is playing catchup to the stuff that they've been offering for years with ReSharper, and Rider is making a compelling case at becoming the best C# editor out there.

I cringe when I have to deal with one big legacy product of ours that still hasn't been converted from a Eclipse project to IntelliJ; it's an order of magnitude more painful to work with.