Live data from Hacker News

Ask HN: What Technologies to Learn in 2020?

news.ycombinator.com

391–400 of 441 posts

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

#391

Earlier quoted context omitted.

There's no theory behind testable code. Mathematical theory exists only for formal methods. There's a bunch of made up patterns and techniques for writing testable code though. Most of these techniques are actually bad. Dependency injection with mocks is the one I hear about the most and it is also the worst possible way to organize your code. Do not write your code using this pattern... the complexity of this patter…

> There's no theory behind testable code. Mathematical theory exists only for formal methods. > Dependency injection with mocks is the one I hear about the most Correction, you don't happen to know the theory. Nor is it a mathematically super complicated theory. It's not a replacement for formal methods. The heuristic I use is "formal methods as far as can be straightforwardly done, tests thereafter." It boils down t…

>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. Your boundary and bulk idea doesn't seem theoretically sound, it's more of a personal strategy. Additionally it doesn't even seem sufficiently random/scientific. Why would a one element list be more effective to test then a 3452 element list? Your tests are biased towards lower ordinal elements.

If testing has any theory behind it I would think it would be the same as the theory behind science/experimentation in general: probability. But it seems like you're getting into something else here.

>Then factorial designs to combine parameters. You reduce the combinatorial explosion of factorial designs by splitting parameters via formal methods. You reduce things like external service dependencies to this something susceptible to boundary and bulk using Parnas's trace assertion method.

Can you point me to a resource explaining the trace assertion method? I can't parse your language here. What do you mean by "splitting a parameter?" Here's what I can make of it: Your talking about using some method (Parnas's) to modularize external services like IO away from testable logic... is this correct? What is your condition for an optimal test?

>From this point of view, writing testable code is a statement about controlling the complexity of test plans. Things like instead of having a function take a few representations, make it only take a canonical representation and provide adapter functions. For example, if you have a function f(t0, tn) that takes two timestamps, you could have t0 and tn be seconds since epoch, offsets relative to now, or some kind of text date format. If f accepts all three, then you have a test plan of size 9*N. If it accepts just seconds since the epoch, you have N + 2 (for the adapter functions). This kind of calculation provides concrete statements about making code more testable.

Your statements are inconsistent here can you clarify with a more detailed example? You talk about a function that takes two variables then you suddenly say f takes all three. What is your definition of the size of a test plan? What is N? Is it the cardinality of the parameters? What is your definition of code that is "more testable"

Can you just write out a full example of the thing your testing and how you are using the theory to make the code more testable? It will give me a more clear understanding of what you're talking about.

and/or better yet point me to a resource on the mathematical theory behind software testing.

From what I can make out you're overall reducing the cardinality of the types of the parameters to a function but it's not clear to me exactly how or what you're doing .

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

#392

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?

yes, you can send instructions to Docker daemons (on remote machines, you must enable the TCP listener).

It works pretty well

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

#393
- https://socket.io/

- https://www.react-spring.io/

- https://react-hook-form.com/ (I like the "Library Code Comparison" section on desktop comparing the code to competing libraries side by side)

I like any landing page that's straight to the point and gives you all the information you need above the fold without forcing you to scroll down through some parallax nonsense.

In general I think landing pages are overrated though, particularly for Saas applications and ecommerce. Just show me the damn product instead of putting me on a scavenger hunt to figure out how to demo it only to slap me with a login wall!

On a lighter note, all the crypto ICOs had pretty impressive landing pages. I guess when you're running an online pyramid scheme, the landing page itself is the product.

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

#394

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?

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

#395

Earlier quoted context omitted.

Can't go wrong with Beej's Network Programming guide! https://beej.us/guide/bgnet/ Also, the ZeroMQ Guide has some fun networking concepts. http://zguide.zeromq.org/page:all

Beej's guide is fantastic. I found it from the suggested reading on one of the OverTheWire wargames. I think of it as the true sequel to K&R.

Off topic, but Beej's Guide is how I want my ebooks formatted. I wish other publishers would take note. Safaribooks, Packt, Manning, Amazon - their ebook formats all suck. Just use HTML with a little syntax highlighting, that's all it takes. https://beej.us/guide/bgnet/html/#bind

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

#396
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…

[deleted]

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

#398
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…

The problem is when the database becomes the performance bottleneck.

Scaling a database is incredibly difficult, and requires a lot of expertise.

Some of the biggest engineering projects I've been a part of is removing a central db that everybody connects to in large companies.

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

#399

Sorry if offensive or presumptuous, I assume you are max. 30 years old? Being a freelancer the last 5 years (previously doing webdev part-time for 15 years) and having a couple of long-term side projects, I've been "burnt" enough that I've gotten tired of chasing shiny tech, just for it to become abandoned (e.g. bower, grunt, AngularJS) or introduce big breaking changes (e.g. some upgrade paths in PHP's Laravel or Sy…

I second this. I believe in stable and mature codebase/system even if I may have to sacrifice some new tiny hyped techstack or trend.

If your product is stable and usable by use, they dont give a damn about its internals. It should good enough for test case. I use vanilla php and posgresql/mysql mostly. They are well matured, stable and have known issues. The website I made for a small college in 2008 is still live and working seamlessly, only changes I detected in last few years on it, were related to styling and formatting content.

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

#400
- Programming Language Paradigms

- Algorithms and Data Structures

- Digital Electronics

- Compilers

- OS

- Networking

- Math for CS

- Distributed Systems

Why aim for hottest new stack before you solidify the foundations, then the hottest new tech should be a smooth ramp up? Or am I old school?

Post reply on HN