<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: scurvy_steve</title><link>https://news.ycombinator.com/user?id=scurvy_steve</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 25 Jun 2026 22:46:09 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=scurvy_steve" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by scurvy_steve in "The costs of microservices (2020)"]]></title><description><![CDATA[
<p>I work on low code cloud ETL tools. We provide the flexibility for the customer to do stupid things. This means we have extremely high variance in resource utilization.<p>An on demand button press can start a processes that runs for multiple days, and this is expected. A job can do 100k API requests or read/transform/write millions of records from a database, this is also expected. Out of memory errors happen often and are expected. It's not our bad code, its the customer's bad code.<p>Since jobs are run as microservices on isolated machines, this is all fine. A customer(or multiple at once) can set up something badly, run out of resources, and fail or go really slow and nobody is effected but them.</p>
]]></description><pubDate>Mon, 30 Oct 2023 18:11:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=38073345</link><dc:creator>scurvy_steve</dc:creator><comments>https://news.ycombinator.com/item?id=38073345</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38073345</guid></item><item><title><![CDATA[New comment by scurvy_steve in "Stealing OAuth tokens of Microsoft accounts via open redirect in Harvest App"]]></title><description><![CDATA[
<p>First, just don't enable implicit grant. That makes it a lot harder to screw up.<p>State is for preventing CSRF, not transferring data. Don't abuse state, it's wrong.<p>Use your own authorize url, add an encrypted cookie and redirect to the real one. Even if the cookie is encrypted, only put some kind of session/cache key in it, don't actually send "info". 
Read cookie in callback then delete it.</p>
]]></description><pubDate>Sun, 22 Oct 2023 18:30:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=37977844</link><dc:creator>scurvy_steve</dc:creator><comments>https://news.ycombinator.com/item?id=37977844</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37977844</guid></item><item><title><![CDATA[New comment by scurvy_steve in "Stealing OAuth tokens of Microsoft accounts via open redirect in Harvest App"]]></title><description><![CDATA[
<p>They are adding a second redirect on top and sticking it into the state parameter, presumably so they can redirect to anywhere. 
so the flow wanted was<p>Go the some harvest authorize url,<p>That redirects to the Microsoft authorize url with redirect_uri=registered_uri and state=some_encoded_final_uri,<p>user enters credentials,<p>redirect to a registered uri<p>read state parameter and redirect to uri encoded in state.<p>This exploit still redirect to an authorized uri, but that endpoint then reads the the state parameter and happily forwards the response/token.<p>3 mistakes in this, abusing state, not encypting and validing state if you are going to abuse it. Enabling implicit grant(even if they needed it, should have made a second registration with limited uses).</p>
]]></description><pubDate>Sun, 22 Oct 2023 17:30:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=37977353</link><dc:creator>scurvy_steve</dc:creator><comments>https://news.ycombinator.com/item?id=37977353</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37977353</guid></item><item><title><![CDATA[New comment by scurvy_steve in "The sad history of Unicode printf-style format specifiers in Visual C++ (2019)"]]></title><description><![CDATA[
<p>It uses what's sometimes referred to as WTF-16. It's UTF-16 but with no actual guarantee that its well formed(i.e. invalid surrogate pairs).</p>
]]></description><pubDate>Thu, 01 Dec 2022 14:09:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=33816388</link><dc:creator>scurvy_steve</dc:creator><comments>https://news.ycombinator.com/item?id=33816388</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33816388</guid></item><item><title><![CDATA[New comment by scurvy_steve in "How to Design Better APIs"]]></title><description><![CDATA[
<p>- Always use a response envelope<p>I would mostly agree except in 1 case, streaming data is easier without an envelope. Making some array inside an envelope stream is usually more code and messier than just getting some metadata out of header. So if you have something like data integration endpoints and you expect someone could pull many megs of records, consider no envelope.</p>
]]></description><pubDate>Sat, 12 Mar 2022 15:54:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=30652189</link><dc:creator>scurvy_steve</dc:creator><comments>https://news.ycombinator.com/item?id=30652189</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30652189</guid></item><item><title><![CDATA[New comment by scurvy_steve in "The WebSocket Handbook"]]></title><description><![CDATA[
<p>I have an app based around some long running resource intensive processes that run on scalable microservices. So you click a button and may have to wait 5+ minutes before you get a response. Websockets let you do notifications and make everything async. They've served me well for request/response that might take 3-30 minutes.</p>
]]></description><pubDate>Tue, 11 Jan 2022 20:52:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=29897682</link><dc:creator>scurvy_steve</dc:creator><comments>https://news.ycombinator.com/item?id=29897682</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29897682</guid></item></channel></rss>