Hacker Newsnew | past | comments | ask | show | jobs | submit | NathanCollins's commentslogin

Great point! I have a "cheap" Samsung M32 that I bought for about $170. One reason I chose this Samsung phone over a similarly priced phone from a competitor was that I wrongly believed that Samsung provided several years more OS and security updates. After buying the phone I realized that longer support only applied to flagship models :/


Devil's advocate question: How did you expect Samsung could fund SW dev costs to support 7 years of updates on the margins of a $170 phone while still turning a profit?

Not sure how much you were expecting at $170 but you might have been penny wise and pound foolish here trying to scrape the bottom of the barrel as nobody else gives you more than 2 years of updates at those rock bottom prices. Sometimes it pays to spend a bit more and get something worthwile.

Samsung's other budget phones from last year in the ~300 Euro range, like the A54 have 5 years of guaranteed support. Maybe the mid rangers of 2024 will also get 7 years of updates which would be killer value.


"In 2022 alone, the South Korean company sold almost 260 million smartphones worldwide."

Say there's a model that sold 10m total. I think it's fair to say Samsung could reasonably increase the price by $1 (~0.75c minus tax) for 10 years of support instead of ~3 years.

That's $7.5m. I used to flash Cyanogenmod on my phones (motorola defy etc.), IIRC it was often a single guy making the roms, I guess part time, doing a decent job of it. $1m/year for years 4-10 should cover a team of 5.

I think difficulties arose when newer kernals wouldn't work with the older hardware drivers that were available. But there's fewer SOCs than smartphone models.. I guess maybe $0.10 to Qualcomm for every SOC sale should cover updating drivers.

Not sure I'd want to be using a 10yo (2013) phone now, but a 5yo (2018) phone with fresh software would be fine. Todays higher-end phones should still be usuable beyond 5 years.

Here's Android 12 on Samsung S4 (2013), looks okay but probably marginal once you put a few chonky apps: https://youtu.be/lySu841rNgg?si=LyONyyUP8mcCa67L&t=783


> I think difficulties arose when newer kernals wouldn't work with the older hardware drivers that were available.

That's a problem of Samsungs own doing. They can mainline their drivers and force their subcontractors to do the same if they want to sell to them. They're definitely big enough to be able to do it if they wanted to.

Samsung doesn't see this as a problem.


The HN answer is probably "don't make cheap phones".


> How did you expect Samsung could fund SW dev costs to support 7 years of updates on the margins of a $170 phone while still turning a profit?

Release the source code and accept patches. Nobody even cares if you provide further updates at all if you release enough code or documentation to begin with that third parties can feasibly get up to date versions of stock Android running on it.


So the SAMsung tiers are like this:

S: flagship

A: mid range

M: mostly garbage

I can absolutely use an A as my daily driver, but M I will not touch. And you paid way too much for an M series phone, I would say they are worth $80-100.

Based on that, I can see why they can't give you 7 years of support. Besides, most M series use some unknown Chinese CPU that will never receive any kernel updates after release.


Another way to look at it is that you could buy a new $170 phone every two years and it would still be cheaper than an S24.


But you would also be stuck with a $170 phone, which depending on how you use the thing can be a slight inconvenience or a total disaster.


It's not a toggle, but Google Pixel phones (or at least the one I owned a few years ago) come with very few if any bloatware type apps, since the default Android apps are the Google apps anyway. Contrast with Samsung that duplicates a bunch of core apps/functionality.


Motorola is also super minimal/mostly Google. I think the only bloatware on my newest was an app to control 'moto actions', which I find gimmicky but some tend to like.

Yeah, my previous Samsung I had to spend a half hour with adb to get all their junk disabled.


Not sure what you mean by default Android apps but Google Pixel apps != AOSP's stock apps. AFAIK most apps can now be disabled in Settings on recent Samsung phones, I'm not a fan but I don't think they're that worse compared to Pixels, especially on the flagship devices.


Switching from stock to grapheneos more than doubled the battery life of my pixel 6 pro.

They install plenty of bloatware on google devices, but since it’s all background surveillance stuff, it doesn’t clutter the UI.


Sony’s phones also come with minimally modified Android. They still have 3-4 bloatware apps to remove with ADB but it’s pretty manageable. I picked up an Xperia 1 V on discount to take the position of “flagship phone” in my Android app dev testing lineup and if I were switch my daily driver away from iOS, it would be in my list of considerations.


In my experience Samsung's flagship phones are top notch hardware with superb build quality. According to user reports on the internet the latest Google Pixel can't even manage to connect to the cellular networks reliably and without overheating. I wish Samsung would step their security game up to GrapheneOS standards because I just can't trust Google not to fuck the phones up.


Pixels come only with bloatware.


Are you aware of /The Implementation of Functional Programming Languages/ by Simon Peyton Jones, the main person behind the front end of the GHC Haskell Compiler? The full book is available free on his web site as PDF:

https://www.microsoft.com/en-us/research/publication/the-imp...

It has two chapters on pattern matching, two chapters on type checking, and several chapters related to execution.

I have not read it.


Yes. I appreciate that he released it as a PDF, but that book is one of the old, dense, academic books I described. I should try it again, but it's very different from the step-by-step books posted above, or the partial book by Stephen Diehl.


Do you mean as opposed to e.g. verifying the absence of timing attacks? While I agree that verifying the absence timing attacks is probably much harder than what was done here, the difficult part of the s2n verification I linked to was that we verified equivalence between imperative C code and a functional mathematical specification.


Right, it says "convincing argument that the C implementation does the same thing as the mathematical specification" and "Assuming that we didn’t accidentally program the same “bug” into our Cryptol spec".

My understanding is it's another way of white-box testing the code against specified behaviour, but just that using a (proven?) mathematical specification for algorithms is probably easier than writing unit tests that have to capture all edge cases. (In essence, it sounds like verification software is probably set up to detect such edge cases, which I do think is a good idea, because you only have to program such software once.)


I don't think I understand what you mean by "white-box testing" here, but perhaps it's helpful to clarify what I meant by "equivalence" above, and how it relates to testing: what we did here was verify input/output equivalence between the imperative C code and our functional mathematical spec in Cryptol, for a range of key and input buffer sizes. This corresponds to testing all inputs of those sizes, which is not possible to do by direct testing: e.g., for a 64 byte key and a 1000 byte message, the equivalence corresponds to checking

8^(64 + 1000) =

772229093352564060021182203061704429810699485400692901921197 543030601797302324658889178066005708227773161814337173682980 065612522479316644103460638515687114933331680544961552375412 914711698479251875125441335427310394080188149008724146221306 402242642191159219745353079189135871713826154087180913177991 135554545843425504232155742364801022614341625532175948198587 539576566458760517446126909555225085347521013376171505426231 008775737688282539095967230536510936329489906183630574979494 541005574981802619546120394597788656899688609063922312837993 473534655739423794995816974687759952971465473538229880976237 137410666755636310464327792929854669852851716265627988045993 010404521026728809660275537200281773360887456757531693050082 473180078568595877659952113273156104380151800825339034988199 020562681928372626978536148813617979584497069978086989075685 756621893032191527888867820144068182725496496585643739551119 7590300209437142003442599950379602277911674788208191414992896

tests, which would take "forever" to verify by direct testing.

We did not prove any properties of our mathematical specification in Cryptol, but the claim is that it's close enough to the official FIPS mathematical specification for HMAC [1] that it's easy to believe that it's correct. However, a group at Princeton has also verified HMAC in the past, and gone further than us by not only proving that the imperative C code is input/output equivalent to their mathematical spec in Coq, but also proving that their mathematical spec has the security properties of a secure hash function [2].

[1] http://csrc.nist.gov/publications/fips/fips198-1/FIPS-198-1_...

[2] https://www.cs.princeton.edu/~appel/papers/verified-hmac.pdf


AFAIK, white-box testing is simply when you can look at the source code (as opposed to black-box testing) for example a unit test is a type of white-box test.

What I was struggling to express is that in the mathematical notation, the operations are well defined (right?); in C that's not necessarily the case. So you could argue that if you were writing direct tests, you don't need to check all inputs, but testing edge-cases will do. And maybe that's true, but practically impossible for complex algos because how do you know which inputs cause edge case behaviour? So I was agreeing that this approach is probably better than having some fallible human write test cases :) (better = more thorough and reliable) And although you'd have to make sure the same fallible human hasn't put bugs in the mathematical spec, as you've said that's probably easier to check.

EDIT: Nevermind, I found part three about undefined behaviour. I had written: You seem to know loads about this, maybe you could say how undefined C behaviour is handled when comparing against a spec? Is e.g. shift-past-bitwidth simply forbidden? The only alternative I can think of is looking at the disassembly on a certain platform and checking those instructions, which sounds less than ideal.


Thanks for clarifying "white-box testing".

Some comments:

* the operations in the mathematical spec are mostly well defined, but e.g. division by zero is not defined. However, the verification handles this by checking that all operations are well-defined on all possible inputs.

* yes, identifying the "edge cases" is not something you can do easily, and hard to make formal. In some sense, the fact the non-edge-case inputs are treated in a uniform way is probably what allows the verification to succeed at all.

* a short summary of the answer you already found in the third blog post: what we actually verify is the LLVM assembly that Clang produces when compiling the C program. Much of the potentially undefined behavior in a C program is translated away by the compiler on the way to LLVM assembly. For any potential undefined behavior that remains in the LLVM assembly, the verification checks that it cannot happen at runtime.


Janrain and Engine Yard have been known to host community events.


Yes, this is the only change I care about :( I used "It's All Text" with Emacs. Maybe it's time to start using a separate email client?


In the context of the article, I think the justification was: assuming you're more productive in quality and not quantity, because you're working towards ambitious goals, then on most days you will not complete a recognized goal. The suggestion is to go out of your way to recognize your smaller day-to-day accomplishments which help you reach the big goal.


how do i know you don't suck at making up coding questions?

in other words, why require a sign-up instead of just posting the questions on your site?


E.g. search for "Buck Adams".

Email from prof:

"I need to apologize to everyone in CS 367 for providing data sets containing offensive material. I had not looked at the contents of the large and huge data sets until well after the assignment had been released. Had I realized what the data sets contained, I never would have used them. I am sorry that this happened. "

Full assignment:

http://pages.cs.wisc.edu/~hasti/cs367-common/assignments/p5/...


there are more important things happening on march 19th:

http://stackin.hauntedshit.com/wp-content/uploads/2009/03/20...

:)


Have you listened to The Glitch Mob's most recent mixtape? It's the pinnacle of this genre. I wish they would come to Pittsburgh.

http://dl.getdropbox.com/u/101698/The%20Glitch%20Mob%20-%20C...


had not, thanks for the link


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

Search: