<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: gbear0</title><link>https://news.ycombinator.com/user?id=gbear0</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 22 May 2026 21:57:12 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=gbear0" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by gbear0 in "AI has a multiplying effect on existing technical skills"]]></title><description><![CDATA[
<p>Those checked-in specs become the requirements for the system. So the next time you ask the AI to make a fix, it can use those specs as part of the solution and not break another requirement. Basically the code underneath keeps getting rewritten over and over, but that doesn't matter as long as it hits the required specs.</p>
]]></description><pubDate>Fri, 22 May 2026 15:05:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48236946</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=48236946</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48236946</guid></item><item><title><![CDATA[New comment by gbear0 in "AI has a multiplying effect on existing technical skills"]]></title><description><![CDATA[
<p>Why was it a maintenance dead end? It sounds like you were able to iteratively work on it in its current state, but are you going to be the one maintaining the code?<p>I keep asking myself the same questions, and the conclusion I keep coming to is the clean modeled structure we want to see is for humans to maintain and extend, but the AI doesn't need this.<p>There's definitely an efficiency angle here where it's faster for AI to go from a clean modeled solution to the desired solution because it's likely been trained on cleaner code. Is this really going to matter though?<p>The best argument I can come up with is the clean modeled solution is better for existing development tools because it's less likely to get confused by the patch work of vibes throughout the code; but this feels like it ultimately becomes an efficiency concern as well.<p>This just might be the new reality, and we need to stop looking behind the curtain and accept what the wizard presents us.</p>
]]></description><pubDate>Fri, 22 May 2026 14:51:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48236738</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=48236738</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48236738</guid></item><item><title><![CDATA[New comment by gbear0 in "Show HN: Nestable.dev – local whiteboard app with nestable canvases, deep links"]]></title><description><![CDATA[
<p>I've had a similar desire for a code modelling system for decades, so I've given it A LOT of thought, and there has been a lot of older research into Zoomable UIs and Semantic Zoom. Code Bubbles (<a href="https://learn.microsoft.com/en-us/shows/alm-summit-2011/code-bubbles" rel="nofollow">https://learn.microsoft.com/en-us/shows/alm-summit-2011/code...</a>) is the closest I've seen to the idea, but doesn't cover the scope I want.<p>Biggest challenge to me is the UX and navigating the relationships between entities (systems, components/modules, classes, functions, read/write memory, etc) requires a lot of design effort around how they work together consistently at all levels. Conceptually, your view is a set of boxes that are a filter/group-by over a lot of entities at some level, and you want to explode only some of those entities. eg. say you want to zoom into a micro-service's component level, but still see external APIs, which could be a single box per API or boxes for each endpoint. So the control you need over the way zooming works and the 'lens' over relationships filter/group-bys can easily become very complex; probably a good research project itself though!<p>I do think it's possible to build a good interface that would allow viewing from  global cloud scale systems and right into the code through multiple paths, like design patterns/components or git repos with files/folders, but I'm not sure how nice it's going to be to use. There's a reason UML modelling didn't stick around. 
And I'm not sure there's enough of a business case to fund it, but I'll definitely keep hoping to see it some day.</p>
]]></description><pubDate>Wed, 20 Aug 2025 21:23:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=44966632</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=44966632</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44966632</guid></item><item><title><![CDATA[New comment by gbear0 in "I made a transformer to predict a simple sequence manually"]]></title><description><![CDATA[
<p>On the idea of interpreting the weights, I've been very interested if it's possible to compute basis vectors of the weights matrix to define the core concepts within the model and then do a change of basis to allow reorganizing the model to more human understood concepts?<p>I think the inherent compression of a specific training set into a matrix makes this more difficult cause the basis vectors likely won't contain clean representations of human ideas, but I also wonder if starting a new training set with an initialized (or fixed) matrix of human defined concepts would help align the model's weights to something that can be interpretable</p>
]]></description><pubDate>Sat, 23 Sep 2023 19:23:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=37626482</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=37626482</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37626482</guid></item><item><title><![CDATA[New comment by gbear0 in "The Wrong Abstraction (2016)"]]></title><description><![CDATA[
<p>Things get obfuscated because someone's viewing the problems from a different abstraction lens, and they're building a system onto that lens.<p>Eg.
Iterate through an array:<p><pre><code>  const arr = [1, 2, 3];
  for (let i = 0, l = arr.length; i < l; ++i) { console.log(arr[i]) }
</code></pre>
Let's model it differently using an iterator:<p><pre><code>  const arr = [1, 2, 3];
  const arrIter = arr[Symbol.iterator]();
  let i = arrIter.next();
  while (!i.done) {
    console.log(i.value);
    i = arrIter.next();
  }
</code></pre>
At this level it's still pretty obvious what's going on, but you can still see that there's a level of abstraction between an array access vs calling 'next/value', and that obfuscates what is actually happening at the computation/instruction level.<p>If I extend this another level then I'm going to start modelling problems using an iterable and not an array/index. New requirements come in and we extend to use an async iterable. Everything still works nicely, but in some scenarios where the actual iterable is just an array, now there's a lot of extra overhead to just do an index lookup.<p>Using the iterator allows the code to be reused in more scenarios, but there's usually a cost to switching the lens of abstraction so that it fits into a problems modeled differently.</p>
]]></description><pubDate>Sat, 13 May 2023 20:03:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=35932173</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=35932173</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35932173</guid></item><item><title><![CDATA[New comment by gbear0 in "Amazon rescinding the offer while I am on the notice period"]]></title><description><![CDATA[
<p>Why are they hiring people that need a visa and need to relocate across the world?<p>The ask for compensation for getting dropped before the start date should usually be an easy one for a company to accept since that shouldn't be normal operating procedures. Otherwise, they're aware that they're explicitly screwing over people and aren't serious about hiring. Now we're back at my earlier claim, and you dodged a bullet.<p>You don't need to be special, but you definitely shouldn't think of yourself as a cog in the machine. If you do think of yourself as a cog, or this is an offer you can't refuse, then you've already given up your bargaining power, and you are willing to accept this.</p>
]]></description><pubDate>Sun, 25 Dec 2022 17:59:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=34129427</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=34129427</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34129427</guid></item><item><title><![CDATA[New comment by gbear0 in "Amazon rescinding the offer while I am on the notice period"]]></title><description><![CDATA[
<p>Has anyone tried to add special clauses to their initial contract along the lines of: "If the offer is rescinded before the start date, the applicant will be awarded 3 months salary. If the applicant is fired within 3 months of the start date, the applicant will be awarded relocation fees to previous location."
And you'd update that based on costs of moving, or possibly the state of the economy and your risk tolerance. If they don't agree to that, then they clearly aren't serious about hiring you, and you dodge a bullet.<p>This would hopefully reduce cases where they hand out multiple offers for a single job, or at least compensate applicants due to a change from management.</p>
]]></description><pubDate>Sun, 25 Dec 2022 17:46:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=34129298</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=34129298</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34129298</guid></item><item><title><![CDATA[New comment by gbear0 in "Ask HN: What's the next big thing that few people are talking about?"]]></title><description><![CDATA[
<p>I've always wanted to see a swarm of miniature roomba drones that can automatically clean/collect dust from anywhere in the house.</p>
]]></description><pubDate>Mon, 08 Aug 2022 22:15:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=32391778</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=32391778</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32391778</guid></item><item><title><![CDATA[New comment by gbear0 in "Keep calm and use the runbook"]]></title><description><![CDATA[
<p>I think my new favourite way of managing runbooks is to actually build them into a file tree of a bunch of simple python subcommand scripts, and have a run.sh script that scans the file system and uses argparse to construct a cli to call each script.<p><pre><code>  # call ./runbooks/stack/update_secret.py
  # could update a secret in a vault, or update it in your deployed app
  ./run.sh stack update_secret --env=dev --name=foo --file=secret.txt
</code></pre>
Most of the time my python scripts are glorified CLI commands like `docker service update` that are called through subprocess, so you shouldn't need to install dependencies beyond what you'd be typing in the CLI. It's also easy to add a verbose option to print out the commands it runs so you can do it manually.<p><pre><code>  # call ./runbooks/services/build.py
  ./run.sh services build -v
  > #--- Building images ---
  > #> DOCKER_BUILDKIT=1 docker build --build-arg BUILDKIT_INLINE_CACHE=1 --label "myapp" -t example-admin-ui:local "./admin-ui"
  > #> DOCKER_BUILDKIT=1 docker build --build-arg BUILDKIT_INLINE_CACHE=1 --label "myapp" -t example-frontend:local "./front-end"
  > #> DOCKER_BUILDKIT=1 docker build --build-arg BUILDKIT_INLINE_CACHE=1 --label "myapp" -t example-nginx:local "./nginx"

</code></pre>
Anything that can't be automated prints out an input line that gives instructions on what to do and just waits for you to input "yes/no"<p><pre><code>  # call ./runbooks/get_crash_report.py
  ./run.sh get_crash_report --out=./crashes/
  > # Copying crashes from AWS to './crashes/
  > # Manual Step: Fill out crashes spreadsheet: docs.google/example_sheet
  > Continue [y/n]? 
  </code></pre>
The other really nice thing with this setup is the run.sh script is able to build up --help commands that can print out what actions are available and what params they use cause it's just python argparse. Makes discovery of what to do or looking up params really quick.<p>At this point, the only culture you need to build is one where everyone's supposed to use the run.sh scripts and not do things manually. This enforces people to fix the scripts when something changes.<p>YMMV, but I've found this has simplified a lot of processes for myself at least.</p>
]]></description><pubDate>Mon, 04 Jul 2022 18:43:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=31980458</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=31980458</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31980458</guid></item><item><title><![CDATA[New comment by gbear0 in "AWS us-east-1 outage"]]></title><description><![CDATA[
<p>I assume each service has its own health check that checks the service is accessible from an internal location, thus most are green. However, when Service A requires Service B to do work, but Service B is down, a simple access check on Service A clearly doesn't give a good representation of uptime.<p>So what's a good health check actually report these days? Is it just about its own status, or should it include a breakdown of the status of external dependencies as part of its folded up status?</p>
]]></description><pubDate>Tue, 07 Dec 2021 17:42:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=29475684</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=29475684</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29475684</guid></item><item><title><![CDATA[New comment by gbear0 in "Senators aim to block tech giants from prioritizing own products over rivals’"]]></title><description><![CDATA[
<p>I don't see much of an issue with any company having lots of entry points into different industries. I see more of the problem being tight control over vertically integrated aspects of the supply chain.<p>I'd prefer to see rules limiting companies from creating products in 2 consecutive/complementary components of a supply chain unless one of the products is completely open for 'swapping' out with something else. This allows companies to still benefit from vertical integration if they don't commercialize one side of things. But as you said, it's hard to draw the lines, cause you could define a supply chain in a ton of different ways.</p>
]]></description><pubDate>Fri, 15 Oct 2021 17:21:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=28880297</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=28880297</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28880297</guid></item><item><title><![CDATA[New comment by gbear0 in "If software engineering is in demand, why is it so hard to get a job?"]]></title><description><![CDATA[
<p>I think you'd be surprised. For example, with the wrong hire, one person with bad behaviour could frustrate everyone else on the team to the point where no one wants to work on the project anymore. This could lead to the whole team feeling resentment for one reason or another, and eventually leaving. Now you're in need of a lot more devs.</p>
]]></description><pubDate>Mon, 30 Aug 2021 20:59:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=28360812</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=28360812</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28360812</guid></item><item><title><![CDATA[New comment by gbear0 in "Zx 3.0"]]></title><description><![CDATA[
<p>in case anyone is looking to do this, it's as easy as doing the following<p><pre><code>  #!/usr/bin/env node
  console.log("Hello World!");</code></pre></p>
]]></description><pubDate>Mon, 16 Aug 2021 17:45:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=28200771</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=28200771</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28200771</guid></item><item><title><![CDATA[New comment by gbear0 in "Git undo: We can do better"]]></title><description><![CDATA[
<p>The default editor is usually configurable (of course you'd have to learn all the different contexts you can do this from first to know this is a thing ... discoverability is hard).<p>For example in ubuntu you can do<p><pre><code>  sudo update-alternatives --config editor
</code></pre>
Some programs will use the environment variable $EDITOR, so you can add this to your shell startup configs<p><pre><code>  export EDITOR=vi
</code></pre>
Or specifically for git cli you can run<p><pre><code>  git config --global core.editor vi</code></pre></p>
]]></description><pubDate>Mon, 21 Jun 2021 17:12:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=27581198</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=27581198</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27581198</guid></item><item><title><![CDATA[New comment by gbear0 in "useStateMachine: A ½ kb state machine hook for React"]]></title><description><![CDATA[
<p>Did you start programming with OOP or Functional programming?  Did learning how to programming in the other form seem difficult to understand why you would do things that way, or seem obtuse vs just using the ways you already know?<p>I think using state machines is just a very different way of looking at code, and it does take some mind bending to think that way; but once you do, it's much easier to blend the code together the same way you'll see imperative and functional code blended together these days and not think twice about it.</p>
]]></description><pubDate>Sat, 22 May 2021 17:01:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=27248316</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=27248316</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27248316</guid></item><item><title><![CDATA[New comment by gbear0 in "useStateMachine: A ½ kb state machine hook for React"]]></title><description><![CDATA[
<p>I think the value of a state machine is treating all of the associated states in a single conceptual model or level. You can definitely do everything directly in a bunch of if statements and tracking state in separate variables, but that opens yourself to more potential bugs, higher maintenance cost, less big picture understanding, and even larger performance costs (separate codes means the compiler can't optimize as well; means hardware caches aren't as effective; there's more overhead to run separated functions; etc, etc).<p>Here's hopefully a more apt example: imagine wanting to have a multiple document interface (MDI) that shows a bunch of 'window' like views. Some examples of the idea are react-grid-layout, golden-layout, react-mosaic. Each window can be minimized, maximized, moved, flashed, and closed ... all with flashy animations. You could create a whole bunch of components that allow you to capture all the different states and toggle them in different components, and effectively have the MDI business logic sprinkled all through out YOUR code, not just the 'library' code. Alternatively, you could use a state machine that captures all the states in a single spot and manages that all efficiently and safely, you just call an api to trigger state changes throughout your code.<p>As some other comments have mentioned, this is a fundamental part of computer science. You can get by without knowing it cause you can write a bunch of ifs and state logic all over the place. If you only know how to use a hammer, ya you could still hammer a screw in. Understanding how different data structures of different patterns fit together provides you new tools to do things in different ways when appropriate. Learn how to manage complexity, not fear it, cause there's nothing dangerous about state machines. In fact, I'd argue that anyone that thinks state machines make things more complex just isn't looking at a large enough scale because state machines should make things less complex by wrapping all the complexity inside them (when used appropriately).</p>
]]></description><pubDate>Sat, 22 May 2021 16:43:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=27248173</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=27248173</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27248173</guid></item><item><title><![CDATA[New comment by gbear0 in "Go Modules Cheat Sheet"]]></title><description><![CDATA[
<p>Is there not a better solution for this? We have this baked into our docker builds and it irks me that we have to copy personal credentials into a docker build so we can use git to pull modules and build. 
Is everyone actually doing this, or do you setup read-only tokens per private module, or anything else?</p>
]]></description><pubDate>Mon, 03 May 2021 19:01:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=27029283</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=27029283</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27029283</guid></item><item><title><![CDATA[New comment by gbear0 in "The loneliness of the modern office team member"]]></title><description><![CDATA[
<p>this has been my biggest problem with Meetup style events too. I'm often looking for others with a level of experience or interest in a topic to match my own, only to find people trying to break into the industry and just barely scratching the surface. At that point it's not a social thing for me, it's a mentoring/work thing, and I get this feeling of disappointment in the situation, which persuades me to skip the next.</p>
]]></description><pubDate>Mon, 03 May 2021 15:00:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=27025904</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=27025904</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27025904</guid></item><item><title><![CDATA[New comment by gbear0 in "Hire me and pay what you want, just give me interesting work"]]></title><description><![CDATA[
<p>I'd also suggest people making these requests to try and expand their interests to make themselves more rounded and valuable. For example I'm totally the kind of person that likes to jump from one thing to another cause I like the challenge and I get bored quick otherwise. But instead of jumping ship cause the challenge is gone I try to find a different closely related challenge.<p>Here's a couple of techniques for anyone looking to do the same:<p>1. Look at the 'supply chain' of inputs and outputs from your problem area. Are there new inefficiencies somewhere in the stack that you can dig into and solve, and leverage your new knowledge. This could mean a whole new area of things to learn in order to investigate or solve those problems.<p>2. Never accept the status quo. Every time you're asked to do something else, treat that as an opportunity to find one thing that you can improve in the related systems. Here you'll learn the new system, but you'll also learn how to pick worthwhile areas for improvement.<p>3. Be reflective and review what you found interesting and what you didn't and dig into the ones you didn't find interesting. Ask yourself why you didn't like things; was it cause it was too difficult to pick up? was it cause you don't like people problems? was it just too big a problem to tackle? Dig in more and ask why again (like the Toyota 5 Whys). Eventually you should be able to find a problem area that you can clearly define and potentially work on to improve.<p>I realize these 3 techniques won't necessarily lead to 'cool tech problems', but that's kinda the point! If you can get yourself interested in solving related problem areas, you'll find you pick up a lot of useful knowledge and value that you can apply in many other areas you wouldn't have first thought of, all while always jumping between things and not getting bored!<p>(edit: formatting)</p>
]]></description><pubDate>Mon, 19 Apr 2021 17:52:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=26865884</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=26865884</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26865884</guid></item><item><title><![CDATA[New comment by gbear0 in "Using the switch(true) pattern in JavaScript"]]></title><description><![CDATA[
<p>The other ambiguity that I questioned right away was whether the language itself guarantees the order or evaluation or if it's compiler dependent? If I switch between Chrome & Firefox would I get different results?<p>Also, by using non const expressions in case statements you lose the ability to have a large number of cases get mapped into a jump table. Although, I don't even know if more modern languages even support this optimization anymore since I think supporting non const case expressions is becoming the norm in a lot of languages.</p>
]]></description><pubDate>Mon, 12 Apr 2021 23:34:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=26786468</link><dc:creator>gbear0</dc:creator><comments>https://news.ycombinator.com/item?id=26786468</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26786468</guid></item></channel></rss>