<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: haikuginger</title><link>https://news.ycombinator.com/user?id=haikuginger</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 26 Apr 2026 06:42:18 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=haikuginger" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by haikuginger in "Python urllib CRLF injection vulnerability"]]></title><description><![CDATA[
<p>Python urllib3 maintainer here. urllib3 made a change to be more RFC-compliant in December, and which fixed this issue, but that change has not been released yet. We are in the process of looking into that.<p>I have verified that Requests, which uses us, appears to have its own handling, back at least to requests 2.0 (released in 2013) that prevents this when used directly as an abstraction layer on top of urllib3.</p>
]]></description><pubDate>Mon, 18 Mar 2019 18:24:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=19423643</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=19423643</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19423643</guid></item><item><title><![CDATA[New comment by haikuginger in "Researchers use Intel SGX to put malware beyond the reach of antivirus software"]]></title><description><![CDATA[
<p>The trust dynamic is the opposite of what you think - SGX doesn't enable an enclave that protects the machine owner from the code they execute; it enables an enclave that protects executed code from the machine owner.<p>The largest consumer application of this is DRM - modern UHD Blu-Ray playback on a PC requires a fully SGX-enabled backend; the negotiation to obtain playback keys and the decryption of the on-disc content is done in the SGX enclave.</p>
]]></description><pubDate>Wed, 13 Feb 2019 01:19:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=19149493</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=19149493</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19149493</guid></item><item><title><![CDATA[New comment by haikuginger in "Show HN: Inside Python Dict – an explorable explanation"]]></title><description><![CDATA[
<p>> So... Because lists are dynamically typed and heterogeneous, does that mean the underlying C is basically a contiguous segment of memory of python object references?<p>Yes. Every Python object is held by the interpreter as a pointer to a PyObject struct on the (C) heap.</p>
]]></description><pubDate>Tue, 25 Dec 2018 15:27:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=18757728</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=18757728</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=18757728</guid></item><item><title><![CDATA[New comment by haikuginger in "Google paid Andy Rubin $90M while keeping silent about a misconduct claim"]]></title><description><![CDATA[
<p>For fuck's sake, "being gay" isn't even one of those classes.</p>
]]></description><pubDate>Fri, 26 Oct 2018 02:37:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=18306345</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=18306345</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=18306345</guid></item><item><title><![CDATA[New comment by haikuginger in "Apple releases software fix for MacBook Pro slowdown"]]></title><description><![CDATA[
<p>The CPU itself had plenty of thermal headroom, but was overdrawing the power system - which then thermally throttled itself way more aggressively and in a less-controlled manner. The update changes the curve to ensure that the CPU doesn't draw more power than the power system can handle for extended periods. The CPU will still downclock itself as needed if it experiences its own thermal overload.</p>
]]></description><pubDate>Tue, 24 Jul 2018 19:59:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=17604408</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=17604408</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17604408</guid></item><item><title><![CDATA[New comment by haikuginger in "Sony Releases Stacked CMOS Sensor for Smartphones with 48 Effective Megapixels"]]></title><description><![CDATA[
<p>I'm curious to see how the "Quad Bayer" mosaic works out. Other manufacturers have tried novel filter patterns before, but nothing so far has really been able to compete.<p>Essentially, almost all digital cameras today use a planar CMOS sensor with alternating RGB-sensitive pixels, arrayed like so:<p><pre><code>    RGRGRGRG
    GBGBGBGB
    RGRGRGRG
    GBGBGBGB
</code></pre>
This pattern is not perfect, but is highly effective. Luma (color-independent) resolution is essentially equivalent to the actual number of pixels, while chroma (color-dependent) resolution is only slightly less - we essentially get one "real" point of color information at each intersection of four color pixels, because at each of those intersections we have one red, one blue, and two green pixels.<p>In other words, "the luma information we gather for a given color on a pixel of that color is immediately relevant to the effective pixel composed by it and its adjacent neighbors at each of its four corners". In this 8x8 Bayer pattern pixel grid with 64 real pixels, we get 49 effective chroma pixels; one for each intersection of 4 physical pixels.<p>In comparison, here's the pattern for "Quad Bayer":<p><pre><code>    RRGGRRGG
    RRGGRRGG
    GGBBGGBB
    GGBBGGBB
</code></pre>
I'm concerned that chroma resolution and overall color accuracy will be much lower with this pattern. Essentially, with the original Bayer demosaicing, you only need to sample from the four color pixels adjacent to each corner in order to get a bit of the three channels, and the pattern gives equal weight to both red and blue, while providing extra accuracy in the green channel that human vision is most sensitive to.<p>In comparison, as far as I can tell, a single "effective pixel" (one with information on all three channels) using the Quad Bayer pattern has to be made up of data from nine individual pixels. Additionally, when an effective pixel is centered on an actual pixel with either red or blue filters, that color is relatively dominant in the pixels considered - it'll be equally weighted with the green channel, and the opposing color will only make up 1/9 of the total signal composing that effective pixel. Effective pixels centered on green pixels will give equal weight to red and blue, with slightly over 5/9 of the weight given to the green channel.<p>Granted, the sensor should still be able to produce a full 48MP of luma resolution, but chroma detail will be much more "smeared" because of the wide area that has to be considered to get a full color pixel, and the more substantial overlap of that full color pixel with other full color pixels. Color accuracy will likely also be lower, because in effective pixels centered on red and blue pixels, only a single pixel of the opposing color will be used, which means that any noise in that channel will have an outsized impact on the overall color.<p>What this boils down to is that, when used as a 48MP sensor, this sensor will have entirely different imaging characteristics than a traditional Bayer imager, and that those characteristics will be highly dependent on how the output of this sensor is processed - which will be interesting in a world full of software highly optimized to demosaic Bayer-pattern images.<p>What's slightly more interesting is the high-sensitivity 12MP mode. Essentially, it's an attempt to reduce the impact of random noise in the image by adding together four pixels of each channel to produce a "superpixel" less impacted by noise overall. These superpixels can then be processed in a standard Bayer pattern as a 12MP effective image.<p>Thinking about it overall, though, I become more and more confused. In both of these modes, this pattern doesn't give us anything, really, that we can't already do using a Bayer filter.<p>Let B represent a sensor using a standard Bayer filter pattern, and let Q represent a sensor using this "Quad Bayer" pattern, where each of these patterns have a red pixel in the top-left corner.<p>Let any given effective pixel be represented by a 3-tuple of the form (R, G, B), where R, G, and B are the number of physical pixels sensitive to each of the red, green, and blue channels which compose that effective pixel.<p>Let f(p, w, h, s, i) be a function returning a two-dimensional matrix of all the effective pixels produced by a matrix of physical RGB pixels, laid out in pattern p, with actual pixel width and height w and h, where an effective pixel measures s actual pixels horizontally and vertically, and where an offset of i actual pixels in either vertical or horizontal directions produces the "next" pixel in that direction.<p>Thus, our standard Bayer pattern produces the following:<p><pre><code>    f(B, 4, 4, 2, 1) =>
    (
        ((1,2,1),(1,2,1),(1,2,1)),
        ((1,2,1),(1,2,1),(1,2,1)),
        ((1,2,1),(1,2,1),(1,2,1))
    )
</code></pre>
The 9-pixel-effective-pixel Quad Bayer pattern produces this:<p><pre><code>    f(Q, 4, 4, 3, 1) =>
    (
        ((4,4,1),(2,5,2)),
        ((2,5,2),(1,4,4))
    )
</code></pre>
Note that there are fewer effective pixels for the same total number of pixels - that's okay, though, because the number of effective pixels approaches the number of total pixels as the sensor scales in the X and Y dimensions - this very small hypothetical sensor doesn't benefit from that scale yet.<p>You can also see that each effective pixel is composed of a larger number of physical pixels - there's a tradeoff there, in that this means that overall, noise should have a smaller impact on the value of a given pixel, but there's a loss of resolution because those pixels are spread over a wider area.<p>This raises the question, "what if we do a 9-pixel effective pixel on a standard Bayer pattern?" Well, we get this:<p><pre><code>    f(B, 4, 4, 3, 1) =>
    (
        ((4,4,1),(2,5,2)),
        ((2,5,2),(1,4,4))
    )
</code></pre>
Interestingly, while the exact arrangements of the different color channels within the effective pixels are different, the total number of pixels of each channel remains <i>completely identical</i>, meaning that any given effective pixel should have identical noise characteristics to the Quad Bayer pattern. In fact, it's arguable that the Bayer pattern is better, because the color physical pixels are more evenly distributed around the effective pixel.<p>What if we do the high-sensitivity superpixel sampling? For the Quad Bayer pattern, it looks like this:<p><pre><code>    f(Q, 8, 8, 4, 2) =>
    (
        ((4,8,4),(4,8,4),(4,8,4)),
        ((4,8,4),(4,8,4),(4,8,4)),
        ((4,8,4),(4,8,4),(4,8,4))
    )
</code></pre>
And for the standard Bayer, like this:<p><pre><code>    f(B, 8, 8, 4, 2) =>
    (
        ((4,8,4),(4,8,4),(4,8,4)),
        ((4,8,4),(4,8,4),(4,8,4)),
        ((4,8,4),(4,8,4),(4,8,4))
    )
</code></pre>
Again, sampling in a similar pattern gives the same overall result. So, all else being equal, I'm not sure it makes sense.<p>Of course, there is the possibility that all else is not equal. Having multiple adjacent pixels of the same color could enable consolidating the signals of those pixels together earlier on in the image processing pipeline into an actual lower-resolution standard-Bayer signal. That could actually have real benefits if that early-stage signal combination results in a greater signal amplitude that drowns out noise.<p>Basically, this has all been kind of stream-of-consciousness and much longer than I originally planned, but here's the Cliff Notes from what I can tell.<p>In comparison to a Bayer sensor of the same pixel resolution...<p>Pros:<p>- (If implemented to take advantage, possibly) Ability to act as unified large pixels, increasing SNR at lower resolution settings<p>Cons:<p>- Less-fine maximum chroma resolution when all pixels are active</p>
]]></description><pubDate>Tue, 24 Jul 2018 14:45:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=17601471</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=17601471</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17601471</guid></item><item><title><![CDATA[New comment by haikuginger in "Losing 100 pounds in 276 days"]]></title><description><![CDATA[
<p>GP is saying that since there is no license, the code is copyrighted and there is no allowable use anyone could put it to. Therefore, since you own the copyright, and did not license the code to a third party, you could have the app using your code taken down from the App Store.<p>In contrast, if you had put an open source license on it, then anyone would be well within their rights (assuming the license allows it) to compile and release a version to whatever app store they want.</p>
]]></description><pubDate>Mon, 25 Jun 2018 17:56:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=17394304</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=17394304</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17394304</guid></item><item><title><![CDATA[New comment by haikuginger in "Dell XPS 13 Review from a lifelong Mac user"]]></title><description><![CDATA[
<p>Also, the Mac has a webcam instead of a nose hair viewer.</p>
]]></description><pubDate>Thu, 14 Jun 2018 18:19:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=17314015</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=17314015</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17314015</guid></item><item><title><![CDATA[New comment by haikuginger in "Netflix and Alphabet will need to become ISPs, fast"]]></title><description><![CDATA[
<p>Having wireless providers who are able to provide landline-level speeds means that many markets will go from having one or maybe two real ISP options to having three or four. Competition means that if the benefits of net neutrality are desirable, customers will prefer an ISP (wireless or otherwise) that provides those benefits.<p>Of course, most actual counterexamples to net neutrality are seen as positives (free Netflix or Hulu with usage not counted towards a data cap) rather than negatives, so it might not work out.</p>
]]></description><pubDate>Wed, 13 Jun 2018 16:31:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=17304608</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=17304608</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17304608</guid></item><item><title><![CDATA[New comment by haikuginger in "The End of Video Coding?"]]></title><description><![CDATA[
<p>I think it's much more arbitrary. Silverlight is on life support with support for EME/HTML5 video on most platforms, but Netflix has historically chosen to only support 1080p video on the first-party browser for any given OS (Chrome on ChromeOS, Safari on macOS, and IE/Edge on Windows).<p>EDIT: Looking at some stuff, it seems like Netflix might "trust" a first-party browser to select the highest-quality stream that it has hardware video decode support for. In comparison, it sounds like there are extensions that enable 1080p in Chrome by pushing it into the list of playlist options, but it can cause a serious performance hit by decoding on the CPU.</p>
]]></description><pubDate>Wed, 13 Jun 2018 16:06:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=17304346</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=17304346</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17304346</guid></item><item><title><![CDATA[New comment by haikuginger in "The End of Video Coding?"]]></title><description><![CDATA[
<p>Hardware implementations of codecs can be made that perform encode at low power if a certain level of quality/efficiency can be given up.<p>This is already the case for AVC/HEVC on mobile devices where storage and power considerations overwhelm the possible quality and coding efficiency advances that could be available from a highly-intensive, highly-tunable CPU-based encode.<p>In comparison, if you look at digital cinema, video is dumped as raw, unencoded pixels onto high-speed, high-power SSDs without any compression; this way, the original image can be manipulated losslessly before going through an intensive encode process for an optimal quality/space balance for end-user media delivery.</p>
]]></description><pubDate>Wed, 13 Jun 2018 15:19:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=17303899</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=17303899</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17303899</guid></item><item><title><![CDATA[New comment by haikuginger in "Researchers find IQ scores dropping since the 1970s"]]></title><description><![CDATA[
<p>When I read this one obvious explanation would be that IQ tests are designed with biased assumptions based on the cultural environments in which they were designed, and that those biased assumptions become more and more foreign as more generations pass since the test was originally designed.<p>See? I can speculate baselessly too.</p>
]]></description><pubDate>Wed, 13 Jun 2018 13:47:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=17302977</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=17302977</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17302977</guid></item><item><title><![CDATA[New comment by haikuginger in "Intel 28-core fantasy vs. AMD 32-core reality"]]></title><description><![CDATA[
<p>The way Oracle and VMWare bill is not bound by a technical limitation.</p>
]]></description><pubDate>Mon, 11 Jun 2018 16:05:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=17285429</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=17285429</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17285429</guid></item><item><title><![CDATA[New comment by haikuginger in "The Decline of the MacBook Pro"]]></title><description><![CDATA[
<p>Plus, many of the integrated apps actually do support the platforms he's using - for example, Google syncing with the macOS Contacts, Calendar, and Reminders applications.<p>Additionally, the macOS Messages app is way more capable than most people realize. Of course it supports iMessage, but it also supports sending native SMSs when used with a paired iPhone, either via relay or through WiFi calling with a supported carrier. It also has Hangouts chat support AFAICT, and support for any other (standardized, decentralized) XMPP/Jabber server.<p>And the majority of the other applications come preinstalled, but can just be deleted.</p>
]]></description><pubDate>Fri, 08 Jun 2018 16:45:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=17267226</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=17267226</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17267226</guid></item><item><title><![CDATA[New comment by haikuginger in "iOS 12 introduces new features to reduce interruptions and manage Screen Time"]]></title><description><![CDATA[
<p>Um. If you're setting an alarm in the built-in clock app, it definitely works when Do Not Disturb is turned on.</p>
]]></description><pubDate>Tue, 05 Jun 2018 03:21:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=17234726</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=17234726</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17234726</guid></item><item><title><![CDATA[New comment by haikuginger in "Apps for which macOS applies compatibillity fixes"]]></title><description><![CDATA[
<p>I believe the PC's point is that you're leaning on "never having heard" about Apple committing compatibility fixes before as justification for that not being something they would do, but prior to reading this article, you would have "never heard" about Apple applying compatibility hacks inside their own runtimes either.</p>
]]></description><pubDate>Mon, 21 May 2018 15:08:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=17118925</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=17118925</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17118925</guid></item><item><title><![CDATA[New comment by haikuginger in "Proxy, a new JavaScript ES6 feature"]]></title><description><![CDATA[
<p>This makes sense to me - it feels like an interface somewhere in the space of Python's properties (using the @property decorator), its descriptor protocol[0] with which properties are implemented, and its system of magic methods like __getattr__ and __getattribute__.<p>I am a bit intrigued about the way it's separated from the "nature" of the underlying Object though - in Python, we'd have a single canonical interface to the data, bound to the class in which the data was instantiated. Here, in ES6, it seems like the data might be attached to a base Object, and you could use that Object with any number of different proxies to provide polymorphic behavior.<p>Overall, these seem like very different philosophies of object-oriented programming. Which I guess makes sense given how the languages have evolved over time.<p>[0] <a href="https://docs.python.org/3/howto/descriptor.html" rel="nofollow">https://docs.python.org/3/howto/descriptor.html</a></p>
]]></description><pubDate>Fri, 18 May 2018 13:04:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=17101088</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=17101088</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17101088</guid></item><item><title><![CDATA[New comment by haikuginger in "New study quantifies Bitcoin’s ludicrous energy consumption"]]></title><description><![CDATA[
<p>The three largest pools combined hold over 50% of the total hashing power, and all are based in China.</p>
]]></description><pubDate>Thu, 17 May 2018 15:08:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=17091940</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=17091940</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17091940</guid></item><item><title><![CDATA[New comment by haikuginger in "The Evolution of C Programming Practices: A Study of Unix (2016) [pdf]"]]></title><description><![CDATA[
<p>As a C novice, this makes me wonder - wouldn't templates/macros be able to serve a similar purpose to goto statements if the goal is to avoid nested calls but still share code?<p>EDIT: Or, for that matter, trusting the compiler to inline small-enough function calls?</p>
]]></description><pubDate>Fri, 11 May 2018 13:21:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=17047097</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=17047097</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17047097</guid></item><item><title><![CDATA[New comment by haikuginger in "Memory efficiency of parallel IO operations in Python"]]></title><description><![CDATA[
<p>One of the benefits of async code as compared to threading is a much easier to reason about data model. In comparison to threading, where shared data structures can change at any time, async code an be assured of data consistency within a given "block" of code - whether that block is defined by being within a single callback function or by being between `await`s in Python.</p>
]]></description><pubDate>Tue, 13 Mar 2018 13:24:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=16575872</link><dc:creator>haikuginger</dc:creator><comments>https://news.ycombinator.com/item?id=16575872</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=16575872</guid></item></channel></rss>