<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: ah1508</title><link>https://news.ycombinator.com/user?id=ah1508</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 23 Apr 2026 02:40:58 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=ah1508" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by ah1508 in "Technical, cognitive, and intent debt"]]></title><description><![CDATA[
<p>So you need to find something better. In an article "How NASA writes 'perfect' software (1996) (fastcompany.com)" (comments on HN), the author explains that adding GPS support required 1500 pages of spec, and to avoid ambiguity the spec used pseudo code to describe expected features and behaviors.<p>If you invent a formal language that is easy to read and easy to write, it may look like Python... Then someone will probably write an interpreter.<p>We have many languages, senior people who know how to use them, who enjoy coding and who don't have a "lack of productivity" problem. I don't feel the need to throw away everything we have to embrace what is supposed to be "the future". And since we need good devs to read and LLM generated code how to remain a good dev if we don't write code anymore ? What's the point of being up to date in language x if we don't write code ? Remaining good at something without doing it is a mystery to me.</p>
]]></description><pubDate>Wed, 22 Apr 2026 18:51:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=47867682</link><dc:creator>ah1508</dc:creator><comments>https://news.ycombinator.com/item?id=47867682</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47867682</guid></item><item><title><![CDATA[New comment by ah1508 in "Martin Fowler: Technical, Cognitive, and Intent Debt"]]></title><description><![CDATA[
<p>Agree: house architects have their language (architectural plans) to translate people needs in non ambiguous informations that will be useful for those who build the house. Musician uses musical notes, physician uses schemas to represent molecules, etc... And programmers use programming languages, when we write a line of code we don't hope that the compiler will understand what we write.  Musical notes are a kind of abstraction: higher level than audio frequency but lower level than natural language. Same for programming language. Getting rid of all the formal languages take us back 2000 years ago.<p>Using a formal language also help to enter in a kind of flow. And then details you did not think about before using the formal language may appear. Everything cannot be prompted, just like Alex Honnold prepared his climbing of El Capitan very carefully but it's only when he was on the rock that he took the real decisions. Same for Lindbergh when he crossed the Atlantic. The map is not the territory.</p>
]]></description><pubDate>Wed, 22 Apr 2026 18:12:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47867186</link><dc:creator>ah1508</dc:creator><comments>https://news.ycombinator.com/item?id=47867186</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47867186</guid></item><item><title><![CDATA[New comment by ah1508 in "I fought my smartphone addiction"]]></title><description><![CDATA[
<p>I have a dumb phone, my last smartphone was a blackberry, 7 or 8 years ago. To people who ask me how can I "live" without a smartphone I answer: I have a computer.<p>Everyday I have access to my computer, and since nothing is absolutely urgent I can book train tickets from home, read hacker news from home, etc... I spend several hours per day at home with my laptop so when I am outside I don't need to be online.<p>I don't listen music when outside since I feel more connected to where I am (sea shore, forest, city, etc...) if I don't listen music.<p>I nearly don't need take pictures anymore and when I do I have a camera.<p>I never had an account on social medias and even if I did I would have disable all notifications.<p>No need for a GPS, usually I know where I am going and if I don't I check on a map before and remind the path (exit metro station, first on left, second on right, done), if I get lost I ask to someone, then happen a true connection to a human being. Road trips: paper maps, I traveled alone from San Diego to New-York like that, including reaching a specific address in Chicago and then in New-York with a paper map. And I like the voice of my wife telling me "in 2km we must take the D25 on the right" (names of secondary roads in France starts with D).<p>We have a sailboat so we need gps when we sail and we have a rugged tablet. We also use it at home as a remote control for the DAC with Qobuz and for video calls with family with Signal. A smartphone can makes sense in several occasion, like does out tablet, but I don't feel the need to have one (a kind of mini computer) in my pocket all the time.<p>And since urgent calls can only comes from my wife or from the school (we have a son), when we are together with our son we don't take our dumbphone (nokia 105) with us.<p>I think anyone can buy a dumbphone for 20$ or € and try for a week.</p>
]]></description><pubDate>Mon, 16 Mar 2026 22:28:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=47405863</link><dc:creator>ah1508</dc:creator><comments>https://news.ycombinator.com/item?id=47405863</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47405863</guid></item><item><title><![CDATA[New comment by ah1508 in "Ask HN: Data integrity in a decentralized trustless system"]]></title><description><![CDATA[
<p>You're right, we can get rid of the proxy. If the multiple API calls are made from the browser it is even more traceable, user can see these requests in the source code and from the devtools network console.<p>Each API has its database which contains the accesskey for each user, if this data is stolen the attacker can send HTTP POST requests to API with valid access key. To reject these forged request a code can be sent to the user in the invitation message while each database has a bcrypt hash  of the code along the access key. When an API receives a POST requests it can check if the code present in the request body matches with the hash he has in its database. So having the access key is not enough to send request, someone who steal a db cannot do anything with the data and cannot propagate false data to other APIs.</p>
]]></description><pubDate>Mon, 08 Sep 2025 11:10:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=45166887</link><dc:creator>ah1508</dc:creator><comments>https://news.ycombinator.com/item?id=45166887</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45166887</guid></item><item><title><![CDATA[New comment by ah1508 in "Ask HN: Data integrity in a decentralized trustless system"]]></title><description><![CDATA[
<p>Thanks for your answer.<p>Without the proxy the client would request a specific instance of the API (university 1, university 2, NGO 1, NGO 2), which then would be responsible for forwarding the data to the other. What if he changes the code and forward a false data:<p>user A votes for candidate X (HTTP POST request received by API deployed at university 1). API deployed at university A is compromised (by the university itself or not) and the information persisted in the DB is "user A votes for candidate Y". This information is then forwarded to other API.<p>If a proxy like NGINX is responsible for request forwarding the problem is solved (assuming that all parties trust nginx and its "mirror" module). <a href="https://nginx.org/en/docs/http/ngx_http_mirror_module.html" rel="nofollow">https://nginx.org/en/docs/http/ngx_http_mirror_module.html</a></p>
]]></description><pubDate>Sun, 07 Sep 2025 13:33:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=45158016</link><dc:creator>ah1508</dc:creator><comments>https://news.ycombinator.com/item?id=45158016</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45158016</guid></item><item><title><![CDATA[Ask HN: Data integrity in a decentralized trustless system]]></title><description><![CDATA[
<p>Hi,<p>I am working on a voting system for a local community, people will vote with their smartphone, tablet or computer. They previously receive a link to the vote form with an access key in the url.<p>Once someone has voted he cannot see is vote (like in real world polling station), which partly avoid the "cash for vote" problem. "Partly" because someone can still force someone else to vote like he wants. For this, my idea was to allow to vote multiple times but with idem-potency: only the first or the last vote is recorded in the database. "you can give me 5$ to vote like you want, once back home I vote for the one I want".<p>But since voters cannot check if their vote has been properly recorded they must trust the system.<p>Block chain that involves several parties (an NGO, an university, etc...) could be an idea but nothing prevent the API that receives the votes and insert records in the blockchain to insert fake data. Code audit (+ CI/CD audit + DNS records audit) can help.<p>My idea: each party (NGO 1, NGO 2, university 1, university 2, etc...) deploy the API and its database. The source code is obviously open.<p>Then, a proxy receives the HTTP request and forward them to each API. The goal is to reach eventual consistency.<p>Outages may occur, if API deployed at university 1 is unreachable some data will be missing in its database. A retry policy at the proxy level can help but only for short time network failure, not for several minutes or hours outage.<p>So differences between databases at the end of the election will probably happen and should be corrected. If consensus is met on chunks of data (example: 2/3 of the databases have the same data for each 1 hour period) then we can get reach eventual consistency.<p>The proxy becomes the weak link. Each party should must have access to its configuration for audit purpose and must also have access to the DNS records.<p>At the ends the voters don't have to understand all these details, they trust the system because they trust the parties who participates.<p>What do you think ?<p>Thanks !</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45157509">https://news.ycombinator.com/item?id=45157509</a></p>
<p>Points: 1</p>
<p># Comments: 6</p>
]]></description><pubDate>Sun, 07 Sep 2025 12:15:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=45157509</link><dc:creator>ah1508</dc:creator><comments>https://news.ycombinator.com/item?id=45157509</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45157509</guid></item><item><title><![CDATA[Ask HN: Data Driven Applications]]></title><description><![CDATA[
<p>Hi all,<p>First write after a lot of reads...<p>I've been using ORM for years in Java and C# and came to the conclusion that the only reason we use these tools are because most Java and c# developers think that the business logic applies on objects and not data.<p>So when they/we see a entity-relationship diagram we think that must reify these entities as classes. This results, most of the time, in classes with accessors (and nothing else, so OOP purist are also a little bit skeptical when they see theses classes without any behaviors). And then we need a ORM to map this classes with the tables.<p>But everyone else on the project (dba, domain experts) think that the business logic we write uses data stored in the db, not objects. And if we start thinking like them, the only thing we need is something to manipulate the data and apply business logic on it.<p>For example if I need to get a piece of information on a bank account to accept or reject a withdrawal:<p>C# with Dapper:<p><pre><code>  var accountInfo = (await dbConnection.QueryAsync<(double balance, int overdraft)>("select balance, overdraft from Account where id=@id", new {id = "..."})).SingleOrDefault();
</code></pre>
Java with Spring JdbcClient:<p><pre><code>  record AccountInfo(double balance, int overdraft){}
  Optional<AccountInfo> accountInfo = jdbClient.sql("select balance, overdraft from Account where id=?").params("...").query(AccountInfo.class).optional();
</code></pre>
No account entity class. Thanks to tuples and records, data are not excluded citizens in a Java or C# application.<p>with an orm (Java with JPA):<p><pre><code>  Account account = entityManager.find(Account.class, "..."); // Account is an entity class
</code></pre>
results in select * on the account table, what if account table has 50 columns...I cannot see any use cases that justify fetching all the columns for a given row. On the contrary, every step of every use case involves some data that must be fetched and records or tuples help to get them in a shape that is easy to use.<p>of course you can do that with JPA:<p><pre><code>  record AccountInfo(double balance, int overdraft){}
  Optional<AccountInfo> accountInfo = entityManager.createQuery("select balance, overdraft from Account where id=:id", Object[].class)
    .setParameter("id", "...")
    .getResultStream()
    .findAny()
    .map(a -> new AccountInfo(Double.parseDouble(a[0].toString()), Integer.parseInt(a[1].toString())));
</code></pre>
but that only proves that an ORM is an obstruction between the code and the data, not a helper that makes data retrieval easier. And if you do that all the time then you never retrieve your entities.<p>Same for lazy loading, which selects all the columns of the lazy loaded entity while you often need one or two properties.<p>Becoming an expert with an ORM consists in knowing how to use its leaky abstraction so the sql query is the one you would have written without orm. Not very fulfilling (there are tons of more useful things to learn for a programmer) nor useful for the project.<p>More over, the choice of a database is (or could be) guided by business requirements. If a project benefits from a MongoDB database the developer should have access to the mongodb language, if it needs a graph database the developers should have access to the its query language, etc... It also fosters good relations with the DBA (I can ask for help to write a query) while ORM and their sub-optimal queries breaks the confidence between developers and DBA.<p>Of course the DB may change in the future (but most of the time it is here to stay) and vendor specific syntax will then break, but running tests against the new db will show which queries must be adjusted. Markers could also be written for vendor specific queries: /<i>specific</i>/ at the end of the string so they are easy to find.<p>An ORM is useful if you reify the domain model in classes with behaviors or if you sell a product that must be database agnostic. But for most project it is not a requirement.<p>What to you think ? Thanks !</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=40515475">https://news.ycombinator.com/item?id=40515475</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 29 May 2024 18:56:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=40515475</link><dc:creator>ah1508</dc:creator><comments>https://news.ycombinator.com/item?id=40515475</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40515475</guid></item><item><title><![CDATA[New comment by ah1508 in "The Fight to Protect the Joshua Tree"]]></title><description><![CDATA[
<p>It is question asked by the soup thrown at paintings in museums recently. Like saying  "Why do you consider that paintings must be protected and not the possibility to keep living on this planet ?" At least it is how I interpret it.<p>It is about rules elaborated by an educated society. Not perfect rules, but at least rules that preserve what this society consider "important". Many example show that humans that live in a given place are very well aware of how important is a "healthy" ecosystem and give rights to "a good life" to this ecosystem: Wanganui river in New-Zeland, lac Erie in US (this attempt failed), constitution of Ecuador, etc... Elinor Ostrom wrote interesting about this rules (governing the commons), she had the nobel prize for that.</p>
]]></description><pubDate>Tue, 23 May 2023 14:43:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=36045045</link><dc:creator>ah1508</dc:creator><comments>https://news.ycombinator.com/item?id=36045045</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36045045</guid></item><item><title><![CDATA[New comment by ah1508 in "The Fight to Protect the Joshua Tree"]]></title><description><![CDATA[
<p>* OwNing something</p>
]]></description><pubDate>Tue, 23 May 2023 09:34:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=36041924</link><dc:creator>ah1508</dc:creator><comments>https://news.ycombinator.com/item?id=36041924</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36041924</guid></item><item><title><![CDATA[New comment by ah1508 in "The Fight to Protect the Joshua Tree"]]></title><description><![CDATA[
<p>Owing something usually give you the exclusive use of it but does not allow you to do what you want with it. You cannot walk in the street with a running chain saw even if you own it. Same thing with your car, you must respect a lot of rules. If you own a Picasso you cannot burn it. It is a political choice to let someone destroy a forest but not a Picasso.</p>
]]></description><pubDate>Tue, 23 May 2023 09:33:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=36041921</link><dc:creator>ah1508</dc:creator><comments>https://news.ycombinator.com/item?id=36041921</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36041921</guid></item></channel></rss>