<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: dti</title><link>https://news.ycombinator.com/user?id=dti</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 30 Apr 2026 02:58:46 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=dti" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[Java StringTemplates and logging, or why f-strings are not enough]]></title><description><![CDATA[
<p>Article URL: <a href="https://dmti.substack.com/p/java-stringtemplates-and-logging">https://dmti.substack.com/p/java-stringtemplates-and-logging</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=39100469">https://news.ycombinator.com/item?id=39100469</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 23 Jan 2024 07:16:25 +0000</pubDate><link>https://dmti.substack.com/p/java-stringtemplates-and-logging</link><dc:creator>dti</dc:creator><comments>https://news.ycombinator.com/item?id=39100469</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39100469</guid></item><item><title><![CDATA[New comment by dti in "Towards Modern Development of Cloud Applications (2023)"]]></title><description><![CDATA[
<p>I see I may have been unclear — I was surprised they don't use protobufs (which one should be able to pass as-is without serialization to the locally-deployed component), but apparently using a custom optimized format for non-local calls is the primary motivation (not local calls with grpc requiring serialization — that shouldn't be the case).<p>However, now that I think again about the serialization format choice, it may result in a limitation on the size of monoliths (in terms of the number of people / teams contributing to it). When the number of contributors grow, the likelihood of bugs in a binary grows, and teams adopt more elaborate qualification processes, and also become much more sensitive to binary rollbacks as a remedy to discovering bugs in prod. Then they could institute policies like all changes should be protected by a feature flag (aka an experiment).<p>If non-versioned serialization format is used, that means that the platform cannot possibly rollback a single component. However, using versioned serialization won't be enough on its own to support per-component rollbacks — it at least requires independent component qualification (where each component is tested against "stable" versions of other components) + rollback testing to make rollbacks A2 -> B2 to A2 -> B1 safe.<p>I wonder if it's an explicit design choice — i.e., whether Service Weaver supports monoliths up to a certain organizational size (and then you should split into separate service weaver apps)?</p>
]]></description><pubDate>Sun, 14 Jan 2024 17:41:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=38992441</link><dc:creator>dti</dc:creator><comments>https://news.ycombinator.com/item?id=38992441</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38992441</guid></item><item><title><![CDATA[New comment by dti in "Towards Modern Development of Cloud Applications (2023)"]]></title><description><![CDATA[
<p>> trying to hide distribution<p>The paper unfortunately hides that in reality you have to pass a context object in your RPC calls, hence there is no ambiguity whether you are calling a potentially remote object.<p>It's in the example on the project home page: <a href="https://serviceweaver.dev/" rel="nofollow">https://serviceweaver.dev/</a><p><pre><code>  // The "RPC" handler
  func (adder) Add(_ context.Context, x, y int) (int, error) {
      return x + y, nil
  }

  // The call-site
  var adder Adder = ... // See documentation
  sum, err := adder.Add(ctx, 1, 2)</code></pre></p>
]]></description><pubDate>Sun, 14 Jan 2024 15:30:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=38991260</link><dc:creator>dti</dc:creator><comments>https://news.ycombinator.com/item?id=38991260</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38991260</guid></item><item><title><![CDATA[New comment by dti in "Towards Modern Development of Cloud Applications (2023)"]]></title><description><![CDATA[
<p>~2.5x when not co-located isn't bad either; and the beauty of it is that the programming model lets the runtime system perform these relocations, based on the application profile.</p>
]]></description><pubDate>Sun, 14 Jan 2024 15:27:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=38991237</link><dc:creator>dti</dc:creator><comments>https://news.ycombinator.com/item?id=38991237</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38991237</guid></item><item><title><![CDATA[New comment by dti in "Towards Modern Development of Cloud Applications (2023)"]]></title><description><![CDATA[
<p>Regarding the comparison with RMI, the authors did mention it:<p>> Java RMI use a programming model similar to ours but suffered from a number of technical and organizational issues [58] and don’t fully address C1-C5 either<p>Apart from that, it looks like Java RMI allowed remote objects returning other remote objects, rather than only immutable values. With that you could abuse it by making a call to one java.rmi.Remote object, getting another java.rmi.Remote object in response, then passing it around, and then finding a totally different subsystem suddenly make RPCs (however, such abuse probably would be easy to spot in a code review, as it requires a modification to the remote object interface).<p>---<p>The authors also acknowledge that it doesn’t solve the distributed computing challenges:<p>> our proposal does not solve fundamental challenges of distributed systems [53, 68, 76]. Application developers still need to be aware that components may fail or experience high latency<p>I think at least in terms of latencies their platform can occasionally inject latencies into some percentage of the tasks, then verifying if any alerts fire, if there is a fear the components become dependent on a certain deployment shape (within a cluster).</p>
]]></description><pubDate>Sun, 14 Jan 2024 14:59:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=38990960</link><dc:creator>dti</dc:creator><comments>https://news.ycombinator.com/item?id=38990960</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38990960</guid></item><item><title><![CDATA[New comment by dti in "Towards Modern Development of Cloud Applications (2023)"]]></title><description><![CDATA[
<p>Looks interesting.<p>> The call to hello.Greet looks like a regular method call<p>That’s a departure from how components interact in boq — an internal and widely used production platform that has _some_ of the features from the paper. There component interfaces _are_ RPC interfaces (e.g., Stubby / gRPC + protocol buffers), and interaction between them is possible exclusively through the component interfaces. Hence it’s very explicit at the call site that an RPC is being made (which could happen to execute locally with all the standard RPC functionality — context and deadline propagation, etc.).<p>RPCs looking like regular method calls sound a bit scary (easy to miss in code reviews); I wonder if enforced naming conventions + IDE + code review tool support would be enough.<p><i>Edit:</i> it seems to require to pass a context object, so the readers won't confuse it with a local call (from <a href="https://serviceweaver.dev/" rel="nofollow">https://serviceweaver.dev/</a>):<p><pre><code>  sum, err := adder.Add(ctx, 1, 2)

</code></pre>
---<p>Also, the paper claims that most benefits come from a non-versioned serialization format:<p>> Most of the performance benefits of our prototype come from its use of a custom serialization format designed for non-versioned data exchange [...]<p>However, I don’t understand why local RPC calls have to serialize protocol buffer messages — can’t they already pass them as-is to the local handler?<p>(disclaimer: a googler, no internal knowledge on ServiceWeaver)</p>
]]></description><pubDate>Sun, 14 Jan 2024 14:53:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=38990916</link><dc:creator>dti</dc:creator><comments>https://news.ycombinator.com/item?id=38990916</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38990916</guid></item><item><title><![CDATA[New comment by dti in "I want an iPhone Mini-sized Android phone"]]></title><description><![CDATA[
<p>> it will have no chance in h* to last through the day<p>My previous Xperia Compact, which is of about the same dimensions as mini, survived for a couple of days easily when new.<p>> iPhone Mini has been weak in battery department [1]<p>The article says "solid battery life", which matches my experience with 13 mini.</p>
]]></description><pubDate>Tue, 17 May 2022 18:51:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=31414886</link><dc:creator>dti</dc:creator><comments>https://news.ycombinator.com/item?id=31414886</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31414886</guid></item><item><title><![CDATA[New comment by dti in "I want an iPhone Mini-sized Android phone"]]></title><description><![CDATA[
<p>> are easy to use one-handed without dropping<p>Not necessarily.<p>I bought an iPhone Mini expecting that it'd be comfortable to use in a single hand like my previous Xperia phone of exactly the same width.<p>Unfortunately, it is not the case: the iPhone screen is very close to the bottom edge, and to switch apps you need to move your thumb to the very edge and then swipe up, which is rather uncomfortable (or requires holding your phone very low, in which case, you can't reach the top of the screen without changing your grasp). Similarly, the keyboard is rather low and uncomfortable to use from the otherwise most natural single-handed grasp.</p>
]]></description><pubDate>Tue, 17 May 2022 18:40:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=31414771</link><dc:creator>dti</dc:creator><comments>https://news.ycombinator.com/item?id=31414771</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31414771</guid></item><item><title><![CDATA[New comment by dti in "Improving GitHub Code Search"]]></title><description><![CDATA[
<p>Also don't know how search works there, but the cross-reference functionality is powered by an open-source Kythe project: <a href="https://kythe.io/" rel="nofollow">https://kythe.io/</a></p>
]]></description><pubDate>Wed, 08 Dec 2021 21:39:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=29490872</link><dc:creator>dti</dc:creator><comments>https://news.ycombinator.com/item?id=29490872</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29490872</guid></item><item><title><![CDATA[New comment by dti in "Improving GitHub Code Search"]]></title><description><![CDATA[
<p>You can try it yourself, e.g., the instance the Android team uses: <a href="https://cs.android.com/" rel="nofollow">https://cs.android.com/</a></p>
]]></description><pubDate>Wed, 08 Dec 2021 20:06:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=29489751</link><dc:creator>dti</dc:creator><comments>https://news.ycombinator.com/item?id=29489751</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29489751</guid></item><item><title><![CDATA[New comment by dti in "Distribution of JVM Desktop Applications"]]></title><description><![CDATA[
<p>There is a series of JEPs that add to OpenJDK a similar mechanism, class data sharing:<p>- <a href="https://openjdk.java.net/jeps/310" rel="nofollow">https://openjdk.java.net/jeps/310</a>
- <a href="https://openjdk.java.net/jeps/341" rel="nofollow">https://openjdk.java.net/jeps/341</a>
- <a href="https://openjdk.java.net/jeps/350" rel="nofollow">https://openjdk.java.net/jeps/350</a></p>
]]></description><pubDate>Mon, 15 Feb 2021 10:54:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=26141472</link><dc:creator>dti</dc:creator><comments>https://news.ycombinator.com/item?id=26141472</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26141472</guid></item><item><title><![CDATA[New comment by dti in "Introducing Semgrep and r2c"]]></title><description><![CDATA[
<p>Is Semmle, offering CodeQL language and LGTM service, and recently acquired by Github, doing a similar thing (<a href="https://semmle.com/" rel="nofollow">https://semmle.com/</a>)? If so, how does Semgrep compare to CodeQL?<p><i>Edit:</i> There is a help entry: <a href="https://semgrep.dev/docs/faq/#how-is-semgrep-different-from-codeql" rel="nofollow">https://semgrep.dev/docs/faq/#how-is-semgrep-different-from-...</a></p>
]]></description><pubDate>Thu, 29 Oct 2020 17:58:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=24933202</link><dc:creator>dti</dc:creator><comments>https://news.ycombinator.com/item?id=24933202</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24933202</guid></item></channel></rss>