9diov's comments

9diov | 2 years ago | on: Dart 3.1 and a retrospective on functional style programming in Dart

Haha lovely, clearly we are in agreement here. You even put that in your book isn't it?

> The Visitor pattern is really about approximating the functional style within an OOP language (source: https://craftinginterpreters.com/representing-code.html)

The expression problem is one of those "mathematical duality" or yin-yang thing in software design that are less well-known for some reason. People keep pointlessly arguing in favor of one or another without knowing this duality.

Another favorite of mine is SQL vs NoSQL which Erik Meijer mathematically proved to be dual of each other using category theory (https://queue.acm.org/detail.cfm?id=1961297).

9diov | 6 years ago | on: Ask HN: How to rediscover the joy of programming?

The paper "Out of the tar pit" (https://github.com/papers-we-love/papers-we-love/blob/master...) discusses this in more details. Basically it argues that one needs to separate the complexity into essential complexity (complexity inherent to the problem) and accidental complexity (complexity due to the way the solution is designed). The idea is to reduce accidental complexity as much as possible while making the essential complexity more managegable.

The paper also discusses that you can separate a program into

1. state (data that changes over time)

2. behavior (computational logic)

In order to reduce the accidental complexity, you can use functional programming (which is purely behavior, devoid of complexity due to state mutation) for the behavior part. For the state part, you can use a relational database to manage it in a more systematic manner. They call it functional-relational approach to software design.

If you do game development, you likely heard of ECS (entity-component-system) and data oriented programming which in a way promotes this approach to software design.

9diov | 6 years ago | on: Google to Acquire Looker

For anyone who is not familiar with Looker, I wrote a write-up and review about it here https://www.holistics.io/blog/looker-review-and-breakdown/. Here are the key points:

- Its use of LookML provides a steep learning curve, yet provides a maintainable and reusable data modeling

- Looker's drill-down ability is decently powerful and easy to use once you are familiar with LookML.

- Looker does not have its own storage layer but instead relies on customer's data warehouses

- Looker, in essence, is a SQL query builder engine that converts business users' drag-and-drop inputs into SQL queries.

- Looker provides highly flexible and sophisticated access control and permission management, sacrificing simplicity for power.

- Looker has limited data preparation capabilities compared to other tools, delegating this task to its partners to provide these capabilities.

9diov | 7 years ago | on: DigitalOcean launches its container service

DO's "private" networking was not even truly "private" previously as it was shared among its customers. Only recently did it get to the point that the "private" network is separated from the rest. Anyway, even the new "private" network does not allow for something like installing a custom DHCP server and configuring custom subnet for the nodes inside. One of the most common use cases is to route outbound traffic from all the nodes inside a private network through a public gateway and DO's current configuration does not allow that.

9diov | 7 years ago | on: DigitalOcean launches its container service

It is good and all that they provide more services but why can't they provide the bread and butter of IAAS: virtual networking (aka VPC) - the ability to set up a virtual router and other nodes inside a private network. We are DO customer currently and need to hack around this limitation for quite a while now and it is the main reason we want to switch away.

9diov | 7 years ago | on: Ask HN: How do you organize/track your personal goals?

I think the problem is that the definition of goals is too vague and narrow causing the problem with using SMART system. I believe you need a hierarchy of goals, like so:

- Mission: This could be specific like "bring humans to Mars" or it could be vague like "accelerate space exploration".

- Strategy: This should be the principles and methods used to implement the mission. Example: "Starting up a private company that works on rocket technology. Sell electric cars on the side to make money."

- Roadmap: This should be actionable, measurable and time-based such as "build a reusable rocket by 2016"

9diov | 8 years ago | on: Why Choose Vue.js

Eh, Vue support the same thing too with render function. Under the hood, the template is compiled to a single render function too.

9diov | 9 years ago | on: Vim Anti-Patterns

  Any extraneous cognitive load just takes focus away from what I'm actually meant to be doing.
And Vim is the tool to do just that. It saves your cognitive load spent to edit text so you have more for thinking.

9diov | 12 years ago | on: TextTeaser – An automatic summarization algorithm

Can you provide a bit more details about your approach? Are you using machine learning or just simple scoring based on some heuristics? From the look of the source code it seems to be the latter to me.

9diov | 12 years ago | on: The Best Programmer in the World is the One Having the Most Fun

Is there any research to back this sort of popular statement? I am very skeptical of this kind of statement where the author makes up a romanticized story to illustrate his point. This is very similar to the popular "do what you love" blog post that get posted here once every few months.

The best programmer I know in person agonizes over his approaches until it satisfies his high level of standard. He is a professional, not an amateur who does his work for fun. Does he have fun when he works? Yes, sometimes, but not all the time.

9diov | 13 years ago | on: How I Failed, Failed, and Finally Succeeded at Learning How to Code

This reminds me of this answer on Quora for the question "How does one learn how to learn?" http://www.quora.com/Self-Teaching/How-does-one-learn-how-to...

Think of it as acquiring an addiction rather than "learning" something. Look for the most addictive component activity the subject involves, that can be repeated with minor variations and increasing complexity as rapidly as you can go.

In math for example, this is graded homework problems of increasing levels of difficulty. For programming, it might be little coding problems. For people management, it is running effective meetings.

No individual instance should take more than an hour on average, for a meaningful "hit."

Now do this activity repeatedly. "Learning" is merely a supporting activity required to keep the hits coming. You'll find that you are endlessly resourceful while pursuing the next hit, just like crack addicts can be quite clever in finding money to buy the next hit.

Some people are serial addicts and can learn one thing after another, learning many things very quickly. Others get addicted to just one thing. Others struggle with even one thing. For the last category, the problem is often patience until the first hit. Once you have your first hit, the addiction begins.

9diov | 13 years ago | on: Forget self improvement

I remember my Aikido club in Uni. At the beginning of every year, we held welcome tea with flashy demonstration to attract freshmen. The demo always looked so good that we often got ~40, 50 new members easily. By the end of the third months, can you guess how many new members stay? On average, 3, fking 3 out forty something new members. Why is that so? Because the first 3 months are boring. You stretch and learn to roll. That's it. And it sucks, you look like a fish out of water, awkwardly trying not to hurt yourself. But the three who endured all that and stayed, they became permanent members and almost all went on to become black belts few years later.

What I want to say is that loving something is hard work and usually the initial period is the hardest. If you don't grind your teeth to overcome this, you will never find what you love.

page 1