HN user

adam-p

187 karma

https://adam-p.ca

Posts22
Comments73
View on HN
www.cbc.ca 6mo ago

Concert cancelled after AI wrongly accuses artist of being sex offender

adam-p
22pts12
adam-p.ca 1y ago

The best – but not good – way to limit string length

adam-p
49pts44
blog.postmaster.yahooinc.com 2y ago

More Secure, Less Spam: Enforcing Email Standards for a Better Experience

adam-p
3pts1
adam-p.ca 2y ago

Bug story: Sorting by timestamp

adam-p
68pts46
pichenettes.github.io 3y ago

From zero to boutique module manufacturer

adam-p
1pts0
www.vult-dsp.com 3y ago

Freak Out Now

adam-p
1pts0
www.red-gate.com 3y ago

The Sins of Select

adam-p
2pts0
theconversation.com 3y ago

Nightmares are a good predictor of future dementia – new study

adam-p
6pts1
guardianproject.info 4y ago

Spearphishing for Developers

adam-p
1pts0
psix.ca 4y ago

Russian circumvention usage up 6x since war started (using Psiphon)

adam-p
5pts0
adam-p.ca 4y ago

The perils of the “real” client IP

adam-p
5pts1
www.ghacks.net 4y ago

Google adds Presearch as default browser option on Android devices in Europe

adam-p
3pts0
crypti.cc 5y ago

Dev Story: Unicode URL length limit blues

adam-p
2pts0
github.com 7y ago

Making it easy to write shell-like scripts in Go

adam-p
1pts0
crypti.cc 7y ago

The short happy life of the Breached extension

adam-p
1pts0
medium.com 9y ago

The Touch Bar, Cognitive Load and Usability

adam-p
2pts0
www.fastcodesign.com 11y ago

“Delightful” Interaction Design Needs to Die

adam-p
1pts0
www.crypti.cc 11y ago

Why and How to Use a Contributor License Agreement

adam-p
2pts0
github.com 11y ago

Show HN: Simple spreadsheet-backed membership management

adam-p
2pts0
lifehacker.com 13y ago

Markdown Here Adds Markdown Support to Email and Web Forms

adam-p
1pts0
www.crypti.cc 13y ago

No One Knows to Click on a Page Action

adam-p
2pts0
github.com 14y ago

Show HN: Write email in Markdown

adam-p
5pts0

Psiphon | iOS / Flutter Developer | Toronto (Hybrid) | Full-time

Psiphon is a VPN app used by millions of people to access the open internet in regions where it's restricted. Small team, software that matters.

We're building the next-gen client app in Flutter (iOS, Android, macOS, Windows) and need someone who can work across both iOS native and Flutter. Split is roughly 65% Flutter, 35% iOS native (Swift, StoreKit, entitlements, network extensions). You'll have mentorship from a senior iOS specialist for the deeper networking work.

Day to day: Feature development in Flutter, iOS platform integration (subscriptions, permissions, App Store), and occasionally going deep into network extensions and packet tunnel providers. Small team (~3-4 core devs), high ownership, low ceremony.

Looking for: Strong Swift experience beyond just UIKit/SwiftUI app dev, comfort with the iOS ecosystem (App Store process, provisioning, StoreKit), and willingness to context-switch between Swift and Dart in the same day. Flutter experience is a strong plus but not required if you pick up frameworks quickly.

Contact: hr@psiphon.ca

Psiphon | iOS / Flutter Developer | Toronto (Hybrid) | Full-time

Psiphon is a VPN app used by millions of people to access the open internet in regions where it's restricted. Small team, software that matters.

We're building the next-gen client app in Flutter (iOS, Android, macOS, Windows) and need someone who can work across both iOS native and Flutter. Split is roughly 65% Flutter, 35% iOS native (Swift, StoreKit, entitlements, network extensions). You'll have mentorship from a senior iOS specialist for the deeper networking work.

Day to day: Feature development in Flutter, iOS platform integration (subscriptions, permissions, App Store), and occasionally going deep into network extensions and packet tunnel providers. Small team (~3-4 core devs), high ownership, low ceremony.

Looking for: Strong Swift experience beyond just UIKit/SwiftUI app dev, comfort with the iOS ecosystem (App Store process, provisioning, StoreKit), and willingness to context-switch between Swift and Dart in the same day. Flutter experience is a strong plus but not required if you pick up frameworks quickly.

Contact: jobs@psiphon.ca

The article is somewhat wrong when it says Unicode may "change character normalization rules"; new combining characters may be added (which affects the class sort above) but new precombined ones cannot.

That's fair. I updated the wording in the post.

Thanks for the display info. It's cool and horrible and out of scope for my post.

Valid question, and I think you're right in the abstract and most of the time. But I also think you end up with a mismatch.

What's the concrete spec for the limit if you've only got 10x storage per grapheme cluster?

Probably you end providing the limit in bytes. That's fine, but it's no longer the "hybrid counting" thing anymore.

A Tour of WebAuthn 2 years ago

Except that TOTP codes are MitM phishable. U2F with its URL-checking (via browser cooperation) is needed.

There are a couple of shortcomings that I think I see:

1. If the clock moves backwards (and an "older" record gets created), it doesn't help.

2. If a duplicate timestamp is created with an id that sorts earlier than one of the other dups (and a user has already synced to the first dup).

In both of those cases, the user won't receive the new record. (Yes, neither is probable, but neither is impossible.)

Psiphon | Software Engineer | https://psiphon.ca | Toronto, Canada | Full-time | REMOTE for now, REMOTE/ONSITE hybrid later

Psiphon Inc. is looking for experienced software developers to join our Toronto team.

= What we do =

We develop and operate Psiphon, an Internet anti-censorship network that helps millions of people in freedom-restricted countries access uncensored Internet every day. We work at the leading edge of circumvention technology, where the latest network protocol and endpoint obfuscation research is rapidly deployed into production around the world.

Our tasks include censorship technology research, server and client software development, and operation of a dynamic, global network of thousands of proxy servers.

We’re a small team looking for skilled and enthusiastic people to join us. We offer great compensation and benefits and flexible work arrangements.

= Tech stack =

Much of our system is open source, check it out at https://github.com/Psiphon-Inc/psiphon/ and https://github.com/Psiphon-Labs/psiphon-tunnel-core

We use Java (Android app), Obj-C and Swift (iOS app), C++ (Windows app), Go (cross-platform core client and server), Python/JavaScript/C/shell script (server-side stack), ElasticSearch/Logstash/Kibana (stats), and more.

= Contact =

info+hn@psiphon.ca

Psiphon | Software Engineer | https://psiphon.ca | Toronto, Canada | Full-time | REMOTE for now, REMOTE/ONSITE hybrid later

Psiphon Inc. is looking for experienced software developers to join our Toronto team.

= What we do =

We develop and operate Psiphon, an Internet anti-censorship network that helps millions of people in freedom-restricted countries access uncensored Internet every day. We work at the leading edge of circumvention technology, where the latest network protocol and endpoint obfuscation research is rapidly deployed into production around the world.

Our tasks include censorship technology research, server and client software development, and operation of a dynamic, global network of thousands of proxy servers.

We’re a small team looking for skilled and enthusiastic people to join us. We offer great compensation and benefits and flexible work arrangements.

= Tech stack =

Much of our system is open source, check it out at https://github.com/Psiphon-Inc/psiphon/ and https://github.com/Psiphon-Labs/psiphon-tunnel-core

We use Java (Android app), Obj-C and Swift (iOS app), C++ (Windows app), Go (cross-platform core client and server), Python/JavaScript/C/shell script (server-side stack), ElasticSearch/Logstash/Kibana (stats), and more.

= Contact =

info+hn@psiphon.ca

Psiphon | Software Engineer | https://psiphon.ca | Toronto, Canada | Full-time | REMOTE for now, REMOTE/ONSITE hybrid later

Psiphon Inc. is looking for experienced software developers to join our Toronto team.

= What we do =

We develop and operate Psiphon, an Internet anti-censorship network that helps millions of people in freedom-restricted countries access uncensored Internet every day. We work at the leading edge of circumvention technology, where the latest network protocol and endpoint obfuscation research is rapidly deployed into production around the world.

Our tasks include censorship technology research, server and client software development, and operation of a dynamic, global network of thousands of proxy servers.

We’re a small team looking for skilled and enthusiastic people to join us. We offer great compensation and benefits and flexible work arrangements.

= Tech stack =

Much of our system is open source, check it out at https://github.com/Psiphon-Inc/psiphon/ and https://github.com/Psiphon-Labs/psiphon-tunnel-core

We use Java (Android app), Obj-C and Swift (iOS app), C++ (Windows app), Go (cross-platform core client and server), Python/JavaScript/C/shell script (server-side stack), ElasticSearch/Logstash/Kibana (stats), and more.

= Contact =

info+hn@psiphon.ca

Psiphon | Software Engineer | https://psiphon.ca | Toronto, Canada | Full-time | REMOTE for now, REMOTE/ONSITE hybrid later

Psiphon Inc. is looking for experienced software developers to join our Toronto team.

= What we do =

We develop and operate Psiphon, an Internet anti-censorship network that helps millions of people in freedom-restricted countries access uncensored Internet every day. We work at the leading edge of circumvention technology, where the latest network protocol and endpoint obfuscation research is rapidly deployed into production around the world.

Our tasks include censorship technology research, server and client software development, and operation of a dynamic, global network of thousands of proxy servers.

We’re a small team looking for skilled and enthusiastic people to join us. We offer great compensation and benefits and flexible work arrangements.

= Tech stack =

Much of our system is open source, check it out at https://github.com/Psiphon-Inc/psiphon/ and https://github.com/Psiphon-Labs/psiphon-tunnel-core

We use Java (Android app), Obj-C and Swift (iOS app), C++ (Windows app), Go (cross-platform core client and server), Python/JavaScript/C/shell script (server-side stack), ElasticSearch/Logstash/Kibana (stats), and more.

= Contact =

info+hn@psiphon.ca

Psiphon | Senior Software Engineer | https://psiphon.ca | Toronto, Canada | Full-time | REMOTE for now, REMOTE/ONSITE hybrid later

Psiphon Inc. is looking for experienced software developers to join our Toronto team.

= What we do =

We develop and operate Psiphon, an Internet anti-censorship network that helps millions of people in freedom-restricted countries access uncensored Internet every day. We work at the leading edge of circumvention technology, where the latest network protocol and endpoint obfuscation research is rapidly deployed into production around the world.

Our tasks include censorship technology research, server and client software development, and operation of a dynamic, global network of thousands of proxy servers.

We’re a small team looking for skilled and enthusiastic people to join us. We offer great compensation and benefits and flexible work arrangements.

= Tech stack =

Much of our system is open source, check it out at https://github.com/Psiphon-Inc/psiphon/ and https://github.com/Psiphon-Labs/psiphon-tunnel-core

We use Java (Android app), Obj-C and Swift (iOS app), C++ (Windows app), Go (cross-platform core client and server), Python/JavaScript/C/shell script (server-side stack), ElasticSearch/Logstash/Kibana (stats), and more.

= Contact =

info+hn@psiphon.ca

Psiphon | Senior Software Engineer | https://psiphon.ca | Toronto, Canada | Full-time | REMOTE for now, REMOTE/ONSITE hybrid later

Psiphon Inc. is looking for experienced software developers to join our Toronto team.

= What we do =

We develop and operate Psiphon, an Internet anti-censorship network that helps millions of people in freedom-restricted countries access uncensored Internet every day. We work at the leading edge of circumvention technology, where the latest network protocol and endpoint obfuscation research is rapidly deployed into production around the world.

Our tasks include censorship technology research, server and client software development, and operation of a dynamic, global network of thousands of proxy servers.

We’re a small team looking for skilled and enthusiastic people to join us. We offer great compensation and benefits and flexible work arrangements.

= Tech stack =

Much of our system is open source, check it out at https://github.com/Psiphon-Inc/psiphon/ and https://github.com/Psiphon-Labs/psiphon-tunnel-core

We use Java (Android app), Obj-C and Swift (iOS app), C++ (Windows app), Go (cross-platform core client and server), Python/JavaScript/C/shell script (server-side stack), ElasticSearch/Logstash/Kibana (stats), and more.

= Contact =

info+hn@psiphon.ca

Psiphon | Senior Software Engineer | https://psiphon.ca | Toronto, Canada | Full-time | REMOTE for now, REMOTE/ONSITE hybrid later

Psiphon Inc. is looking for experienced software developers to join our Toronto team.

= What we do =

We develop and operate Psiphon, an Internet anti-censorship network that helps millions of people in freedom-restricted countries access uncensored Internet every day. We work at the leading edge of circumvention technology, where the latest network protocol and endpoint obfuscation research is rapidly deployed into production around the world.

Our tasks include censorship technology research, server and client software development, and operation of a dynamic, global network of thousands of proxy servers.

We’re a small team looking for skilled and enthusiastic people to join us. We offer great compensation and benefits and flexible work arrangements.

= Tech stack =

Much of our system is open source, check it out at https://github.com/Psiphon-Inc/psiphon/ and https://github.com/Psiphon-Labs/psiphon-tunnel-core

We use Java (Android app), Obj-C and Swift (iOS app), C++ (Windows app), Go (cross-platform core client and server), Python/JavaScript/C/shell script (server-side stack), ElasticSearch/Logstash/Kibana (stats), and more.

= Contact =

info+hn@psiphon.ca

I agree. However, you need to be _really_ careful about using the IP provided by your CDN, etc. For example, Akamai sets `True-Client-IP`... but doesn't overwrite it if it's present. By default, Fastly does the same with `Fastly-Client-IP`. (Yes, Azure is better, but make sure you pick the _right_ special header.)

Minefields within minefields.

Setting up an application server behind a reverse proxy to use the "real" client IP is unfortunately very typically just a trial-and-error based process

This is very true, and I narrowly missed getting burned myself by thinking, "looks good to me!" after seeing my own IP.

However... I take a dig in the conclusions at the implementers of security-related libraries. I don't think it's okay for them to stop at "seems to work". They should be taking the time to fully understand the problem space.

highly recommended to just override the entire XFF header with a single value at the appropriate point in your stack, if at all possible

I agree, and probably should have emphasized that approach. (And maybe will, and will definitely add a note at the end.) I didn't really give any/enough attention to configuring your first proxy with a custom single-IP header. (Partly because I was writing more for people who are trying to use what's available.)