Readit News logoReadit News
smilliken commented on Left to Right Programming   graic.net/p/left-to-right... · Posted by u/graic
danielPort9 · 8 days ago
Don’t know why python gets so much love. It’s a painful language as soon as more than one person is involved. What the author describes is just the tip of the iceberg
smilliken · 7 days ago
It's the exceptional codebase that's nice to work with when it gets large and has many contributors. Most won't succeed no matter the language. Language is a factor, but I believe a more important factor is caring a lot.

I'm working on a python codebase for 15 years in a row that's nearing 1 million lines of code. Each year with it is better than the last, to the extent that it's painful to write code in a fresh project without all the libraries and dev tools.

Your experience with Python is valid and I've heard it echoed enough times, and I'd believe it in any language, but my experience encourages me to recommend it. The advice I'd give is to care a lot, review code, and keep investing in improvements and dev tools. Git pre commit hooks (just on changed modules) with ruff, pylint, pyright, isort, unit test execution help a lot for keeping quality up and saving time in code review.

smilliken commented on Phrase origin: Why do we "call" functions?   quuxplusone.github.io/blo... · Posted by u/todsacerdoti
devnullbrain · 2 months ago
You and Zambyte are both doing the same thing the top level comment is complaining about.

e.g. in C:

https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf

    (6.8.5.1) selection-statement:
      if ( expression ) secondary-block
      if ( expression ) secondary-block else secondary-block
in C++:

https://eel.is/c++draft/gram.stmt

    selection-statement:
      if constexpropt ( init-statementopt condition ) statement
      if constexpropt ( init-statementopt condition ) statement else statement
      if !opt consteval compound-statement
      if !opt consteval compound-statement else statement
where

    condition:
      expression
      attribute-specifier-seqopt decl-specifier-seq declarator brace-or-equal-initializer
      structured-binding-declaration initializer 
More examples:

https://docs.python.org/3/reference/grammar.html

https://doc.rust-lang.org/reference/expressions/if-expr.html...

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...

expression != argument

smilliken · 2 months ago
They aren't talking about C and its descendants in particular, but more generally. For example in Haskell and Scheme there is only an if function and no if statement. And you're welcome to create an if function in any language you like and use it instead of the native syntax. I like to use an if function in PostgreSQL because it's less cumbersome than a case expression.

So in the abstract, if is a ternary function. I think the original comment was reflecting on how "if (true) ... " looks like a function call of one argument but that's obviously wrong.

smilliken commented on Tell HN: Help restore the tax deduction for software dev in the US (Section 174)    · Posted by u/dang
arrowsmith · 3 months ago
Not just the em dash, the whole post stinks of ChatGPT, and there are two other obvious tells in the sentence I quoted.

If you know you know.

smilliken · 2 months ago
Fair enough. I'm sensitive about the em dash being used as a tell, which I've seen mentioned once or twice, because I don't want people to dumb down punctuation to avoid being confused for an LLM. I'd guess it's a temporary issue until the LLMs get so good at blending in that we can't tell anymore.
smilliken commented on Tell HN: Help restore the tax deduction for software dev in the US (Section 174)    · Posted by u/dang
arrowsmith · 3 months ago
[flagged]
smilliken · 3 months ago
The em dash was in popular use long before chatgpt. It's a useful grammatical symbol and a short dash is not a good substitute. Consider whether you'd use it if it was a dedicated key on your keyboard, if so then it's worth the small inconvenience to learn how to type it.
smilliken commented on Why We're Moving on from Nix   blog.railway.com/p/introd... · Posted by u/mooreds
nialv7 · 3 months ago
nix solves the shared library incompatibility problem by being extremely conservative. every time anything changes, consequential or not - a comment got modified, documentation changes, a testcase got added, etc. - it will rebuild all dependents. and not just that, but all dependents of dependents, and dependents of dependents of dependents, on and on. this often results in massive massive rebuilds.

sure you are not going to get shared library conflicts, but i think this solution is extremely wasteful, and can make development painful too - look at nixpkgs' staging process.

smilliken · 3 months ago
The reason someone changes a dependency at all is because they expect a difference in behavior. No one would feel the motivation to go update a dependency if they aren't getting something out of it, that's a waste of effort and an unnecessary risk.

Each person doesn't have to perform the build on their own. A build server will evaluate it and others will pull it from the cache.

The greater waste that nix eliminates is the waste of human time spent troubleshooting something that broke in production because of what should have been an innocent change, and the lost business value from the decreased production. When you trust your dependencies are what you asked for, it frees the mind of doubt and lets you focus on troubleshooting more efficiently towards a problem.

Aside, I spent over a decade on Debian derived distros. I never once had one of these distros complete an upgrade successfully between major versions, despite about 10 attempts spread over those years, though thankfully always on the first sacrificial server attempted. They always failed with interesting issues, sometimes before they really got started, sometimes borking the system and needing a fresh install. With NixOS, the upgrades are so reliable they can be done casually during the workday in production without bothering to check that they were successful. I think that wouldn't be possible if we wanted the false efficiency of substituting similar but different packages to save the build server from building the exact specification. Anything short of this doesn't get us away from the "works on my machine" problem.

smilliken commented on EasyTier – P2P mesh VPN written in Rust using Tokio   easytier.cn/en/... · Posted by u/wucke13
akie · 3 months ago
Aren't you making yourself vulnerable to unknowingly sending (potentially loads of) illicit traffic from your ip address into the world?

I'm not sure if I'd be up for that, to be honest...

smilliken · 3 months ago
Like other products in this category, this is for private networks, internal to your company or self. I don't think it's an intended use case to connect to computers not in your control.

It's useful when you have computers that talk to each other over the internet, likely without public interfaces, and using protocols that may or may not be secure.

smilliken commented on Ask HN: Who is hiring? (June 2025)    · Posted by u/whoishiring
smilliken · 3 months ago
MixRank (YC S11) | Software Engineers | 100% REMOTE (Global) | Full-Time

MixRank processes petabytes of data every month from web crawling. We have hundreds of customers using our data products including Google, Amazon, Facebook, Intel, and Adobe, across industries including Finance, Recruiting, Sales, Marketing, and Security.

We’re a fully-remote company with a global footprint in over 20 countries. We're growing, profitable, employee-owned, no dependence on outside funding. Applicants from all geographies and backgrounds are welcome.

We are looking for passionate individuals for whom programming is not just a job but it’s something they love to do. We're obsessed with computers, programming, big data, databases, compilers, hardware, math, data science, and the internet. Does this sound like you? Please apply to join our team.

Our code base is very friendly to new contributors. You'll have a fully-functional development environment within hours (fully automated) and be pushing commits on your first day. Deployments to production happen multiple times per day and finish in less than 2 minutes. Effectively all of our codebase is written in Python, Rust, SQL, Javascript/TypeScript, and Nix. The core technologies you'll need familiarity with to be productive are Python, PostgreSQL, Linux, and Git.

We operate at a larger scale than typical startups. We operate two datacenters with high performance servers we've built that are capable of dealing with the volumes of data we process. We've implemented our own distributed file system. We do full-scale web crawls. We download and perform static analysis on the entire universe of Android APKs and iOS IPAs that are published. Unlike a typical startup where you'll spend half of your time in meetings, and the other half fixing bugs from Jira tickets— at MixRank you'll get to challenge yourself with difficult technical problems that will help you to grow as an individual.

We're hiring continuously for the positions below— they aren't singular positions that will close once filled. Our philosophy on hiring is that the candidate is more important than the position. For each new member of the team, we design a custom role and responsibilities that are specialized to their interests. Other companies will come up with a long list of specific requirements for a position with the expectation that you'll exactly replace someone from the team, or that you'll be the perfect tetris piece that satisfies the job requirements decided by a committee. MixRank is more pragmatic: we'll first get excited about having a unique individual on the team, then we'll figure out the best way to accommodate their specific talents.

--

Junior Software Engineer - Remote (Global), Full-Time

We're looking for remote junior engineers that have 0-3 years of professional experience in software, and 5+ years of curiosity exploring computers, programming, and technical hobby projects. This is an open-ended entry role with mentorship and diverse opportunities to work on all areas of our product: databases, distributed systems, infrastructure and tooling, data analysis, machine learning, frontend/backend web development, APIs, data mining, data modeling, and more. To stand out, please highlight what makes you unique: passion for computing, curiosity and side projects, work ethic, niche research, etc.

Ideally you've already graduated, but if you still have one or more years left of school, please feel free to apply anyway, and if you're the right fit for the team we'll figure out a way to accommodate your schedule.

https://www.ycombinator.com/companies/mixrank/jobs/Fnwsojk-j...

--

Software Engineer - Remote (Global), Full-Time

We're hiring generalist software engineers to work on web applications, data mining, machine learning/data science, data transformation/ETL, data modeling, database scaling, infrastructure, devops, and more. We'll cater the role to whatever subset of these areas match your interests.

Beneficial experience includes PostgreSQL, Python, Rust, Linux, TypeScript, Nix, frontend/backend web development, and data mining.

https://www.ycombinator.com/companies/mixrank/jobs/RXQspen-s...

--

I'm Scott, Founder/CEO/CTO. We're based in US but applicants from Central America, South America, Europe, Asia, and Africa are encouraged!

smilliken commented on Coding without a laptop: Two weeks with AR glasses and Linux on Android   holdtherobot.com/blog/202... · Posted by u/mikenew
gcanyon · 3 months ago
The Xreal Air 2 Pro costs $299 new; why would you buy it used for $260?
smilliken · 3 months ago
At risk of the obvious, because it saves $39 and reduces landfill waste.
smilliken commented on “Streaming vs. Batch” Is a Wrong Dichotomy, and I Think It's Confusing   morling.dev/blog/streamin... · Posted by u/ingve
gugagore · 3 months ago
Interrupts are a hardware feature on CPUs. You could have software that is effectively checking for events on each tick (clock cycle), and emulates interrupts. But that's what polling is.
smilliken · 3 months ago
The operating system provides abstractions for blocking and asynchronous IO, which are the higher abstraction version of the same concept.
smilliken commented on The first year of free-threaded Python   labs.quansight.org/blog/f... · Posted by u/rbanffy
igouy · 3 months ago
We say the context has breaking changes.

We say the context is not backwards compatible.

smilliken · 3 months ago
Can you see how this comes off as a pedantic difference? If I ran a program 10 years ago and it worked, then run it today and it doesn't work, we say the program is broken and needs to be updated. We don't say the world around it is broken and needs to revert back to its original state.

u/smilliken

KarmaCake day2340February 10, 2010
About
MixRank (YC S11) Founder/CEO/CTO, mathematician, programmer, database & distributed systems enthusiast.

Contact: scott at company name dot com or deltaex dot com.

View Original