Hacker News new | past | comments | ask | show | jobs | submit | vbsteven's comments login

I did not succeed yet and iOS was indeed holding me back to use Java (or Kotlin, my preferred JVM language). Since a few weeks I've ditched my iPhone because of to the upcoming CSAM scanning changes and I'm back on Android.

By dropping iOS as a requirement, Kotlin/JVM is feasable again for all my personal target platforms and I've decided to use that as the main language for my system.


Author here, let me nuance a little bit what I mean with "cross-platform world".

It's 2021 and there are 3 major desktop and 2 major mobile platforms, plus some smaller ones on each side. And then there is the Web, which is both mobile and desktop focused.

If you're going to write a new library that you want to use on all of these platforms, you need a programming language that works on all of these. For iOS Java is a non starter because as far as I know there is no proper JVM that can be used in App Store apps. C can target all these platforms (including the web using WebAssembly) but it is a major pain to setup the tooling for every platform, especially if your library needs complex dependencies for things like SSL.

I am not a Rust zealot that advocates rewriting everything in Rust. I only mentioned Rust once in the whole article so your "obviously" comment doesn't really hold. The reason I mentioned Rust as a language for my project is because it is one of the modern languages that have cross-platform building and dependency management builtin from the start. It is a lot less work to write an SSL-enabled library in Rust that can be used on all these platforms than it is to write one in C.


> For iOS Java is a non starter because as far as I know there is no proper JVM that can be used in App Store apps.

I am assuming the only ways are without a JVM, like what Scala does.

> C can target all these platforms (including the web using WebAssembly) but it is a major pain to setup the tooling for every platform, especially if your library needs complex dependencies for things like SSL.

You mean dependencies for things like "a specific SSL implementation in this language" which happens not to be in the platforms where you want to ship. If you use the system SSL implementations, then you don't have this problem.

> I only mentioned Rust once in the whole article so your "obviously" comment doesn't really hold.

"Old language" and/or "unmaintained" are basically in the Cons section for every server package, even when they've had releases within the last year! And then the conclusion goes to mention the need to do something "modern" (I hate "modern" used generically like that) and goes on to only mention Rust...

> The reason I mentioned Rust as a language for my project is because it is one of the modern languages that have cross-platform building and dependency management builtin from the start

"dependency management" here probably means bundling an SSL implementation with your package, of course. Not only you are doing a disservice to everyone except for yourself by doing that (since now your binaries have an effective expiration date, they don't respect the system's certificate stores, etc.), but it is also against the advice of the 2 mentioned mobile platforms themselves, which recommend using their native SSL rather than bundling (e.g. NSStreams for iOS, and Android ... well, Android's official API is still Java...).

And the problem is, if you were comparing these languages and said "oh, it's more complicated to use than the preferred languages in iOS and/or Android", I might agree. But comparing it to Rust, however "incredible" tooling it may have...


> For iOS Java is a non starter because as far as I know there is no proper JVM that can be used in App Store apps.

Sure but Kotlin is used in many apps and compiles to iOS natively.


I'm the author of the article, it's always fun to see your own articles pop up on HN unexpectedly.

This post was written several months ago and in the meantime I have given up on trying to cobble something together using existing solutions because they don't provide the extensibility that I want.

I'm building my own replacement from scratch focussing on tasks/projects/calendars first. The architecture is a postgres db exposing CRUD API endpoints and all changes are broadcasted over MQTT so I can easily hook into everything for automation and extension.

I have a desktop application in JavaFX and a mobile Android app so I can use Kotlin as one language across all clients and backend. Lots of code sharing going on for things like API models.


MS Exchange server for tasks and calendar, OneNote for notes, SharePoint to sync these notes.

Closed source, expensive, designed to be supported by professionals, you might need more than 1 server/VM to run them all, requires AMD64 processors.

Well tested (used by millions of people every day), relatively secure, not terribly hard to setup (follow installation guide / best practices documents carefully, and you should be fine).


OneNote is worth it by itself, it's so good. It also works on mobile really well, the search is awesome,I just wish the sync was slightly less opaque for large notebooks with multiple authors.


OneNote would appeal to me if it had the sort of "go find all my todos across this notebook" feature that OrgMode provides via the org-agenda.

AS is, I've never found it super useful. j


Viewing tagged notes has been in OneNote since 2010, not sure what you mean. ToDos are a built-in tag type, but you can also create arbitrary other ones and filter based off of those.

https://support.microsoft.com/en-us/office/search-for-tagged...


I mean individual items within a note, not entire notes.

I'd want to a collated set of all the items marked as "to do", ideally with due dates, in a "virtual" page or view of the data.


I understood you, that's what this does. See the quote below extracted from the link I previously posted. Note that the page it autogenerates is post-filtering and works the same way for any tag (built-in or user created). The summary screen is usually enough for me, but the full note page is nice sometimes because you can annotate it just like any other page.

"If you want to view the tag search results as a notes page, click the Create Summary Page button at the bottom of the Tags Summary task pan."


Huh, interesting. Doesn't seem to be an option on the Mac version, and I don't think there was this option the last time I tried to do it in Windows, but I'll admit that was a while ago.


love OneNote, easy and quick for collaborative documentation around implemented systems. It does seem to process the text from images so it can search on them. However, searching IP addresses is not very good


Actually my business email is currently setup like this. I have a business o365 account and use Outlook on Windows/MacOS/android/iphone and Thunderbird on Linux.

But I want to move away from it because I want to 1) gain control over my data and 2) extend the system with automations.

Thats why I started researching open source and self hosted alternatives.


You can run all of the above on your own server[s]. Gonna be expensive though, e.g. $500 just for the OS.


I planned to comment on the conclusion as well. I think these protocols often do not handle things well enough and in the end the apps out there do not implement them properly anyways. You always end up building some kind of CRUD/RPC thing that works via HTTP/WebSocket which is why things like Todoist and etc work well and are able to add the features everyone wants in the end.


This is what I concluded as well. The end goal for my desired system is to make it straightforward to hook into events so I can add automation.

This turns out to be very hard to do based on CalDAV/WebDAV protocols because many clients and services implement the spec differently or only parts of it.

That's why I switched my approach and I'm writing my own backend storage layer that has my desired event system builtin on that layer (Using Kotlin/JVM for the backend, postgres for storage and MQTT for pub-sub to events). On top of that storage/api layer I'm building CalDAV/WebDAV support so external clients can connect to it.

Having my own HTTP+MQTT API makes it a lot easier to build modern clients as well. In fact because I chose Kotlin/JVM as my baseline and have already written a pure Kotlin client library I'm making a lot of progress on both desktop, android and cli tools to interact with the system.


Nice, good choice IMSO. Kotlin Native Multiplatform Mobile would make an iOs app less porting work. Only the UI/Views would differ, ViewModels, http client and DB can be shared via Ktor and SQLDelight.


Currently I'm doing JVM only using Retrofit and Jackson instead of Ktor. Mostly because I know the JVM ecosystem best and supports all my target platforms. It's delightful to work in a big monorepo that shares API models all the way from the backend to the clients.


Will it be open source? I'd consider helping with that. (Android/Kotlin dev with API/backend experience)


The backend and client libraries will be fully open source. That's the only way a self-hosted project like this can work.

I'm not sure about the android/desktop apps. I might keep them commercial for a bit to experiment with an open-core monetization strategy.

Give me a couple weeks to iron out architecture details and write some design docs and then I'll publish the project on GitHub. Shoot me an email if you're interested.


> You always end up building some kind of CRUD/RPC thing that works via HTTP

Isn't that what WebDAV is?


Have you noticed if any of the calendar protocols allow for recording an appointment without specifying a date?

Consider a haircut that will take 45 minutes & will invite two people (me & the barber), but the day/time is still undecided. Perhaps that sort of appointment can park at a placeholder date with infinite capacity until the real date is scheduled?


There's a draft that's been floating around and renewed multiple times over the years called VPOLL which is supposed to do basically this, but it's very tricky to get the edge cases sensible, so it's still not totally done. Generally one party offers appointment times and the other party books one, which simplifies it considerably.


I really like the idea of free-floating scheduling.


I think that’s called a draft :)


Radicale supports WebDAV and has built-in authentication.

Also, it could be worth to add Calendso to the list. Quite new project with a bit bigger scope than Sabre/Radicale. WebUI, recently added CalDAV.

https://github.com/calendso/calendso


Thanks for dropping in. Can you explain this comment about Radicale?

> Does not handle authentication by default, needs to be handled by the reverse proxy

My Radicale instance validates users on its own, using credentials in an htpasswd file with bcrypt hashes. Doesn't that count as authentication?


It looks like I missed the option to set an htpasswd file directly on the radicale server. After a second look at the Radicale documentation it looks like it supports both, htpasswd directly on the server or configured on the reverse proxy.



The Spring framework (Java) does the same thing for controller methods. If you need an authenticated user, or a model object, or a path variable, just add it to the method signature and the framework will provide it.

I don’t know if there is a term for this concept. I’ve always seen it as some form of Dependency Injection/IoC but at the method level instead of object creation.

IIRC the Actix web framework in Rust does something similar for handler functions.


The problem with doing this in Python is that there is no typing or interfaces to help you. Basing it purely on naming of arguments breaks the assumption that argument names are local to the function/method. I find this extremely confusing to reason about, let alone the possible unwanted side effects if some developer isn’t aware that a name is magical. It’s also very non Pythonic for good reasons.


I feel the same way (and mostly use unittest instead) but maybe this technique makes sense as long as its use is limited to test functions?

Test functions are never called explicitly and would otherwise (like unittest TestCase methods) never have any arguments, so in this context maybe it's clear that any arguments they do have must be magical.


It can actually play really well with Python's optional typing. I should add that to the implementation in Datasette!


I've always just called it "spooooky annotation magic".

The decorator pattern seems to fit, from my POV. The framework takes your code, creates a proxy that implements the interface, and then wraps your method in a method that does the stuff you asked for with the annotations before and after your method gets called.


I’m thinking about buying a degoogled Android phone to replace my iPhone. The main things I want are:

* Spotify needs to work over Bluetooth in my car

* WhatsApp needs to work (preferably with push notifications)

* I need the Fitbit app to work so my watch can show push notifications from my personal apps

* a network-based location provider to be consumed by my personal apps (I’m working on a personal data and automation suite that relies on frequent smartphone location updates)

Is this something that can be done with CalyxOS on a Pixel? Can other Android flavours like GrapheneOS or LineageOS do this?

And aside from Android, how far along are other “mobile linux” smartphones for use as a daily driver with regards to the above points?


> Can other Android flavours like GrapheneOS or LineageOS do this?

There's a separate question you're missing: what your Google Services situation is

Distros like Lineage come without Google Services; if you want them, you install them yourself

"gapps" is the official one. It's straight Google everything. Lineage OS + gapps will give you a very clean and nice Android experience if you don't care about Google collecting your data.

If you do care about that, you have two options:

1) go without Services entirely (most apps will have problems; if you're lucky they just won't send push notifications or be able to use your location, if you're unlucky they will be flat out broken or crash)

2) use microG, which is an unofficial non-Google replacement masquerading to the rest of the system as Google Services. I've heard mixed things about how well it works, but that appears to be what CalyxOS comes with. You can install it on Lineage, but I don't know what extra hoops may have to be jumped through. Note that it's also walking a fine line with Google and I could see them intentionally breaking it at any time down the road. Depend on it at your own risk.

I care about privacy and I would not buy a degoogled Android phone today. I switched to iPhone a few years ago after roughing it without Google Services for a year and a half. It was fairly awful.

I once had to return some headphones because the app that went with them simply wouldn't work.

I had to use a combination of the Google Maps web app and OSMAnd (which was just atrocious) for navigation, which basically meant I didn't really have navigation.

Slack wouldn't send me push notifications.

I couldn't use my banking app.

Even Signal struggled to run in the background/send me notifications.

It was basically back to the iPhone 1 days where your phone could text, call, web browse, take pictures and play (local) music. Though even the iPhone 1 had a functioning Maps app.


Thanks for the frank details about the downsides.

If I can't use my banking apps, Lyft, Google Pay, Photos, Maps, etc. with a particular mobile OS (with all features working), then it's unfortunately not for me.

It seems like most of the Android alternatives throw the baby out with the bathwater. I get that making a trusted OS based on Android is hard, especially with Google having moved so much core functionality into Play Services, but the value I get out of my phone is mostly from mainstream apps, using mainstream features (like push notifications and location services). If those don't work, to me it's not really a useful device.

I get that a lot of these apps aren't particularly privacy-oriented, but to me, my main concern is that there are a lot of Google-owned core components to the OS and userland that actively subvert my privacy. I'd really like to think there's some middle ground on Android where I can trust the OS and userspace core, and still run the apps I usually run.


GP seems to be describing a flavor of Android that does not have microG or Google Play Services.

CalyxOS has microG, and I have no problems getting timely notifications on Signal or Slack, nor do I have any issues using Lyft, Google Maps, Google Photos, or any of my banking apps on CalyxOS (or LineageOS for microG). The only exception on your list is Google Pay, which I don't use because it is extremely privacy-invasive (gives Google all of your transaction data). In my opinion, CalyxOS is a very practical OS that balances convenience with privacy.


> If I can't use my banking apps, Lyft, Google Pay, Photos, Maps, etc. with a particular mobile OS (with all features working), then it's unfortunately not for me.

These are proprietary apps, so it's a bit unrealistic to expect that they would support a free OS.


I'm not asking for official support from the app developer, just knowledge that they "happen to" work on an alternative Android-based OS. Which they should, if all the APIs they depend on are there (including the Play Services ones, via microG or whatever). If they specifically look for "non-blessed" Android variants and deliberately fail to work, that's a shame, but if it's an app I need, that rules out that OS for me, unfortunately. That's just the reality of the situation.


Currently been using LineageOS for three years now, latter half without GApps/Play services.

Google maps (from Aurora store) works perfectly fine on my phone without it.

Telegram notifications work perfectly fine.

My banking app works fine.

Apple Music and Jellyfin work great.

I use nextcloud for contacts/calendar/cloud/photo management.


I once had to return some headphones because the app that went with them simply wouldn't work.

Kind of awful when we're at a point where a pair of headphones requires a specialized app to use them.


True. Mine run over bluetooth just fine. The app enables configuration, checking for firmware updates and a hearing test which creates a custom equalizer setting to counteract individual deficiencies.


X >will give you a very clean and nice Android experience if you don't care about Google collecting your data.

I must be confused here, but isn't the whole point of installing any OS besides Android on an Android device preventing google from collecting your data? Why else would anyone deal with a non-standard OS?


The above are all distros of Android

The other reasons to use a non-stock version of Android are:

- Much longer updates lifetime than you get from the OEM

- Removal of OEM bloat

- Addition of features that are actually good


Not sure why nobody was is here's comment is greyed, but yep I'm in the same boat - LineageOS works fine and am using Spotify and Audible without any issues. There are some apps that haven't worked, buy I'm fine with that.


heres what i do and it works great: use the regular google build of android BUT on a fresh install, disable all google apps sans chrome, use it to install fdroid, then uninstall that, from there use TrackerControl to prevent google and others from phoning home, use the aurora store for apps, use organicmaps for maps, signal for sms florisboard for keyboard, etc. you'll have a google-free experience which you can exit for 10 minute periods using the button on the trackercontrol dialog, and things like google pay and notifications will still perform quite well. I've been using this for a year and loving it


Interesting setup.

Do you have any resources about how efficient TrackerControl is at preventing Google to collect data from the phone various system services?


I would also like to hear more on this, a quick look at TrackerControl's readme tells me it mainly functions as a blocklist. Which (I would think) the moment you turn off tracker control to use google maps (or whatever play services app you wanted to use for a moment), said app will send a flood of queued location data that it has been collecting in the background if allowed.

I suppose that setup could work if the user is disciplined about not letting apps that use play services run at all when not in active use, but at that point I don't see the advantage to using tracker control at all.


> the moment you turn off tracker control to use google maps...

No, it works per app. I'm also a TC user, it's quite great. Per app you tell it whether it should allow talking to various motherships. You can toggle on broad categories (for a given app) or also more fine-grained. It also logs which services applications tried to contact, so I can see that Spotify that I pay for is trying to send god knows what to Facebook (and that TC blocks it).

It takes a bit of setup because a ton of apps talk to a ton of centralized services (Aurora store and Newpipe obviously need to talk to Google, for example), but after that I'm a lot less bothered by apps including the Facebook sdk or something because it'll be stopped anyhow.

I'm waiting for the day that apps/websites stop telling your phone/browser to rat on you and they start doing it server-side. Lot less gdpr trouble because nobody can check what you're doing and goodbye blocklists. But so far it seems things don't yet work that way.


Played with TC for an hour or so this evening, and what I stated above (possibly poorly) still stands. I chose google maps in particular, because it is an application that requires telemetry data to function; but it is reasonable for an individual to not want to be tracked when not using google maps.

If I block infinitedata-pa.gogleapis.com, maps will not function, but google maps will continue to collect telemetry data on my phone if it is running and has permissions. It will save that collected data until a user unblocks essential monitoring in order to use maps (Unless the user clears cache/data, or uninstalls maps, before unblocking).

That is the case I am pointing out, tc is a stopgap (and a welcome/useful one) but it does _not_ provide users a way to prevent _collecting_ of telemetry data to be sent off the device. It just delays the sending until the applications use is more valuable than the users privacy.

Edit: Things that could help with that:

1. Physical kill switches for radios (I know, that's not going to happen from any major arm cpu maker, the SOC is integrated, but it's the most practical solution.).

2. Granular permissions settings for androids network location provider. As an example, A permission that if app is running in the background send spoofed location data back (Once again, it's not that simple telemetry data is coming from many sources, I'm just listing what solves the problem.).


I can confirm that,

* Spotify over Blueooth in a car works.

* WhatsApp works, with notifications

* I'm not sure about FitBit, per https://plexus.techlore.tech/applications/fitbit it might not but things may have changed.

* We include some providers by default and you can install more from F-Droid.


Thank you, that sounds very promising.

Is there a specific device you would recommend for long-term CalyxOS support?


The newest Pixels are the best given that's what Google will support the longest, and with every Pixel generation they make a lot of improvements.

https://calyxos.org/about/faq/device-support/#update-timefra...

Pixel 6 is right around the corner, however it'll take a few months for us to get it all going (getting the phone, porting Android 12, making changes for Pixel 6)


I don't use WhatsApp, but I bridge my other chat apps through the Matrix client Element.

It appears that WhatsApp does have a bridge for Matrix, though I've not used it.

https://matrix.org/docs/projects/bridge/mautrix-whatsapp


I have been using LineageOS on Xperia XZ2 Compact for about a year with a smaller bundle of official Google Play Services.

Almost everything works fine! Some apps didn't like it or detected root but Magisk + MagiskHide helped to hide root for those specific apps. Even Google Pay works with basic SafeNet attestation - that required "MagiskHide Props Config" Magisk extension and selecting a proper fingerprint.

The only problem encountered was that I couldn't connect PS4 controller and use it as an input device. Probably a driver issue related to bluetooth but other bluetooth devices I use work normally.

Optional F-Droid privileged extension makes F-Droid able to install F-droid app updates automatically like Play Store does.

Overall a very positive experience.


For you first two questions: Spotify will work with Bluetooth, and WhatsApp will have eventual notifications (real-time if the app was recently opened, up to seven hours later otherwise, at least on my device)


We're very close to getting the notification issues fixed.

We've sent some patches to microG to address them at https://github.com/microg/GmsCore/pull/1483

I'm running it on my device since a few weeks now and it has been quite reliable so far.


I don't use microG, the delay is WhatsApp waking itself up


If you degoogle yourself but then hook into FB whatsapp, isn’t that just defeating a bit of the point?


Sure, "a bit", but I don't think a phone that is entirely broken except for a few open source apps that don't do useful day-to-day things (like order me a Lyft, let me do my banking, pay for stuff at a cash register, navigation, etc.) is all that useful.

My ideal would be to have a base OS and core standard library that I can trust, and then I get to choose what apps I run on top of that. Sometimes I will choose to install an app that doesn't have a great privacy track record, but I will rely on apps like TrackerControl, Blokada, and Bouncer to mitigate my exposure somewhat. It won't be perfect, but we don't live in a perfect world where there are feature-identical, privacy-respecting clones of the mainstream apps. Until that time, I can decide what are acceptable risks to my privacy.

Unfortunately, I don't have that choice right now: either I live with the privacy minefield that is Android (as I do, and try to mitigate privacy leaks as well as possible), or the nanny state that is iOS (which I -- for now -- consider the greater evil).


Perfect is the enemy of good.


I don't know about Fitbit stuff, but LineageOS can do everything else you named. Have been using it for years.

I guess other alternative Android distributions shouldn't be too different there.


> * I need the Fitbit app to work so my watch can show push notifications from my personal apps

It's going to hard to degoogle your phone and stay attached to your Fitbit.


Is there a specific reason for this? Does the Fitbit app rely on Play Services?

I don’t care too much for on wrist calls or anything like that. I just want to use the Fitbit app to sync stats and mostly display notifications from WhatsApp and my personal apps.


I don't know how the app works under the hood, but Google owns Fitbit


I should have know that. Now I understand what you meant in your first comment.

As long as the app doesn’t rely on Play Services it shouldn’t be a problem. By “degoogled” phone I mostly mean taking Google out of the critical (privileged) path in the OS for software and app updates.


I’m not familiar with their product line but from reading just this comment I would guess that old devices that lose connectivity get a full new device and devices with WiFi losing partial connectivity get coupons and credit for their inconvenience (caused out of Amazons hands through the carriers)

That sounds like a fair deal to me. Although it’s pure speculation. I haven’t checked if that is actually the case.


That would make sense, but it's not in fact the case, many second-gen Kindles don't have wifi.

...I'm actually quite confused as to why the people with the oldest devices—whose Kindles presumably had the longest usable life—are the only ones getting free replacements.


> I'm actually quite confused as to why the people with the oldest devices—whose Kindles presumably had the longest usable life—are the only ones getting free replacements.

Maybe there is a lifetime clause in the AGBs? If they promised 15 years of usable time (for example), this might be their way to get out.

Also, the longest customers are probably the most loyal and bought a lot of books over the years, while also being the smallest subgroup.


I have a DX, as far as I can tell it does not have any WiFi capability. It's only network connectivity is cellular.


The Remarkable 2 runs Android and has a USB-C port so it might support a wired keyboard.

Although I’m not sure if the screen refresh and cpu are fast enough for comfortable typing. I already get frustrated using the onscreen keyboard for typing a 10 character notebook name.


You can SSH into it in order to add software to enable an external keyboard. But that's not the point of the device, which is that it's a digital pad of paper, and all the freedom from trying to draw perfect drawings in Powerpoint/Visio/Whimsical.com using a mouse.

The problem with the device is that, entirely unsuprisingly, it turns out I can type way faster than I can write with a stylus after years of typing. But I really like my Remarkable2, I just haven't figured out how to fit it into my life - I've spent so long wanting a device like that, that I've got all these other things in place that I don't seem to need it. I journal using google docs, and the Remarkable2 doesn't have any integration there. I use it for quick notes, drawing diagrams and also learning to draw still life.

I'm very happy with my purchase, but it is very much a niche product. I didn't buy one to get an eink terminal, so I haven't tried it out as such, and can't report on how well it does as one, but I don't think it would do well at scrolling pages like you would a terminal. (But I'm a fan of Alacritty on OS X, so my demands on a terminal are also niche.)


It doesn't run Android. It runs Linux. There is already similar devices with front lit eInk screens and support keyboards out of the box too with Bluetooth or USB C. The Boox Note Air is an example. It's considerably more powerful than the Remarkable 2 and in the A2 refresh mode typing with a keyboard is not too bad.


It is a custom Linux distribution, not Android.


I enjoyed the article and it was very clear to me. Thank you for writing it.

Singling out details and sidetracking the comment thread about this one detail is just a thing that HN tends to do frequently. Usually the first few comments determine the tone/topic of the thread instead of the article itself. Which is not always bad.


This is similar to what I do but in my head the escalator goes down instead of up.

When editing (mostly C-like languages) I can "see" the execution thread pass through the code like a step-through debugger. At a function call I can mentally "step into" the function and the function is visualized to the right of the current function with its first line on the same height as the call site. Doing this for recursing functions means a visualization that progresses downwards and to the right.

I guess my mental model evolved this way after years of step-through debugging.

Mental models for code and other things are a fascinating topic. I also have a very specific calendar/timeline model that is not a straight line at all. A full year "view" arranges months in a 2D layout where some months progress "up", others "down" and they are connected in weird ways. For example 31/01 and 01/02 are adjacent, but 30/11 and 01/12 are not. 31/12 is the last box of the year and is adjacent to 01/01 repeating the pattern for the new year.


It could also be a partial IQ score of 80. IQ tests are divided in 4 key areas each scored separately. If all 4 scores are similar they can be averaged to get the final tested score. If they are not it’s called a “gap” and the average score is meaningless.

With gap results it’s not uncommon to see 2 low areas scoring 80s and 2 high areas 120 or even 130+.

“A developer declaring a tested IQ of 80” could be a gap case and somewhere along the way the nuance got lost in translation.


Not necessarily. They could also score in the 70s in 2 areas, score 115 in another, and 90 in the last one, and get a score in the 80s.

Beyond that, IQ is not even predictive enough of job performance for a standard deviation to be a death sentence.


Consider applying for YC's Summer 2025 batch! Applications are open till May 13

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: