HNHacker News
TopNewBestAskShowJobs

johnzabroski

148 karma · joined November 18, 2008

Founder @ Simmaculate - bespoke software start-up, Christian, Hockey fan
submissionscomments
johnzabroski··on Discovery of a new OpenAI agent message board
Serious games question. What if these agent swarms pump and dump AI IPOs such that algorithmic trading signals interpret message board sentiments favorably to upside?
johnzabroski··on Reinventing how .NET builds and ships (again)
Nice article but it seems obvious to me the .NET team should throw away AzureDevOps as the queue wait time is the major bottleneck. Run bare metal build servers. Maybe there are justifications not to do this, but the article skips the elephant in the room.
johnzabroski··on Reinventing how .NET builds and ships (again)
"old man yells at clouds." :)
johnzabroski··on Reinventing how .NET builds and ships (again)
4.8 is basically never going away. its built into Windows thanks to Longhorn developers, many of whom left mid project to work at Google.
johnzabroski··on Reinventing how .NET builds and ships (again)
async await works fine to build Excel formulas via RTD Servers. https://excel-dna.net/docs/release-notes-1-9/#asynchronous-a...

Just because you think something is hard, doesn't mean it is hard.

johnzabroski··on Ask HN: Using AI to solve unsolved math problems to prove AGI
The Taylor Swift billboard 100 debut at 1 test.
johnzabroski··on Official proposal for Type Unions in C#
Hmm. You find it hard to go back to languages without ADTs yet you use Java for your day job. Okay.
johnzabroski··on CrowdStrike Official RCA is now out [pdf]
Windows supports eBPF. CrowdStrike was written before that supports existed, though.
johnzabroski··on 2023 State of Software Engineers [pdf]
I know quite a few developers who have a knack for following market trends and jumping on the rocket ship before it is about to launch.

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).

johnzabroski··on 2023 State of Software Engineers [pdf]
> It's kind of like the "r/cscareerquestions" effect.

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.

johnzabroski··on Post-incident review on the Atlassian April 2022 outage
In my experience, the decision is driven by a VP who wants a bullet point on their year-end review, namely "notional cost savings achieved".
johnzabroski··on We read the paper that forced Timnit Gebru out of Google
What do you do for a living?
johnzabroski··on We read the paper that forced Timnit Gebru out of Google
This is not true. She does discuss how some countries and regions of the world use the Internet less, or not at all, and thus Transformer/BERT are training on the linguistic habits of the most affluent of the world.
johnzabroski··on Clang Format Tanks Performance
Why is Mozilla Firefox written in Rust, then?

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.

johnzabroski··on Desktop Neo – rethinking the desktop interface for productivity
Alan Kay's criticisms are much more damning.
johnzabroski··on Ask HN: Is Demand for Developers Exploding?
I can tell you that developer salaries are growing. I have tried telling my senior management that the average senior developer salary in Boston will go from 120k in 2014 to 140k by 2017. I don't think that 16% can be called "exploding", since it's just 5% y-o-y, but it's definitely growing faster than the rest of the economy, and one of the few jobs where "real income" is growing.

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.

johnzabroski··on The Happiness Code: Cold, hard rationality
Too much drugs from Haight Ashbury...
johnzabroski··on Emergent Chip Vastly Accelerates Deep Neural Networks
Also, that this is another example of more specialized chip sets eating away at general purpose CPU/GPU market share.
johnzabroski··on IBM ported Go to s390x mainframes
My college roommate was the maintainer of Hercules, the z/OS emulator.

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.

johnzabroski··on Introducing Ampersand.js
Just simple advice.

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.

johnzabroski··on Introducing Ampersand.js
Also, why does your ampersand-forms code return string objects for error messages? Seems very limiting, and a pain in the butt to extend. If you have a getErrorMessage() method, why aren't you returning an ErrorMessage object, which clients can then extend with error types (hard/soft, failure/warning/information), etc. Technically, it should just be an Error object. This would then lend itself well to advanced composition, where I can write program interactions in terms of signals (raising Error objects and Success objects, etc.)

Just some hopefully helpful advice.

johnzabroski··on Introducing Ampersand.js
Dart, TypeScript, or any other similar strongly typed language that compiles down to JavaScript while still looking quite a bit like JavaScript.
johnzabroski··on Introducing Ampersand.js
You don't link to it clearly enough. I also had a "just show me the code" reaction, and all I saw was the example of how to create a restful collections module.
johnzabroski··on Introducing Ampersand.js
Of course. It is a general purpose programming language, which allows deploying JavaScript code as CommonJS or AMD modules. It provides fairly rich type definitions.

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.

johnzabroski··on Introducing Ampersand.js
Also...

> 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.

johnzabroski··on Introducing Ampersand.js
>>>> Backbone models, by default, don’t enforce any structure. You don’t have to declare anywhere what properties you’re going to store. As a result, people inevitably start saving miscellaneous properties on models from within a view somewhere, and there’s no good way for a new dev starting in on the project to be able to read the models and see exactly what state is being tracked.

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.

johnzabroski··on Ripple.js – A tiny foundation for building reactive views
What other libraries? J/w.
johnzabroski··on Ripple.js – A tiny foundation for building reactive views
Let me rephrase my objection once more.

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?

johnzabroski··on Ripple.js – A tiny foundation for building reactive views
Thanks for the objection.

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.

johnzabroski··on How not to validate email addresses
You are missing the point. Perhaps it will help if I frame the problem for you differently: scrubbing bad data, and developing policies for minimizing bad data in your system.

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.

Page 1 of 4Next →