148 karma · joined November 18, 2008
Just because you think something is hard, doesn't mean it is hard.
It's actually not that hard if you think about what filter you would apply. The one hard part is finding recruiters who specialize in placing people at these companies, and, of course, passing the interview (or at least enough success that the interviewer doesn't tell the recruiter you are a poor quality candidate).
I canceled my ACM subscription in my late 20s because I got tired of ACM basically doomposting about careers. Last night I was going through my Gmail folders and found a bunch of old ACM doomposts I never deleted from their CSCAREERS mailing list.
So, it's not just reddit that doomposts- Industry veterans are just as paranoid and can also serve as Chicken Little.
The last time I looked at browser benchmarks was in 2016 when Google released benchmarks to brag about its performance over Firefox and Edge. It appears Webkit has released JetStream2 to benchmark JavaScript, WebAssembly and web workers, among other things. But I can't find data showing Mozilla Firefox is ~20% slower than Chrome/Edge today.
Finally, my observation is that the biotech boom in Boston has created unique housing pressure in Boston, particular South Boston, Cambridge and the North End (East Boston is the only affordable place). So many biotech IPOs in the area have created newfound millionaires over night, and helped support a housing boom in the area. Combine this with DraftKings, Wayfair, Buildium, Amazon acquiring Kiva Systems, Samsung acquiring LoopPay, and other major tech companies coming into the area over the last 5 years, and you suddenly have markets where there is huge competition for labor but really expensive housing. This necessarily entails salary hikes or relocation. Relocation requires the board to negotiate with other states to relocate talent, which is always treacheous for high end white collar jobs.
If you want metrics to validate your assumptions, I recommend using CareerBuilder rather than these newer places like Hired.com. CareerBuilder has great analytics tools which show you where your salary offerings rank competitively.
Also, I can say that I don't think our problem is really salary, so much as the fact that so many developers lack adequate training in _engineering_, which entails solving real problems related to total cost of ownership, stability/uptime, throughput, etc. If you work for a _product company_, it is very hard finding these kinds of engineers, for two reasons: (1) they tend to become specialists or architects, but your replacement reqs are generalist roles like full-stack developers (2) 60% of all developers are contractors, and never acquire sufficient depth to solve real hard engineering problems.
End note: I work for erecruit, enterprise staffing software. I have tons of data about the market.
See: http://www.hercules-390.eu/hercfaq.html
2.01 Can it run z/OS, z/VM, z/VSE?
Yes. Hercules is a software implementation of z/Architecture, and so it is capable of running z/OS, z/VM, and z/VSE. Hercules also implements ESA/390 (including SIE) and so it can run OS/390, VM/ESA, and VSE/ESA, as well as older versions of these operating systems such as MVS/ESA, MVS/XA, MVS/SP, MVS/SE, VM/SP, VSE/SP, and DOS/VSE.
But (and this is a big but), these operating systems are all IBM Licensed Program Products, whose conditions of use generally restrict their usage to specific IBM machine serial numbers. So you cannot just copy these systems from work and run them on your PC, as this would almost certainly be a violation of your company's licensing agreement with IBM.
1. The problem of adding more input types, as well as expressing more functions over existing and additional (unbound) input types, is a classical computer science problem called The Expression Problem.
2. It's really not about 'parents'. It is about workflows. "Can you lift 50 lbs?" may be a dependency for another question.
3. It's simple dependency inversion to use a list of Success and Failure objects to determine the state of a Submit button. This way Submit.Enabled = !list.Any(i => i.Failure). Why should Submit be responsible for knowing the structure of a form, such as fragile parent-child relationships that have no basis in reality.
4. There are really two kinds of dependencies. Layout and workflow. It's too easy to commingle these. Spreadsheets, for example, contain no such visual dependency between cells, only flow.
Just some hopefully helpful advice.
I realize you are trying to say I am comparing apples to oranges, but the site explicitly mentions Human Javascript approach as inspiration, and Human Javascript is all about choosing your tools. I am pointing out that there is an incredibly powerful tool that works extremely well for large-scale software development.
There are probably good use cases for Ampersand.js. The argument in this article is a really mediocre at best use case.
> 4. Strict semver all the things > 5. Tiny module all the things! > The smaller the feature set of the low-level modules, the easier it is to avoid breaking changes. > 6. Expose the simplest API possible.
This is great, but what I would rather see is strict code coverage guidelines on contributions. The whole point behind having micro libraries is that writing unit tests should be easier, because there are simpler dependencies and each simple dependency is easier to mock.
Similarly,
> 7. Optimize for minimal DOM manipulation and performance.
The best way to optimize for performance is to include various performance testing, and never let performance get slower when considering patch contributions.
In short, less marketing fluff, more community process.
What a terrible lead-in example for justifying Ampersand.js. If you want structure, why not use a strongly typed language that transpiles to JavaScript? I don't understand how all these micro libraries you created get you any assurance of what you were after.
Can you please explain further why I would use Ampersand.js? Coming from TypeScript, I just see no substantive argument. If I were a Backbone developer who had monolithic dependencies, I could see your argument. I also get AMD modules or CommonJS modules for free with TypeScript.
In graphics programming, it is customary to have a Scene Graph which is a Model that represents the scene you need to Render.
In Desktop/Web programming for business apps, this design pattern/abstraction step seems completely absent, and developers seem to continuously mush together view and model.
What "composition" can't be achieved simply by having a Knockout Virtual Element, or Template Selector driven by a ViewModel property?
I have never heard of Reactive, React, or Ripple.
I don't understand how this is better than Knockout, which has been around since 2006?
To summarize your objection, this library hardwires events to the UI. I don't understand how that allows for composition, and even then, the composition is happening at the view level, rather than the model level, which seems like a mistake???
Sorry if I am naive or coming off as rude. I just don't get it.
Not all validation needs to happen at the time of data entry.
Your "hard" regex may reject international email addresses. In fact, if your regex's input isn't converted to Punycode first, you are a fool for even attempting to use regex, because now your regex will likely fail on all IDNA inputs.
And what is your test suite going to be?
And what did you "validate" exactly? That you matched your regex? What if the e-mail isn't active, or the mailbox is full? Outlook 2013 actually has this really cool feature called MailTips that provides more advanced mailing list and e-mail address validation and warnings: http://blogs.technet.com/b/exchange/archive/2009/04/28/34073...
Suppose when you first signed up the user, they validated their email address, but now the account seems to be inactive. How do you handle that scenario? Continuous validation.
And how generally useful is your regex? What are you going to do if the email came from OCR software output, or screen scraping output? Your ERP may have the original document it was scanned from. Are you going to not store the bad e-mail address simply because you wrote some "hard" regex that rejected it? Not a straight forward question to answer, as it depends on your data model for storing addresses. You might have a column IsConfirmed.
Here is another example of "continuous validation". Validating mailing addresses. Most major e-commerce sites allow very liberal input, but scrub the data in real time or near real time, because the postal service gives discounts to companies that print "correct" address labels. "Correct" here could mean "One Post Office Square, Boston, MA, 02109" instead of "1 Post Office Sq, Boston, MA, 02109". This process is called Address Standardization, and in areas of the world with rapidly growing economies, often times Address Standardization vendors are behind, because some "streets" don't have addresses yet and aren't known to exist in any GPS system. This is common in many parts of China.
Here is another example of "continuous validation". How Google does spell checking, as compared to the "fixed validation" in Microsoft Word's spell checker.