HackerTrans
TopNewTrendsCommentsPastAskShowJobs

shoo

5,753 karmajoined 15 years ago

Submissions

Why We Need to Know LR and Recursive Descent Parsing Techniques

tratt.net
3 points·by shoo·7 months ago·0 comments

Rooms and mazes: A procedural dungeon generator (2014)

journal.stuffwithstuff.com
2 points·by shoo·9 months ago·0 comments

A whirlwind introduction to dataflow graphs (2018)

fgiesen.wordpress.com
37 points·by shoo·9 months ago·0 comments

Global Crossing Is Reborn

pracap.com
1 points·by shoo·9 months ago·0 comments

Beating the L1 cache with value speculation (2021)

mazzo.li
47 points·by shoo·9 months ago·14 comments

comments

shoo
·7 hours ago·discuss
> there are no plans at all to improve the last mile infrastructure

The economics of laying fiber to the premises are heavily driven by density of potential customers * probability that a potential customer will sign up if you run fiber down their street. You can get reasonable intuition by focusing on the density alone & ignoring the competition / pricing side of things.

I'm not familiar with current US construction costs to install fiber but have some intuition from Australia.

With Australia's national broadband network project from a decade or so ago, it'd cost in the ballpark of $100 AUD per meter to run fiber down the street in an underground trench - most of the capex is digging the holes in the ground etc, the cost of the cable itself is essentially free. The construction budget for a suburb would be something like $2000 / premises. To give a ballpark estimate, suppose 25% of your budget is the premises-specific work to connect the house to the cable running down the street, if they choose to sign up for your broadband plan. That leaves at most $1500 / premises for the rest of your capex budget, so the economics only work if you've got a neighbourhood with a density of least one house every 15 meters. Those numbers aren't exact but they'd be in the ballpark.

There's a bit of variability in the cost per meter to install, if you can reuse existing poles & run the cable aerially that might be only 30%-40% of the cost of digging holes, so you might be able to support a lower density suburb that way & still stick to your construction budget.

In Australia for the lower density rural / semi-rural areas they'd use fixed wireless, & finally satellite for the remote extremely low density areas where it didn't even make sense to build a wireless tower.
shoo
·2 days ago·discuss
> things like employer matches in retirement accounts

seems completely reasonable to model this as income.

> health insurance contributions

If your employer provides a health insurance benefit that would otherwise cost you $X / yr, you could model that as +$X / yr income and +$X / yr expenses.

Simple FIRE calculators like that Networthify one assume that your expenses in retirement are the same as when you are working, but that's probably not true for many people, for numerous reasons: health insurance once you're not longer working, paying off a mortgage, children launching into the workforce, increasing health expenses as you age, lifestyle changes when you're not working, potentially moving to a different area with a different cost of living.

But as a 0-th order approximation, assuming expenses in retirement are the same as when you are working is a place to start when assembling a rough plan.
shoo
·2 days ago·discuss
When thinking about years of work until financial independence, its worth understanding the impact that savings rate has - the fraction of post-tax income remaining to invest in growth assets after expenses.

If you're not familiar with savings rate, here's a simple calculator to help build intuition. The assumptions of asset returns & portfolio required to sustain retirement are a bit optimistic, but it's directionally correct: https://networthify.com/calculator/earlyretirement

You need roughly a 15% savings rate to support traditional retirement age. If you're fortunate enough to create & sustain a situation where your income net tax is a lot higher than your annual expenses, the timeline accelerates significantly.
shoo
·3 days ago·discuss
If the client has an extensive suite of automated tests assessing if the software is meeting its requirements, it should be possible for them to flush out most regressions within minutes or hours, not weeks.

If the client hasn't invested in setting that up, the resulting situation is the clients' responsibility.
shoo
·4 days ago·discuss
The paper could be improved by including a strong classical non-Ising-machine solution approach as one of the methods benchmarked against.

E.g. take the same 8-core Ryzen machine they use to implement their simulated Ising Machine HbSB method & use it to run a standard classical solver as would be done industrially to tackle these kinds of problems outside of academia - perhaps an industrial grade commercial MIP solver (Gurobi) for those problem classes that are known to have reasonable MIP formulations, or a good constraint solver for Sudoku, etc.

Depending on how hard the specific test problem instances are, perhaps a commercial MIP solver would be able to solve some of these problems optimally & instantly using its black box of presolve witchcraft tricks.
shoo
·19 days ago·discuss
In some cases it could be driven by the shape of the work & where the funding is allocated:

If there isn't enough guaranteed recurring work, it might not make sense to have a full time position, particularly in a country where its difficult to lay people off & if employees have additional overhead (pensions, employer funded heathcare or insurance, etc) vs contractors.

But, if there's funding allocated for some key project that's framed as a 6-12 month project, there might be a good business case to hire a contractor. Maybe the funding comes out of the project bucket, not the core funding for legacy product X bucket.

If the contractor is someone who was recently let go & has a good reputation within the company as someone who gets stuff done and is easy to work with, it's probably a no-brainer to re-engage them as a contractor vs rolling the dice on an unknown quantity.

Whoever is managing the budget of their old team gets a win as they were able to reduce headcount to fit in their budget

Whoever is managing the new project gets a win as they find a great contractor for their key project

The former employee returning as a contractor probably gets a win, as they get paid at a better daily rate while the project is rolling, provided they're able to line up more projects or land a new permie job once the project is completed.

If there's an outsourcer involved, they win by taking a cut. The former employee might also win by having the outsourcer involved if the company has some baroque process for engaging contractors with many compliance hoops to jump through -- in extreme cases (think banks, or public companies that need to demonstrate they don't do business with suppliers engaged in slavery, or so on) it could save the worker months of paperwork and tens of thousands in legal expenses to set up their own one-person agency and go through the compliance process to be able to work for their former employer, so they might not be able to win the contract work without piggybacking on an outsourcer who already has the contracts & compliance stuff sorted out.
shoo
·19 days ago·discuss
when i worked for an australian bank, one co-worker in a nearby team had been working on the the banks systems as a sysadmin for over a decade.

the bank would go through cycles of "we need to reduce our headcount and outsource everything" and then 4 years later "we need to reduce spend on contractors and retain more knowledge and expertise in house". he'd survived multiple waves of it, switching back and forth between being an employee or a contractor through some external agency, as management trends changed, while essentially doing the same job.
shoo
·2 months ago·discuss
Like you say, there's a fair bit of nuance. Data representations that prevent invalid states being represented are extremely helpful in many domains. I'd strongly recommend making invalid states impossible to represent for schemas at external interface boundaries - although that could also create problems if the definition of what's valid changes over time!

A niche example of this kind of thing is when solving commercial/industrial combinatorial optimisation problems. Maybe the goal is to maximise profit or minimise capex subject to a large number of constraints. Sometimes it is intractable to solve the true problem, but there's some approximation of the problem by relaxing one or more constraints that's much easier to solve. In some of these business contexts its completely OK if the optimiser ran overnight before spitting out a solution, provided it found a 5% better one. In that setting it'd be natural to decouple the internal representation(s) of a black box optimiser from the high-level way you represent the true problem & its solutions elsewhere in the system.

Some of these systems might end up feeling a little like a compiler toolchain - high level descriptions of problems & solutions that get transformed into / recovered from lower level implementation-specific representations.

If your context has high performance needs, e.g. needing to solve the problem 30 times per second in a real-time game or control system, or react as quickly as possible in a low-latency trading system, maybe it could be less of a good tradeoff to introduce avoidable copying of data between a strict correct representation & a relaxed representation. Could write the clean thing first & then profile and see if the overhead of copying is relevant. If the representation of your solution is small, there probably isn't that much overhead in copying it, unless your performance needs are extreme or your hardware is severely limited.
shoo
·2 months ago·discuss
I conducted a few hundred software engineering interviews while working for a non-tech corp. Aside from technical problem solving & programming interviews we'd also ask a few behavioural questions -- including asking about times where the candidate had made a mistake at work, or a time at work where they were very frustrated.

What we were looking for

- people unwilling to admit they'd ever made a mistake -- red flag

- people who could reflect on the situation and say what they'd do differently in the future

- ideally, people who could use their mistake / failure / bad situation as an example of how they then took initiative to improve things by doing blah blah blah

People who were able to give an ideal response had clearly practised for this kind of question & knew how to play this part of the interview game.

Behaviours valued by one type of potential employer may not be valued by another. Small businesses & startups might value folks who take initiative and have a bias for action. In contrast, regulated megacorps might value folks who are great at consulting stakeholders and getting buy in before making changes, and steer clear of people they believe will go off and do stuff unilaterally.

One rule of thumb for handling these kinds of behavioural questions is "STAR" -- situation, task, action, result. Use the prompt for the question as a way to pick an example, then figure out how to frame an answer that shows you doing something to improve the situation. There's a fair chance that your interviewers are trying to mash your response into a STAR format in their own notes, even if they don't hint for you to respond in this way.
shoo
·2 months ago·discuss
Doubt it. No linux-native application would be designed to use a Windows API.
shoo
·2 months ago·discuss
> I am a fan of the HARD FAIL.

It reads as if the change was made to some library code that was depended upon by someone else's program that would "yay, done", which was in turn depended on by some workflow.

It's probably a non-starter to change library code so it hard fails if it detects its being used incorrectly, in situations where it previously ran and did something. That's a severe breaking change in behaviour.

Easing it in by printing a warning message sounds like a reasonable step toward hard failing. But then we get the situation yosefk relates.
shoo
·3 months ago·discuss
creating isolated staging & prod environments -- good idea

allowing an AI agent to get hold of creds that let it execute destructive changes against production -- not a great idea

allowing prod database changes from the machine where the AI agent is running at all -- not a great idea

choosing a backup approach that fails completely if there's an accidental volume wipe API call -- not a great idea

choosing to outsource key dependencies to a vendor, where you want a recovery SLA, without negotiating & paying for a recovery SLA -- you get what you get, and you dont get upset
shoo
·3 months ago·discuss
Are the patient emails real patients or could they be test accounts?
shoo
·3 months ago·discuss
Hindenburg Research is great. They also did the Nikola expose (that bunch of shysters who claimed to have electric truck technology where their truck couldn't even move under its own power so they filmed it rolling down a gentle slope).

For anyone wanting to get into the weeds about detecting accounting fraud, the book "Financial Shenanigans" has lots of historical examples of ways company executives have cooked the books to make their public company financial statements appear more appealing to investors than they actually are.
shoo
·3 months ago·discuss
Josh Haberman has a good 2013 blog post discussing LL & LR parsers, theory vs practice, context-free grammars & Parsing Expression Grammars (PEGs): https://blog.reverberate.org/2013/09/ll-and-lr-in-context-wh...
shoo
·4 months ago·discuss
it could be better than a nudge -- if you could get a mandatory `go fix` call into internal teams' CI pipelines that either fixes in place (perhaps risky) or fails the build if code isn't already identical to fixed code.
shoo
·4 months ago·discuss
Great example, illustrating go1.26.1 go fix source inline transformation breaking program semantics. Raise it as a bug against go fix?
shoo
·4 months ago·discuss
If I follow, this isn't a compile time inline directive, it's a `go fix` time source transformation of client code calling the annotated function.

Per the post, it sounds like this is most effective in closed-ecosystem internal monorepo-like contexts where an organisation has control over every instance of client code & can `go fix` all of the call sites to completely eradicate all usage of a deprecated APIs:

> For many years now, our Google colleagues on the teams supporting Java, Kotlin, and C++ have been using source-level inliner tools like this. To date, these tools have eliminated millions of calls to deprecated functions in Google’s code base. Users simply add the directives, and wait. During the night, robots quietly prepare, test, and submit batches of code changes across a monorepo of billions of lines of code. If all goes well, by the morning the old code is no longer in use and can be safely deleted. Go’s inliner is a relative newcomer, but it has already been used to prepare more than 18,000 changelists to Google’s monorepo.

It could still have some incremental benefit for public APIs where client code is not under centralised control, but would not allow deprecated APIs to be removed without breakage.
shoo
·4 months ago·discuss
you can get pretty far without programming at all, using spreadsheet templates
shoo
·4 months ago·discuss
it's a classic. 2001 Spiel des Jahres Winner.

see https://boardgamegeek.com/boardgame/822/carcassonne