News for hackers. Stuff that matters.

adam-p

Re:Ask HN: Who is hiring? (June 2026) on Monday June 01, 2026 @04:49PM (#48362448)
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: [email protected]

Re:Ask HN: Who is hiring? (May 2026) on Friday May 01, 2026 @10:00PM (#47982610)
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: [email protected]

Re:Ask HN: Could you share your personal website here? on Thursday January 15, 2026 @02:10PM (#46637556)
Mine is mostly a (sporadically updated) blog: https://adam-p.ca/
State censorship circumvention is exactly what Psiphon is for! So yes, try it.

(Disclaimer: I work there.)

I added a section with brief discussion of rejection, truncation, and the perils therein.

https://adam-p.ca/blog/2025/04/string-length/#what-to-do-whe...

Re:The best – but not good – way to limit string length on Wednesday April 30, 2025 @09:24PM (#43852731)
> 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.

Re:The best – but not good – way to limit string length on Wednesday April 30, 2025 @09:20PM (#43852696)
If you can get away with that, that's great. But I feel like there are still plenty of cases where you want to limit the lengths of particular fields (and communicate to the user which lengths were exceeded).
Re:The best – but not good – way to limit string length on Wednesday April 30, 2025 @09:15PM (#43852658)
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.

Re:The best – but not good – way to limit string length on Wednesday April 30, 2025 @09:01PM (#43852551)
I don't get into truncation much, but I do mention the risk of:

a) failing to truncate on a code point sequence boundary (a bug React Native iOS used to have)[1], and

b) failing to truncate on a grapheme cluster boundary (a bug React Native Android seems to still have)[2]

[1]: https://adam-p.ca/blog/2025/04/string-length/#utf-16-code-un...

[2]: https://adam-p.ca/blog/2025/04/string-length/#unicode-code-p...

Re:The best – but not good – way to limit string length on Wednesday April 30, 2025 @05:20PM (#43850803)
@dang Can the title be changed? It should be "The best – but not good – way to limit string length". Thanks.
Re:A Tour of WebAuthn on Friday December 27, 2024 @07:28AM (#42521626)
Except that TOTP codes are MitM phishable. U2F with its URL-checking (via browser cooperation) is needed.
If you want another example of difficulty with the AMO review process: https://github.com/adam-p/markdown-here/issues/21

And that's just one of the examples; another resulted in me having to add a preprocessor that removes code at build-time, which was annoying. I like Firefox, but it wasn't always easy to justify the effort.

I also used Google Sheets as a datastore backend: https://github.com/adam-p/danforth-east

It's a community association membership management thing, and I wanted the (non-technical) association board members to be able to easily inspect the data and do something useful with it if I moved away. It has mostly been successful, except that sometimes someone will manually edit the sheet and break something.

Here are Google's related Email Sender Guidelines: https://support.google.com/mail/answer/81126

Note that these take effect in two weeks.

Re:Bug Story: Sorting by Timestamp on Thursday December 28, 2023 @09:00PM (#38801031)
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.)

Re:Bug Story: Sorting by Timestamp on Tuesday December 26, 2023 @01:39PM (#38774566)
Nice. That's a good general rule to follow.
Re:Bug Story: Sorting by Timestamp on Sunday December 24, 2023 @12:34PM (#38755034)
That's a good point. I'll add a note to the post.
Re:Ask HN: Who is hiring? (November 2022) on Tuesday November 01, 2022 @02:13PM (#33425090)
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 =

[email protected]

Re:Ask HN: Who is hiring? (October 2022) on Monday October 03, 2022 @03:59PM (#33072847)
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 =

[email protected]

Re:Ask HN: Who is hiring? (September 2022) on Thursday September 01, 2022 @03:44PM (#32681992)
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 =

[email protected]

Re:Ask HN: Who is hiring? (August 2022) on Monday August 01, 2022 @12:37PM (#32308639)
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 =

[email protected]

Re:Tor is fighting and beating Russian censorship on Saturday July 30, 2022 @09:52PM (#32292404)
Psiphon is helping almost 2.5 million Russians per day access the rest of the internet. (Which is just what we do.)

https://psix.ca/d/nyi8gE6Zk/regional-overview?orgId=2&var-re...

Older »