<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: ryanmonroe</title><link>https://news.ycombinator.com/user?id=ryanmonroe</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 09 May 2026 17:17:55 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=ryanmonroe" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by ryanmonroe in "Ask HN: We just had an actual UUID v4 collision..."]]></title><description><![CDATA[
<p>The scenario in this post is that the first uuid was created one year before the duplicate uuid. That isn’t possible with v7</p>
]]></description><pubDate>Fri, 08 May 2026 18:40:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=48067057</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=48067057</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48067057</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Google's and Microsoft's AI Chatbots Refuse to Say Who Won the 2020 US Election"]]></title><description><![CDATA[
<p>> Other chatbots that WIRED tested, including OpenAI’s ChatGPT-4, Meta’s Llama, and Anthropic’s Claude, responded to the question about who won the 2020 election by affirming Biden’s victory.</p>
]]></description><pubDate>Fri, 07 Jun 2024 17:57:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=40611129</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=40611129</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40611129</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Polars"]]></title><description><![CDATA[
<p>DuckDB maintains a performance benchmark of open source database-like tools, including Polars and Pandas<p><a href="https://duckdblabs.github.io/db-benchmark/" rel="nofollow">https://duckdblabs.github.io/db-benchmark/</a></p>
]]></description><pubDate>Tue, 09 Jan 2024 00:17:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=38920530</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=38920530</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38920530</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Discovering copy-on-write in R"]]></title><description><![CDATA[
<p>Good article. Some smaller changes you could make to the final function: In the last line `as.data.frame(do.call(cbind, out_list))` is used to convert the list to a data.frame. Passing it to `cbind` converts the list to a matrix (i.e. combines it into one long vector internally), and then `as.data.frame` converts it back to a list (as noted in the article data frames are lists). Instead, you can use `as.data.frame(out_list)` to make your list a data frame directly, to avoid converting the list to a matrix and back to a list again. The `unlist(lapply(split(cvec, groups), aggfun))` is also doing a lot of work, if you don't mind using an external package*, `collapse::BY(cvec, groups, aggfun)` is much faster (doesn't require converting `groups` to factor, doesn't copy `cvec`'s contents like `split`).<p>Here's some completely not-the-point of the article code review since I can't help myself. If you can set up earlier steps give you a named list for `col_grouping`, and use `lapply`, the code is a little more concise:<p><pre><code>    efficient_flow_agg <- function(dat, col_grouping, gpcol_name="GroupMembership") {
      make_postproc <- function(gp, groups) {
        gp$preproc(dat[gp$which_cols]) |>
          lapply(collapse::BY, groups, gp$aggfun) |>
          gp$postproc()
      }
      col_grouping |>
        lapply(make_postproc, groups = dat[[gpcol_name]]) |>
        as.data.frame()
    }
</code></pre>
* I had previously written here that `tapply` is probably faster, but apparently `tapply` does exactly `unlist(lapply(split(x, g), f)))` anyway? wtf R. Strange there's not something like `collapse::BY` in base R.</p>
]]></description><pubDate>Thu, 21 Dec 2023 18:03:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=38724081</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=38724081</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38724081</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Employees Are Accepting Lower Pay in Order to Work Remotely"]]></title><description><![CDATA[
<p>I think “pay” is commonly understood to mean monetary, not adjusted for location, risk, time, or transportation cost, and understood to be stated in terms of total rather than hourly. Saying people are accepting lower pay to work remotely seems like a pretty objective way of describing the decision being made. What you’re describing are the motives, the fact that pay is not the whole picture. I don’t think we need to recast what “pay” means to understand that there’s more to be considered than just that.</p>
]]></description><pubDate>Wed, 13 Jul 2022 12:17:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=32081601</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=32081601</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32081601</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Google mandates workers back to Silicon Valley, other offices from April 4"]]></title><description><![CDATA[
<p>The options are not "must walk to this place at this specific time" and "never do any exercise or take a break during your day". This type of dichotomy is drawn in so much of the back-to-office discussion. Mandating something that happens to involve, in part, something that <i>could be</i> beneficial, is not in itself an argument for the mandate when you can take that part by itself anyway. Like, even if it's a zoom meeting you could, at that same exact time right before the meeting, take a walk for five minutes. The mandate isn't helping you out in that respect.</p>
]]></description><pubDate>Thu, 03 Mar 2022 02:13:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=30536285</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=30536285</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30536285</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Tech Companies Face a Fresh Crisis: Hiring"]]></title><description><![CDATA[
<p>If you pay well and post a junior level position on LinkedIn with the salary range included, there is approximately 0% chance “no one applies”</p>
]]></description><pubDate>Thu, 24 Feb 2022 00:09:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=30448562</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=30448562</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30448562</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Tech Companies Face a Fresh Crisis: Hiring"]]></title><description><![CDATA[
<p>How can you write an entire article about how hiring is difficult in some field, and only mention salary in a short parenthetical with no concrete numbers? (“salaries have risen in some cities by as much as 10 percent”)</p>
]]></description><pubDate>Thu, 24 Feb 2022 00:06:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=30448532</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=30448532</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30448532</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Julia Macros for Beginners"]]></title><description><![CDATA[
<p>I hadn't thought of that tradeoff. After testing just now, if you have a column named `.data` or `.env` those constructs work as if there was no such column, and actually in that case `mutate(df, b = .data + 1)` is an error.<p>Personally I'll happily take not being able to use those as column names if it means I can avoid always typing : before every in-data variable, but your comment gave me a better understanding of why it would be bad for some other person or scenario, perhaps where short term ease-of-use is lower on the list of priorities.<p>For your second example, it doesn't come up in R because a data frame column cannot be a function. Columns must be vectors (including lists) and you could have a vector where one or all elements are functions, but the column itself cannot not be a function (functions are not vectors), so there's no ambiguity there. To call a function stored in your data frame you'd have to access an element of the column, and any access method, e.g. `[[` or `$` would make the resulting set of characters invalid as the name of an object (without backticks, which would then disambiguate the intent)<p><pre><code>    df <- tibble(x = list(function(x) x + 1))
    df %>% 
      mutate(y = x[[1]](3))
</code></pre>
Separate from dplyr, in R when you use `(` to call a function it searches only for functions by that name.<p><pre><code>    log <- 3
    log(1)
    # 0

    frog <- 3
    frog(3)
    # Error in frog(3) : could not find function "frog"
    
    log <- function(x) x^2
    log(1)
    # 1</code></pre></p>
]]></description><pubDate>Wed, 26 Jan 2022 20:43:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=30091495</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=30091495</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30091495</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Julia Macros for Beginners"]]></title><description><![CDATA[
<p>To reference variables in the outer scope, you would do<p><pre><code>    mutate(df, b = .env$a + 1)
</code></pre>
And if you have a string (contained in a_var) which identifies a variable you can do<p><pre><code>    mutate(df, b = .data[[a_var]] + 1)
</code></pre>
You could argue these feel clumsy, but I wouldn’t say it’s “hard” to do either of these things with dplyr.</p>
]]></description><pubDate>Wed, 26 Jan 2022 16:10:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=30087252</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=30087252</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30087252</guid></item><item><title><![CDATA[New comment by ryanmonroe in "A Living Wage for REI Greenvests"]]></title><description><![CDATA[
<p>What are the wages now? What is the wage you want? Seems odd to ask people to sign a petition for higher pay without these basic details.</p>
]]></description><pubDate>Tue, 25 Jan 2022 20:19:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=30077473</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=30077473</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30077473</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Using a mild Twitter addiction to get things done"]]></title><description><![CDATA[
<p>Can do this in iOS also, Settings > Focus</p>
]]></description><pubDate>Mon, 03 Jan 2022 14:25:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=29781045</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=29781045</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29781045</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Xerox scanners/photocopiers randomly alter numbers in scanned documents (2013)"]]></title><description><![CDATA[
<p>The discussion around zoom becomes a lot less ridiculous when you see the video still they wanted to zoom in on. The prosecution wanted to zoom in in this video for the jury and  argue Kyle was raising his gun and not his arm at that point in time. With this resolution, and the importance of that question to the trial, it makes more sense that the judge was being very cautious about zooming in.<p><a href="https://i.imgur.com/pTY58LW.jpeg" rel="nofollow">https://i.imgur.com/pTY58LW.jpeg</a></p>
]]></description><pubDate>Mon, 15 Nov 2021 12:37:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=29226628</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=29226628</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29226628</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Ask HN: Anyone else seeing people averaging percentiles?"]]></title><description><![CDATA[
<p>Not sure it’s possible to know the answer without more context. What do they use the averages for? What do you think they should do instead and why is it better?</p>
]]></description><pubDate>Tue, 14 Sep 2021 02:09:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=28519381</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=28519381</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28519381</guid></item><item><title><![CDATA[New comment by ryanmonroe in "The number of legal chess positions estimated at 4.5x10^44 – proof games wanted"]]></title><description><![CDATA[
<p>Being in check means it’s your move and the pieces are positioned so that if it was your opponent’s move they could capture your king. So, to “remain in check” would mean to make a move which still allows your opponent to capture your king. If this were allowed the opponent would just capture your king and you would lose. Instead, the rules of chess require you to “get out of check”, i.e. make a move which prevents your opponent from capturing your king. If there is no such move you are said to be in “checkmate” and you lose.</p>
]]></description><pubDate>Sun, 05 Sep 2021 19:27:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=28427032</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=28427032</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28427032</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Becoming a Chess Grandmaster"]]></title><description><![CDATA[
<p>Even if it were possible, I don't think there's a way to do it in a way that would make any sense. Would we set up an AI now and then forever use the same one? In that case people will learn any small quirks of the AI and optimize against those vs human play, fundamentally changing the game. If the proposal is to be constantly updating this AI, well even in that case I'd argue that people will over time identify any small difference between machine and human play, but in that case people will also be upset that someone got normed against the "easy" AI, or against the AI that didn't know about the dumdenmorph-joyce-allens countergambit yet, etc.</p>
]]></description><pubDate>Mon, 26 Jul 2021 15:18:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=27960471</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=27960471</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27960471</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Becoming a Chess Grandmaster"]]></title><description><![CDATA[
<p>The problem is that humans don't play that way, by evaluating a tree a few moves ahead and selecting from that. Humans use conscious heuristics and unconscious intuitions to make their moves that would be hard for a computer to mimic. It's easy to make a machine complete a task better than a human would, much harder to make it convincingly human-like in its behavior. Consider the task of picking apples from a tree. You could easily make a machine to do that. But what if you had to make a machine that to an onlooker (who couldn't see the robot's "face", let's say) would appear to be a human picking apples from a tree? And these people aren't just glancing at the apple-picking robot, they're spending their entire lives painstakingly analyzing the movements of this machine and trying their hardest to predict how they will move next. And the people doing this are self-selected to be the best performers in the world at predicting the moves of this apple-picking robot. Think you can make the apple-picking robot that will fool these people??<p>There are many chess AIs on chess.com specifically designed to play "like" a specific grandmaster or well known chess streamer. I don't think any titled player would not be able to guess they're playing a computer if they played a few games against the AI without being told. It's very well known that computer moves are very different from human moves, even the ones specifically designed to represent a human.</p>
]]></description><pubDate>Mon, 26 Jul 2021 15:03:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=27960266</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=27960266</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27960266</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Use the 'tail' command to monitor everything"]]></title><description><![CDATA[
<p>Or hit v after Ctrl-C to open it in a full editor (vi or whatever editor you have as $VISUAL). Quitting the editor resumes tailing.</p>
]]></description><pubDate>Mon, 12 Jul 2021 22:55:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=27816045</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=27816045</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27816045</guid></item><item><title><![CDATA[New comment by ryanmonroe in "USC professor’s DIY online teaching hack to engage students goes viral (2020)"]]></title><description><![CDATA[
<p>“It was under $60 at the hardware store”<p>So this isn’t actually any cheaper than what I would think of as the standard solution, which is to buy A drawing tablet (which also conveniently doesn’t take up a ton of space in your living area)<p>Name brand (Wacom) drawing tablet for $60:<p><a href="https://smile.amazon.com/dp/B07S1RR3FR/ref=cm_sw_r_cp_api_glt_fabc_Q89WZHMD71EFRK6CMDEJ" rel="nofollow">https://smile.amazon.com/dp/B07S1RR3FR/ref=cm_sw_r_cp_api_gl...</a></p>
]]></description><pubDate>Mon, 21 Jun 2021 12:20:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=27578442</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=27578442</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27578442</guid></item><item><title><![CDATA[New comment by ryanmonroe in "Show HN: I discovered a trading algorithm that returns ~24.85% annually"]]></title><description><![CDATA[
<p>The wording in the original comment was too strong, I've edited it. It's probably not best to consider it a plain "error" since this calculation is actually a typical one provided in finance. It's just that you usually look at other stats too rather than <i>just</i> this one, which gives you an idea about its accuracy wrt realized return e.g. Sharpe, Max Drawdown, Skew, Kurtosis</p>
]]></description><pubDate>Sun, 06 Jun 2021 21:27:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=27416497</link><dc:creator>ryanmonroe</dc:creator><comments>https://news.ycombinator.com/item?id=27416497</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27416497</guid></item></channel></rss>