1,510 karma · joined May 23, 2012
It's an intrinsic part of our pack-animal heritage to divide the world into an in-group and an out-group and then to fabricate arbitrary moral rules to justify that division.
Having said that, without endless meetings and distractions, working from home can definitely be a lot more productive ... it's just that after a while (a year or so) I start to feel hollowed out without human company.
Surrogate models are a thing though, and it's going to be an interesting time as we gradually figure out what approximations and optimizations are 'acceptable', and what computations really are necessary for "intelligence" (whatever that might be).
So, for example, it would be heart-warming to see efforts like this coupled with measures to help tackle some of the underling/driving issues that affect individuals such as unmet emotional needs, loneliness and emotional insecurity. Harm-causing factors from the broader social context also need to be explicitly identified and tackled, such as those social and cultural systems that weaponize and exploit naturally occurring human behaviours in service of various systematic and abusive control mechanisms.
However, as we descend in our system towards finer and more detailed levels of granularity, two things happen. First of all, fewer people are impacted by very ‘local’ design decisions, so the importance of communication diminishes. Secondly, the frequency of change increases, so the importance of mutability and ease-of-editing increases.
The requirements that we place on our engineering tools depend largely on what we are trying to do with them. Communicating and coordinating work across a large engineering organization places fundamentally different requirements on our engineering tools than does, say, working alone to solve a challenging problem that requires the creation of new concepts and abstractions.
There are many different ways to work with software, and although each share much of the same flavor (dealing with informational complexity), the nature of these challenges is often distinct enough that the different requirements may lead to vastly different solutions.
For my part, I have a lot of faith in the general utility of tools which allow for the easy generation of diagrammatic representations of high-level structure, but which naturally decay to a more conventional textual representation at finer levels of granularity.
As a result, I'm super familiar with that cold, dead, leaden feeling of not caring about anything, not really able to feel any of the excitement and buzz that I know, intellectually, I should be able to feel. It is taking a long old while to return back to a position of health, and while that's happening the only thing I've really had to draw on is grit, determination, and a sort of psychotic single mindedness.
I'm now in a much MUCH better place than I was before, but I've been able to keep pursuing my side project (and hopefully eventual startup), and able to keep making some kind of progress ... but it's really only been sheer bloody-mindedness that's kept me going. (I'm hella stubborn when I want to be).
Happily I'm feeling a lot better now, and progress is definitely picking up again now that I can actually smell the victory that's so tantalisingly close to being in my grasp.
It seems to me right off the bat that the nature of the visualisation required is very much an application dependent thing, making it hard to design a general-purpose solution for any but the most trivial of use cases. Secondly, moving to a new programming language (or even a new development environment) is not something that most of us have the freedom to do in our daily work, and overcoming that inertia is a real challenge.
The vision is, however, compelling enough for us to persist. Besides, giving up is never something that I like to countenance. Perhaps there's an easier and quicker way?
Dynamic languages like Python (and anything else with an 'eval') certainly offer the ability to reload program logic on the fly, and it's not terribly difficult to monitor the file-system and trigger re-loading functionality when it changes. Couple this with a data flow framework that guarantees determinism (e.g. a Kahn Process Network), and you've got the beginnings of something that can run and re-run chunks of program logic and compare the outputs. Couple this with some nice building blocks for program-state introspection and visualisation ... and I think you get a significant distance of the way towards the vision of interactive, dynamic, graphically rich (and distributed!) programming.
I.e. rather than looking for a panacea or a magic bullet, we can just try to use the tools that we have today to get as close as we can to the vision that so many of us share.
How are investors reacting to this?
Human misery is a systems problem.
Perhaps the most productive way of tackling it will be to bolster and expand the mechanisms which enable people to avoid poverty and homelessness. E.g. helping a recently-redundant person quickly find another job, or giving someone at risk of becoming homeless another three or four months of breathing room so they have a chance to turn things around.
It's not just about financial support, either. Social, emotional and psychological support is essential, as it's so incredibly hard to keep a clear head when you are in distress.
Fixing it isn't going to be easy, though. Look at the amount of effort that the scientific community tries to put into improving the quality of communication:- peer review, standards for content ... and there's still nagging issues with reproducing results and even outright fraud in some cases.
Whatever solution we come up with will likely increase friction in the user experience, but there's lots of room for innovation here.