<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: keosak</title><link>https://news.ycombinator.com/user?id=keosak</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 19 Aug 2026 16:54:17 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=keosak" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by keosak in "AI;DR (AI; Didn't Read)"]]></title><description><![CDATA[
<p>> We absolutely care about what the team members want , like, hate etc.<p>Do the people above you in management care as much? It's the top levels of management that decide hiring, firing and budgets.</p>
]]></description><pubDate>Tue, 18 Aug 2026 08:15:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=49342877</link><dc:creator>keosak</dc:creator><comments>https://news.ycombinator.com/item?id=49342877</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49342877</guid></item><item><title><![CDATA[New comment by keosak in "Upsert in SQL"]]></title><description><![CDATA[
<p>INSERT ... ON CONFLICT has a problem with CHECK constraints. The constraint must be satisfied in the INSERT tuple even if the row already exists and UPDATE will be executed. I recently dealt with this at work and the resulting CTE query was very similar to MERGE, except MERGE has better syntax.</p>
]]></description><pubDate>Mon, 25 Sep 2023 17:50:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=37647845</link><dc:creator>keosak</dc:creator><comments>https://news.ycombinator.com/item?id=37647845</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37647845</guid></item><item><title><![CDATA[New comment by keosak in "New UUID Formats"]]></title><description><![CDATA[
<p>They don't <i>utterly</i> destroy performance, but there is some hit if you use UUID v4 random values due to database index scattering. That's why this new proposal exists. It adds new versions of UUID that are mostly incrementing in time, so that they group better.</p>
]]></description><pubDate>Mon, 13 Jun 2022 08:36:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=31722775</link><dc:creator>keosak</dc:creator><comments>https://news.ycombinator.com/item?id=31722775</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31722775</guid></item><item><title><![CDATA[New comment by keosak in "Understanding UUIDs, ULIDs and string representations"]]></title><description><![CDATA[
<p>It is a hash, but in the format of a UUID. This is useful if you are storing it in the database, since there is usually a dedicated data type for UUIDs. Also, you can mix UUID v4 and v5 IDs freely.</p>
]]></description><pubDate>Wed, 05 Jan 2022 08:39:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=29806593</link><dc:creator>keosak</dc:creator><comments>https://news.ycombinator.com/item?id=29806593</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29806593</guid></item><item><title><![CDATA[New comment by keosak in "Django vs. Flask"]]></title><description><![CDATA[
<p>Extensions can register themselves with the Flask application object, so you can look there: current_app.extensions['whatever']. However, it is not specified what exactly this dictionary contains, so eg. SQLAlchemy puts a custom State class there. You can still get the extension object out of it, it's just that there is no common convention.<p><a href="http://flask.pocoo.org/docs/0.12/api/#flask.Flask.extensions" rel="nofollow">http://flask.pocoo.org/docs/0.12/api/#flask.Flask.extensions</a><p><a href="https://github.com/mitsuhiko/flask-sqlalchemy/blob/master/flask_sqlalchemy/__init__.py#L608" rel="nofollow">https://github.com/mitsuhiko/flask-sqlalchemy/blob/master/fl...</a></p>
]]></description><pubDate>Tue, 04 Jul 2017 09:27:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=14694654</link><dc:creator>keosak</dc:creator><comments>https://news.ycombinator.com/item?id=14694654</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14694654</guid></item><item><title><![CDATA[New comment by keosak in "Guido van Rossum: The Theory of Type Hinting for Python 3.5"]]></title><description><![CDATA[
<p>The "documented information" you want is mentioned in the article. Guido links to a blog post by Jeremy Siek and a paper by Vitousek, Siek and Baker. Read the blog post, section "Why subtyping does not work".<p><a href="http://wphomes.soic.indiana.edu/jsiek/what-is-gradual-typing/" rel="nofollow">http://wphomes.soic.indiana.edu/jsiek/what-is-gradual-typing...</a><p><a href="http://wphomes.soic.indiana.edu/jsiek/files/2014/03/retic-python.pdf" rel="nofollow">http://wphomes.soic.indiana.edu/jsiek/files/2014/03/retic-py...</a></p>
]]></description><pubDate>Sat, 20 Dec 2014 11:52:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=8776422</link><dc:creator>keosak</dc:creator><comments>https://news.ycombinator.com/item?id=8776422</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8776422</guid></item><item><title><![CDATA[New comment by keosak in "Celery – Best Practices"]]></title><description><![CDATA[
<p>Points 1 and 2 are only valid because the Celery database backend implementation uses generic SQLAlchemy. Chances are, if you are using a relational database, it's PostgreSQL. And it does have an asynchronous notification system (LISTEN, NOTIFY), and this system allows you to specify which channel to listen/notify on.<p>With the psycopg2 module, you can use this mechanism together with select(), so your worker thread(s) don't have to poll at all. They even have an example in the documentation.<p><a href="http://www.postgresql.org/docs/9.3/interactive/sql-notify.html" rel="nofollow">http://www.postgresql.org/docs/9.3/interactive/sql-notify.ht...</a><p><a href="http://initd.org/psycopg/docs/advanced.html#async-notify" rel="nofollow">http://initd.org/psycopg/docs/advanced.html#async-notify</a></p>
]]></description><pubDate>Wed, 18 Jun 2014 13:31:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=7909930</link><dc:creator>keosak</dc:creator><comments>https://news.ycombinator.com/item?id=7909930</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=7909930</guid></item><item><title><![CDATA[New comment by keosak in "Slides from Felix von Leitner's talk on C and compiler optimizations"]]></title><description><![CDATA[
<p>You are right that it does not look like what is usually called "tail call", ie. call to 'fact' is not the last evaluated expression. However, this doesn't mean that the compiler can't optimize it, provided that the last expression is simple enough. GCC can probably optimize arithmetic expressions. I have read somewhere (can't find it though) that Erlang bytecode compiler also optimizes prepending to a list and some other primitive operations.
This means that in these cases you don't have to explicitly use accumulator variable because the compiler will create it for you.</p>
]]></description><pubDate>Fri, 06 Nov 2009 18:24:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=926569</link><dc:creator>keosak</dc:creator><comments>https://news.ycombinator.com/item?id=926569</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=926569</guid></item></channel></rss>