251 karma · joined December 15, 2015
America definitely does not need more H1B workers.
Now.
That's why we should distribute tech. Yeah, there are benefits to clustering, but at a certain scale the negative affects start to outweight the benefits and simply induce misery. See also: what's happening in SF, Seattle, and other areas where tech has far too much influence on how everyone in a city/region else has to live.
As a programmer, I'm certainly not against tech, but I think industries should have some sort of collective ethics about taking over certain places.
I used the word fortunate because my time there has only convinced me that it's somewhere I would never want to live, being as crowded and expensive as it is. It also reminds of Washington DC where everyone wants to know what you do for a living right away. It seems like everybody's got a plan; it's kind of like Nashville with a tan.
I hear all these arguments like 'talent center' and 'network effects' and 'efficiency', but then look at the results of cramming all that talent into such a tiny area: stress and misery. We can go on and on about building more houses or condos. In fact, they could build thousands more houses and condos and make it all perfectly affordable for everyone.
But then what? Who wants to spend 3 hours getting over 17 just to go to Santa Cruz? What about parking once you get there? Do you want to wait for an hour for a chance to get one of the spots at the tiny parking lot above the water? Long lines for ice cream and water. It would be like the Hamptons in summer, which is to say it would be dreadful.
Even if you can afford it, who wants to live that kind of life? Just so that billionaire so-and-so can have another jet or another yacht or another mansion?
It just doesn't make any sense to me at all. I think it would be much more efficient to have multiple tech talent centers all over the country. I think most network guys would also say that such an arrangement would be more fault tolerant. I'm a programmer, so I guess I would say that it would make tech more loosely coupled.
I don't think this is a smart way of choosing an allocator.
They couldn't make it fast on modern hardware?
It's a significant indictment of the technology, and of GitHub's engineering that a product like Atom is slow on th high-end Dell hardware that my employer buys for me.
Atom's problem, which includes the astoundingly enormous amount of CPU and memory that it guzzles, is that the people who built it demonstrably didn't care about performance, didn't know better, or both.
Atom is a textbook example of how not to write software. I guess it's not only 'hackable to the core', but 'inefficient to the core'.
It's just bad software.
I do remember typing reports in Notepad. We had a PC because my parents couldn't afford a Mac.
Yet Atom is still slower and laggier than Notepad running on Windows in 1986.
How did GitHub manage to pull off that feat? Given the fact that faster programs were made 30 years ago on vastly inferior hardware, Atom's performance absolutely deserves to be criticized.
I can start Visual Studio right now and make a simple Windows desktop app in an hour with a text editor whose performance ( startup/ file load / editing ) will blow Atom away.
I'm genuinely curious.
I've found it next to impossible to get it through ( some ) people's thick heads that refactoring is not a sign that something was done wrong the first time around.
>> We learn good design best by refactoring.
Exactly. This is often when the true value of a design pattern becomes crystal clear in an applied ( rather than theoretical ) sense.
>> did cause some missed deadlines early on, and getting all the abstractions correct still means basic functionality often doesn't come together until the last minute.
Yes, yes, yes.
>> I think most managers would be horrified this approach
Yes, been there, done that too!
To this point, you might scaffold out a system to get something running and then incrementally / organically improve the system. I regard this as 'getting the system to the point where it can be dogfooded and/or criticized in a helpful way'.
At this point, despite what you might have running, it may be exceedingly clear that you should have used a different strategy. Maybe you like the overall results, but you need things to be implemented in a different way.
For example, I'm a C++ programmer. It's not always obvious at first that you need a specific set of virtual functions to make something work really nicely.
It's impossible to always know these sorts of things in advance.
With respect to technical debt reflecting organizational problems:
I've always been surprised at how much internal resistance (management and other programmers) I've faced when trying to pay down or eliminate technical debt, regardless of whether it was my code or other people's code. ( For the record, I've written plenty of bad code in my day. )
In the past when I was foolish enough to try and be deferential, I was given excuses like 'yeah, we don't want that kind of churn in version control' and 'we have to maintain compatibility' even when compatibility isn't an issue at all. This, more than anything taught me that it's better to seek forgiveness than permission.
Love the concept of building technical wealth. That's a great way to put it.
IMHO, React is another way of covering up 20 years of bad design decisions that went into web tech. React is the natural reaction to using a tree of text to represent data structures. If things were done right, React wouldn't exist. By 'real modules' I mean things like DLLs that can be hot swapped at app start or at runtime. The more I look into things like Atom, the more I am disturbed by what constitutes 'state of the art' in web tech.