HNHacker News
TopNewBestAskShowJobs

tmerr

502 karma · joined October 4, 2012

github.com/tmerr
submissionscomments
tmerr··on Ask HN: Mobile phone addiction help?
I see no reason not to combine willpower with psychology tricks. I think of it as playing a game between my rational brain vs limbic system. Yes, my rational brain might be ahead for a while, but limbic system is always there to find me in moment of weakness. So I remove opportunities for it to take control. Turning off PC before work, laptop in the closet, phone across the room, ringer on. Simple and effective.

I have had better luck with physical impedances, and don't bother with tech ones now unless they're simple (uninstalling distracting apps). Like you say most software is easily circumvented.

tmerr··on Computer Calculus Reading Group
Not a mathematician but every use of the term algebra I have seen has some way related back to what I learned in grade school about sets of real numbers, operations, properties, and how to solve equations. It's the same thing with linear algebra, they just put restrictions on the kinds of equations to solve. Then more ... abstract there is abstract algebra that goes beyond real numbers and looks at other kinds of sets & operations and classifies them as fields, rings, and more. I wonder if there are examples of the term "algebra" that are unrelated to this. If not that might be one difference between algebra and "a calculus" which as you said seems to refer to any system for formal calculation/reasoning.
tmerr··on [dead]
The policy is here https://support.google.com/youtube/answer/9891785?hl=en Article is about a year old
tmerr··on Java Is Underhyped
You weren't kidding. The page has barely been tweaked since 2008 https://web.archive.org/web/20080701171554/http://java.com/e...
tmerr··on Our Thoughts on Bitcoin
Yes, this was absent from the analysis. Bitcoins security derives from computer power which is currently paid by combination of fees and inflation (mining). We have yet to see what happens to the prices and security when mining dries out.

It would also be interesting to see a large market event that causes many people to move bitcoin at once. (What happens to transaction costs? Does this affect perception of bitcoin as a safe store of value?)

tmerr··on What’s the best non-smart TV sold today?
Incidentally I tried to buy a Sceptre TV. It may have been the one mentioned in the article. It arrived with a shattered screen, and I'm not surprised given the flimsy build quality.

You're better off buying a smart TV and not using its smart features. I've never connected mine to the internet.

tmerr··on More than 1,200 Google workers condemn firing of AI scientist Timnit Gebru
Because it threatens Google's PR.
tmerr··on What if you knew how computers work? (2015)
This became apparent to me once I learned a Turing machine can compute anything λ calculus can and vice versa. Is this also also a conclusion you can reach by thinking about computer hardware? Would love to hear more about the thought process.
tmerr··on Interviews with makers of high-end mechanical keyboards
Mechanical keyboards seem like a example of creating a need through advertising instead of filling an existing need[0]. It worked well enough that I bought a $100+ mechanical thinking I was missing out. In a way you do get what you pay for since mechanical keyboards tend to last longer. But other than that they are not quantifiably better. For me I noticed my typing speed was reduced even after using it a couple weeks, so went back to low profile rubber dome and never looked back.

[0]: Actually I do not know the history here. What started the rush for mechanical keyboards? It feels like there was a point in time where they became fashionable, I assume it had to do with advertising campaigns but it could have been organic interest too.

tmerr··on New case studies about Google’s use of Go
No problems. There are enough dimensions involved in what makes a language good that Im pretty sure I could rationalize why any language is better than another, measured along only one of them.

Robustness. Speed. Simplicity. Easiness. Conciseness. Writability. Readability.

Hard to tell which are independent vs correlated, let alone how they factor into productivity. And productivity is also a function of the kind of problem you work on.

tmerr··on New case studies about Google’s use of Go
Thanks! I learned something new.:)

https://doc.rust-lang.org/stable/rust-by-example/error/iter_...

This is easy to miss if you are mainly reading reference docs. I probably read the getting started guide at a time before there was a section on it.

My other comment in this thread comes to mind https://news.ycombinator.com/item?id=24300057

tmerr··on New case studies about Google’s use of Go
I see. Then in part the comparison is showing off exception handling, not FP.

Rust is a good example of functional lang without exceptions (panics aside).

In Rust there are many cases where I could use FP but opt not to because it can make error handling more awkward. For example to collect the result of a map operation to a vector, and if there is an error along the way you want to abort the entire operation. In functional this means collecting to a Result<Vec<T>>. Not sure if I'm just tired today but I can think of how to do it in 5 seconds with a loop. I suspect functional solution would be uglier.

tmerr··on New case studies about Google’s use of Go
If IsReady, ConvertToX, and GetColor can return errors then this isn't that far off. But then you're not making an apples to apples comparison. You would have to extend your functional example so that it also handles errors. Unless it already does, and I am missing something.
tmerr··on New case studies about Google’s use of Go
Complicated languages come with an explosion in number of ways to do things.

Rust is great but I waste a lot of cycles thinking about how to structure the code instead of the actual problem. What is cleaner here using a loop or a higher order function? Should I use if let to make the code a little shorter? Should I use that question mark trick to propagate the error? Do I use the expression or statement form of ifs?

Do all of the features in your language really make you more productive, or are the gains offset by the cognitive burden of dealing with them? And what is the cost of having many ways to do things in the context of a code review? What about when reading other people's code? What about when writing automatic tooling?

tmerr··on How we scrape 300k prices per day from Google Flights
I am surprised people think this could affect the servers? If they scrape 300k prices from 25k pages a day, and the crawl runs every hour from 15-22 UTC, then that means the 25k is spread across 3.5k pages per crawl. Even if the crawl is aggressive and completes within a minute that is still only 58 QPS.
tmerr··on Parachute use to prevent death jumping from aircraft: random controlled trial (2018)
I think that is the joke
tmerr··on Run your own high-end cloud gaming service on EC2 (2015)
Another way to view it is that like electric vehicles cloud gaming is not a question of if, but when.

OnLive was released when most internet connections were still crummy, and before HD capable computers were embedded in TVs, smartphones and tablets. Despite all of that it still worked pretty well, but at that time I thought if I can run the game on my desktop why bother? Nowadays I don't have a gaming desktop capable of the newest games, so I think about it differently.

tmerr··on Happiness is more like poetry than algorithms
This post makes a good point about taking another person's idea of happiness too literally. The same could be said for other words describing internal experiences, like "consciousness". Where I lose the author is where he implies that thinking about it poetically will help get at the truth. It may be that when reading about a happy person's thought process you will absorb bits and pieces to make you happy as well. But it's not obvious at first glance. Is there evidence that reading self-help increases happiness in the long term (for some measure of happiness)? And how does that compare to spending your time reading studies about happiness?
tmerr··on Ask HN: How do you manage your personal budget?
I thought YNAB was nice when I used it. However not everyone feels comfortable entering bank credentials on a third party website. Also, not everyone wants to spend their time maintaining a stateful database. In my view historical transactions should be immutable, it's the interpretation of the data that I should be fiddling with by hand. I had some spare time so started working on my ideal budgeting tool that is more like a pipeline, that fetches the relevant account data, applies some scriptable transformations, then outputs a static website with charts & spending breakdown. Besides the architecture, the most important feature to me is that with some prodding it's capable of stitching together account statements into something more like a graph representation where there are no negative transfers, only movements from one named account to another. That allows for a more realistic birds-eye view of what's going on than one would get by viewing any account in isolation.

The project isn't quite where I want it to be, but it's getting close. The next thing to improve is support for banks that only allow users to download an N month window of transactions. Probably I will save each download to a timestamped file then merge them in-memory before the next stage in the pipeline. The source code for all of this is here: github.com/tmerr/bank_wrangler. I don't expect it to be useful for anyone else verbatim but it might give you some ideas or something to fork from. Disclaimer: banks might not be happy about web scraping / using undocumented APIs, so don't mindlessly fetch data without understanding that risk.

tmerr··on Show HN: Made this with my daughter to help kids ages 2 to 4 learn logic
I might be corrupted by programming because it doesn't bother me when I hear a vacuously true claim like "All flying horses are three-legged". My mental model corresponds to Python's definition of "all":

    def all(xs, predicate):
        for x in xs:
            if not predicate(x):
                return False
        return True
Similarly,

    def any(xs, predicate):
        for x in xs:
            if predicate(x):
                return True
        return False
You say "Ex falso quodlibet" which makes it sound like you believe such a system leads to contradictions, but this would come down to the choice of rewrite rules.

Example: a rewrite rule from "NOT all(xs, predicate)" to "any(xs, NOT predicate)" would lead to contradictions. Reasoning:

    A. all({}, predicate) is true by def of all
    B. any({}, NOT predicate) is false by def of any
    C. NOT all({}, predicate} is false follows from A
    D. applying the rewrite rule to C, any({}, NOT predicate) is true, which contradicts B.
However, in first-order-logic, that same rewrite rule is fine since sets always contain elements. It doesn't seem like to much work to go from Python-esque any and all to ∀ and ∃. For example "all(xs, predicate)" could be rewritten to: "¬P ∨ (∀ xs. predicate)" where P is a new proposition variable for whether xs contains elements. This relies on the semantics including short-circuiting evaluation (which may be cheating, I don't know).

Or maybe the above is what you already meant when you said "following the embeding..."?

tmerr··on Uber and Lyft Suggest the Days of Cheap Rides Could Be Over
Knowing the max someone was willing to pay could help an actor set their prices optimally where there is no competition. Where there is competition, setting price to the max someone is willing to pay could drop overall profits since a competitor would happily undercut. So it does not change the rules of the game.

Companies already price by predicting what people are willing to pay, by theory and experimentation. I wouldn't expect them having perfect information change much other than quicker convergence to the prices they would set anyway.

tmerr··on IBM casts doubt on Google's claims of quantum supremacy
This is an apples to orange comparison. Time complexities are with respect to some computational model. When not specified one typically assumes it's with respect to a deterministic turing machine or something a lot like it. Te model you are describing allows for unbounded parallel execution.
tmerr··on Next steps toward Go 2
Dry answer: In practice, you try to not mutate values you receive unless you know you own them. Usually it's clear from the type signature. If ints are sent over the channel, or structs each containing an int and string, you know you can do whatever you want with them. If it's ambiguous, the sender should document whether the receiver has ownership.

I think with 1 sender and 1 receiver the common solution in Rust is the same, to copy (or maybe move) the values sent... the type system provides some safety guarantees but I doubt it would be much different for performance. You wouldn't be able to send an immutable reference over a channel in Rust, since the compiler wouldn't know where the reference's lifetime ends. You could resort to refcounting, but you would probably only put in the effort if the data structure was large enough that copying was prohibitively expensive.

tmerr··on Practices for writing high-performance Go
Apples and oranges, though still an important lesson: many optimizations happen at the level of interactions between services. C++ is more micro-optimizable than Go, but it doesn't matter when the low hanging fruit has nothing to do with language (and I would argue this is more often than not).
tmerr··on Aphantasia: 'My mind's eye is blind'
While I wouldn't say my thought is strictly verbal, I often form understanding by letting my verbal stream of consciousness ruminate. I starts off as a technical almost schizophrenic rambling. Over time, as my stream of consciousness passes over the same ideas, they become coarser grained and easier to express to other people. Unfortunately easier != easy since I still need to translate from my idiosyncratic vocabulary to normal human speak.
tmerr··on Show HN: TabNine, an autocompleter for all languages
Not cool in my book regardless of legality. Rebranding it to tabnine-vim alone is confusing, since none of the legwork for vim support belongs to TabNine. At the very least the original copyright notice should be left intact in the README (iiuc this is required by GPLv3).
tmerr··on Pro-privacy search engine DuckDuckGo hits 30M daily searches, up 50% in a year
This is most likely a WiX configuration issue. The HTML source for https://www.catbartlett.com.au/ contains

  <meta name="robots" content="noindex"/>
Maybe try https://support.wix.com/en/article/enabling-search-engines-e... ?
tmerr··on Go hits the concurrency nail on the head
>Look back at this again if golang adds generics and other features that will change how code in it is written.

Absolutely. I was surprised by the number of proposed changes in Go 2, especially regarding error handling. Curious whether old code will be migrated or left behind.

>That's not an issue with Java, but how the GC is tuned

Good point, I haven't done much GC tweaking personally but that sounds worth learning more about. However I think language might have something to do with it: In Java almost everything is a referenceable object, while in Go one can put values directly inside structs. So Go has less work to do. Without that advantage I doubt it would seem competitive with Java GCs.

tmerr··on Go hits the concurrency nail on the head
Eh? I can't speak for all of Google but I like me some Go. It has a culture of minimalism both in language and code, which makes it easy to pick up and read others' work. I wouldn't recommend it for all problems, but it's at least nice for backend services.

Java is a victim of its own success: it has lived through style evolutions which have lead to fragmentation in the ecosystem. Some code uses mutable datastructures with for loops, others immutable datastructures with the stream API. Some code uses dependency injection, while some doesn't. As a result it takes more time to mentally calibrate to the style when pulling up a .java file. Another imperfection: GC pauses can cause request timeouts and are annoying to debug.

Python's not perfect either: aside from the obvious performance issues, use of the awkward retrofitted type system makes me wonder why a statically typed language isn't being used to begin with. The lack of good static analysis is especially annoying at Google where the tooling is quite good.

Just my 2c

tmerr··on Sourcegraph is now open source
Thanks for the clarification. The approach makes sense. I am actually impressed by the lack of NIH syndrome, it is rare to see open source software integrated so effectively. That is a +1 for protocol standardization
← PreviousPage 2 of 5Next →