Live data from Hacker News

Ask HN: What Technologies to Learn in 2020?

news.ycombinator.com

411–420 of 441 posts

Re: Ask HN: What Technologies to Learn in 2020?

#411

Earlier quoted context omitted.

>If I have a parameter that is a list, then the boundary (empty list, one element list, two element list) needs to be probed carefully but in most cases the bulk (fifty element list vs fifty one element list) just needs a couple of samples Isn't this just a design methodology? You set the boundary parameter as the beginning elements and you arbitrarily choose a sample of a 50 element list. I wouldn't call this theory…

> You set the boundary parameter as the beginning elements and you arbitrarily choose a sample of a 50 element list. That isn't what I was trying to express. I was saying you would use: [], [5], [12, 3], and then a few long lists. > I would think it would be the same as the theory behind science/experimentation in general: probability. Probability isn't the underlying theory behind experiment selection in general. It…

>That isn't what I was trying to express. I was saying you would use: [], [5], [12, 3], and then a few long lists.

Yes and I'm saying this is an arbitrary design choice and therefore NOT part of some mathematical theory. What is it that made you choose these as test cases? How does choosing those test cases make your tests better?

>I was just trying to give an example. Obviously failed.

Yeah sorry, I'm saying can you just give a more clear example rather than using sentences to describe it, write out a full example, test cases and all. I may not be able to parse your descriptions but I could more readily understand a complete code example that is made more "testable" under your definition.

>No, I'm saying it takes two parameters, but we let each parameter accept all three of seconds since an epoch, a relative time reference, e.g., "2 days ago" or a text description "march 15, 2019".

Ok I see what you're saying now. The type of each parameter is a tuple of three values.

This doesn't make any sense in terms of test plan size. How are you Choosing N? It seems to me that you're implying a lower N is a more optimal test.

Let's make that example simpler. Let's reduce the cardinality of the types and make it bools so we can measure it. The cardinality of a bool is 2 (true, false). f(t0 bool, tn bool) will therefore have a total cardinality of 4 (2 times 2) meaning 4 possible variations of inputs (we are disregarding possible outputs and only testing expected output which removes the exponential increase in cardinality of the function type). Now let's make this a tuple of three values each: f((t0,t1,t2), (t3,t4,t5)), the t's are all bools. All possible input cases are now 64 in total. (2 times 2 times 2) times (2 times 2 times 2).

Your test space of possible inputs to measure goes from 4 possible tests to 64 possible tests. This is the measure of the total possible tests you can ever run on the function before you have exhausted every possibility.

If you have N conditions why does increasing the number of test cases required to fully test the experiment (which in your example is nearly infinite, but reduced down to 4 and 64 in my example) suddenly increase the N by a multiple of nine? This makes no sense. Also why do the adapter functions have a test size of 1? What is your metric for determining N?

>It's used in what's called design of experiments in statistics to calculate optimal sampling points for continuous variates, but if you look at what scientists actually do to choose what experiments to run, it is not based in probability.

It's based off of statistics which is itself based off of probability. Probability is the mathematical theory and statistics is theory applied to the real world. Both are math but the latter isn't theory in the sense I'm talking about it.

I'm not really talking about applied experimental design here. I'm talking about a theory that will give me the shortest possible path between point A and B in a cartesian plane. I don't need "design" to help me here, calculation and theory will give me the optimal answer.

In your examples, it seems that there is no exact definition of "optimal" and it seems you're making a bunch of arbitrary test choices to try to converge your tests onto this blurry definition of "optimal."

This is what I mean by there is no "theory" behind tests. Even if you have formulas that give you a bunch of other metrics like "test size" it doesn't mean anything unless N is a concrete number derived from concrete measures. If your "test theory" focuses around just reducing an arbitrary N then I'll give you that, but right now I'm not clear about how this number scales up or down with "testable code"

Re: Ask HN: What Technologies to Learn in 2020?

#412
post #308

Earlier quoted context omitted.

Rust is lower-level than Go, but it's also higher-level (!) insofar as Go is among the least "expressive" languages out there — has to be its #1 criticism / value depending on where you stand. Go is very niche in scope, which is how it manages to be so essential.

I've heard this criticism a lot, but I don't really understand it. In comparison to Lisps, Haskell, and other languages I love, of course Go is inexpressive, but that's part of the point. In comparison to languages with which Go actually competes, e.g. Java, C++, etc, (uncharitably, various flavors of Blub) I don't see it as particularly inexpressive. In particular, although Rust ostensibly has some very high-level f…

As far as I'm concerned, you're preaching the choir! ;-) Very well worded, by the way.

But I've heard enough opinions to know this is opened to preferences.

Re: Ask HN: What Technologies to Learn in 2020?

#413

why not something that doesn't seem to relate to your backend work at all, e.g. Dennis Yurichev's Assembler book will take you all of 2020 to finish :-) (aka "Reverse Engineering for Beginners"): https://beginners.re/RE4B-EN.pdf (see also HN discussion https://news.ycombinator.com/item?id=21640669 ) Erlang and BEAM is incredibly cool concept: https://www.youtube.com/watch?v=FonRzASOkZE I also really like Nim: https:/…

Anderson's 'Security Engineering' is a great read. It's a giant tome, but if you have a little bit of darkness in your soul, you will spend most of it giggling gleefully.

agree. I thought the Mig-in-the Middle example was sublime, (even though he said later it was "unfounded"[0][1]):

> One case history that unfortunately turns out to be unfounded is the story of the `Mig-in-the-middle' attack, pp 19-20. I got this story over a beer from a chap I met at a conference who was wearing SAAF uniform, and it seemed technically plausible. I tried to get independent verification and failed, as I mention on page 19. I used it, with that caveat, as I've found it is a very good way of getting students to understand the risks of middleperson attacks on crypto protocols. However, in September 2001, I learned from a former employee of the South African Communications Security Agency that the story is apocryphal. As there were no South African air defence forces on the ground inside Angola, IFF was not used there, and the SAAF did not have secure mode IFF at the time anyway. I am also told, however, by former GCHQ / Royal Air Force sources that similar games have been played elsewhere by other forces. See the excellent books by R.V. Jones (references [424] and [425]), plus the later chapter on electronic warfare, for more on air combat deception strategies.

[0] https://www.dlab.ninja/2012/04/mig-in-middle.html [1] https://www.cl.cam.ac.uk/~rja14/errata.html

Re: Ask HN: What Technologies to Learn in 2020?

#414

Learn Cadence Workflow ( https://cadenceworkflow.io/ ). It implements a new way to build distributed systems using fault tolerant virtual memory. It lowers the complexity bar for hardcore backend programming by eliminating the need for managing the application state through databases and queues.

Hi, what do you mean by hardcore?

I mean systems that have to scale to hundred of millions of users and guarantee durability in presence of infrastructure and software failures.

Cadence is used in production by over 100 teams at Uber and multiple outside companies. For example here is a presentation that describes how HashiCorp relies on Cadence for the new version of its Consul product: https://www.hashicorp.com/resources/making-multi-environment.... The Cadence related part starts at 17:30.

Re: Ask HN: What Technologies to Learn in 2020?

#415
post #354

Earlier quoted context omitted.

I'm not sure recursive CTEs simplify things. Yes, they allow you to express Turing-complete computations in SQL, including indefinite and parallel iteration. But if you weren't going to express those computations in SQL, you'd probably express them in Python or Lua or JS. Is doing them in SQL really going to be an improvement? So far I have not impressed with the results.

My experience has been, especially if your application layer's in a scripting language, pushing as much data-fiddling to the DB as possible will save you serious performance headaches down the road, even if the application layer implementation looks OK at first. They're all really slow and memory-inefficient, and often moving that stuff to the application layer also means more queries (else, typically, why not do it…

My past experience generally agrees with yours, but I'm not confident that it generalizes to recursive CTEs.

Re: Ask HN: What Technologies to Learn in 2020?

#416

I came here to tell OP to spend the time learning something like Terraform because it is not a trend or a fad, has wide adoption by the enterprise, gets them closer to the metal in understanding how everything works and will almost definitely help them in their career. I've instead found a flame war with someone presuming a person's age and preceding to talk about how much better they are ... oh HN why does it always…

can you use terraform with docker? should you?

They don't operate at the same level, so it's common that a project would utilise both. For instance Terraform can create your K8s cluster, that you then later use as a target to run your containers

Re: Ask HN: What Technologies to Learn in 2020?

#417
post #264

In a word: biotech. Okay, yeah, that's a bit beyond the scope of your question... Tech-wise I think the stealth silver-bullet will be "Categorical" programming†. When this hits it might even contract the job market for programmers. Compiling to categories" Conal Elliott http://conal.net/papers/compiling-to-categories/ † As in a kind of PL paradigm: https://en.wikipedia.org/wiki/Programming_paradigm

Will compilation to categories have an impact on biotech, more specifically on synthetic biology?

I think so (but I'm not a domain expert.)

Start with these folks: http://www.appliedcategorytheory.org/

Re: Ask HN: What Technologies to Learn in 2020?

#418

In a word: biotech. Okay, yeah, that's a bit beyond the scope of your question... Tech-wise I think the stealth silver-bullet will be "Categorical" programming†. When this hits it might even contract the job market for programmers. Compiling to categories" Conal Elliott http://conal.net/papers/compiling-to-categories/ † As in a kind of PL paradigm: https://en.wikipedia.org/wiki/Programming_paradigm

> In a word: biotech. Can you explain way? People keep saying this, and I really don't see it, despite having done my graduate work in biology.

I'm a weirdo, and my particular answer may seem waaaaaaaay out there, but you asked, so let 'er rip:

Did you watch the "What Bodies Think About" lecture I linked in a sib comment?

I suspect that we are on the cusp of a bio-information revolution.

Study of evolving systems indicates that intelligence is ambient in the biosphere.

Now some people have been "talking" to life since the dawn of time, and now Levin's work (it's his talk) is filling in the scientific basis for what Robert Anton Wilson and others call the "Neurosomatic" circuit of awareness.

We should be able to e.g. learn to "talk" to our own tissues and regenerate organs and limbs. (We might not need any technology to do it.) Also, see Findhorn (the gardens and spiritual community in Scotland) where they communicate with Nature spirits. We are just at the point where science can begin to validate this sort of thing, which will obviously lead to a major shift in global society/civilization.

https://en.wikipedia.org/wiki/Findhorn_Foundation

Re: Ask HN: What Technologies to Learn in 2020?

#419

In a word: biotech. Okay, yeah, that's a bit beyond the scope of your question... Tech-wise I think the stealth silver-bullet will be "Categorical" programming†. When this hits it might even contract the job market for programmers. Compiling to categories" Conal Elliott http://conal.net/papers/compiling-to-categories/ † As in a kind of PL paradigm: https://en.wikipedia.org/wiki/Programming_paradigm

I realize it may have been an offhand answer, but what do you have in mind? Go get a graduate level understanding of biochemistry? Start working with genomic data? Etc.

Here's one of my favorite intros to cell biology: http://www.cs.cmu.edu/~wcohen/GuideToBiology-sampleChapter-r...

There's also an older HN discussion about it: https://news.ycombinator.com/item?id=10961440

Re: Ask HN: What Technologies to Learn in 2020?

#420
For web frontend, Svelte.

I did a year and a half of React/fullstack dev and really didn't like it. (disclaimer: was a fullstack dev for many years but focused on backend more, and only worked with jquery frontend before 2017).

My next (current) job is backend dev so I haven't gotten a chance to do frontend professionally again; I briefly dabbled in Vue and liked it; and then I discovered Svelte and like it even more. I started working on personal projects in Svelte and hope to learn a lot more. Honestly I'm just hoping for Vue or Svelte to take off as they seem just much more sensible than React, but React is a giant now and doesn't seem to go away any time soon.

Post reply on HN