233 karma · joined April 20, 2013
I can recommend you to watch YouTube videos and watch people like Alan Kay (watch all the videos), Hal Abelson, Jerry Sussman and others pioneers of our industry. You should quickly notice that what we have now is a local maximum of some trends and much much more is waiting to be (re)discovered.
Hint: AWS and K8s are poor attempts to create real Object Oriented system. There will be much more like them in the future, but of a higher quality and based on some real rules, not accidental connections with HTTP messages.
2. How is solved the situation when <button> is delivered to the user, but "onClick" action is not because network failed?
I can summarize Smalltalk thing this way: existing Smalltalk implementations (Squeak, Pharo etc.) are not something we should use in real world, they are just proofs of concept and food for thought. Real Smalltalk-like/Object oriented systems were bespoke written for specific machine and specific customer. Current day examples of OO (object oriented) systems really are... the Internet with all of its nodes, operating systems UI windowing systems to some degree (although very crippled and simple), maybe something like kubernetes, but again, it's very crippled and awkward. The ultimate goal is to create an environment, where there can exist objects (let's say processes/agents), which talk to the environment and other objects using messages. On top of all them you should be able to create full programming language which would allow you to compose/iterate/send messages to objects in any way you want, creating as many levels of abstractions as you wish, maybe creating new wrapper objects keeping some other objects inside etc. The programming language itself also should be the subject of real object orientation, for example the debugger or running program should be an object reacting to messages like "stop", "resume" etc. Languages like Rust/Go/JS should be used only to implement internals of some object and react to incoming messages in its narrow area when managing memory, data structures and IO. This is partially true today, we use OS to send messages/pipe sockets etc to the objects/processes. Sending messages should ignore the physical location of the object, just like the Internet does.
Thinking this way, the glue code we write today should disappear in 99%, we should be able to start thinking in higher abstractions, about running processes, computations in time and space, how they relate to each other, make queries to the processes, create interceptors etc. This is that I see when Alan Kay says the computer revolution haven't happened yet and we're still dealing with bag of bad ideas from 60s and 70s. Just packaged in nicer clothes, because we have faster computers and better screens.
We should start thinking longer term and not focus on immediate money as quickly as you see some results, because that's running in circles and real wealth is not created.
This is also the kind of articles the HN should be used for.
What the author wrote just works and it transcends technology world. Works in almost all contexts.
I also own Gigabyte AERO 15 OLED laptop and I must admit I prefer this screen over Apple's. White text on black looks amazing and to be honest feels a bit magical, like a thing floating in the air, especially if I look on this screen in a dark room. Code, terminal content looks amazing. It's only 60Hz though, but for mostly static coding 60Hz is enough. Ubuntu works really well, so I don't have to deal with Windows for programming work if I don't have to.
I'm tempted to buy LG OLED 27EP950, it's expensive, but honestly I'd pay those money to reproduce Gigabyte AERO 15 OLED experience on 27 screen. But I know it won't happen, because LG screen will have worse pixel density, it's only 4K. It should be 5K at least, or even 5.5K or even 6K.
I've felt compelled to write this question on HN. Even if I don't draw anything for me, maybe someone else will. Additionally, remembering I asked this question and didn't get inspiring answer, I might finally be compelled to write my own thing without any other questions. You never know.
And if we already do meta talk: 1. Every rule has an exception. 2. Always do most exciting thing, today it's asking a question, tomorrow it's writing an article. Rule 1 works for points 1 and 2. And also works for your impressions about best articles. :)
Remember what I said earlier: UI is a functional representation of state.
Hmm, in React, true. But in general case it's not true. I expect new way of (better) two way bingings to emerge. function fn(query:string){
const stuff = // do some stuff with `query` variable
return createType(stuff);
}
type MyType = FromJS<fn("SELECT id, name AS nom FROM things WHERE active = true")>;
This way we could compute types on the fly with JavaScript instead of creating monstrous types in TypeScript types system.Over the time I began more and more appreciate Microsoft's "boringness" (which is debatable itself) because their tools are real products, not marketing tools for developers. What matters more for serious project is tools quality, not few hot CS ideas loosely implemented on a knee.