HN user

scottwick

165 karma
Posts3
Comments31
View on HN

What happens if the 2nd signal (after the 200ms delay) is never received? Would keeping the relay closed like that cause any issues?

I wonder if a more "robust" way to handle this would be a custom microcontroller on the receiving end that receives a single Zigbee signal and implements the 200ms delay internally.

Yeah, that's definitely true. I find that I'll often be excited about an idea and immediately start putting in the time to build a rough prototype. Once I realize the true scale of the effort involved I second-guess my commitment to the idea - is this really something I want to spend the next year+ working on? I think having that clear vision and enough conviction that the results will be worthwhile is very important and definitely something I struggle with.

Do you see the deposit amount and all the details of the escalation from the triggering offer in that case?

Say I saw that the triggering offer had a measly deposit and I suspected it of being fake. Would I be on the hook to prove it? Technically if I rescind my offer at this point I lose my own deposit, right?

putting down $500 earnest money on a $300K house would look suspicious enough to get you ignored by the buyer

Assuming you mean the seller here? If I were the seller I too would ignore that kind of offer but first I'd let it push all the other escalation clauses up ;)

Not really related to the article but something I've been wondering...

In recent years the housing market has been so competitive that escalation clauses are often written into offers. They typically include a base offer of $X and then an agreement to escalate that value by increments (maybe $1-5k at a time) up to some cap. All the offers are collected by a certain date and then an auction is run behind the scenes by the realtors involved.

What's to stop a seller from having one of their friends enter into one of these escalations? Submit a non-serious offer with a high escalation and include a minimal deposit which would be forfeited if that fake offer happens to win but otherwise hope it comes in 2nd to push everyone else's escalation up.

Does this use the battery? Not clear to me if the Kindle program is running continuously or if it just periodically starts up, refreshes the screen and then powers back down.

I feel the same way. I've been doing web-related stuff for about 13 years now and have lost much of my interest. Started dabbling with electronics and embedded systems about 5 years ago and it completely re-piqued my interest in writing software. I'm still doing backendy web things for money but would love to move away from that. Any recommendations for moving into the embedded field professionally? What sort of companies are you working for?

I totally agree, they're really great for simple hobby projects! I've mostly used the ATTiny85 and it's easy to understand the datasheet, easy to program, battery efficient and comes in a DIP-8 form factor for easy breadboarding. Compared with something like an STM32 I find it quite fun to work with!

Fantastic write up - thank you! I also love hearing about why each part was chosen. As an electronics hobbyist I often mimic portions of others' designs but I'm not always entirely sure why a certain part was chosen among the various options.

Do you prototype all this on a breadboard before making the PCB and picking specific parts? I'd be curious to hear more about your process. I feel like I always need to test everything I build on a breadboard first since I inevitably miss some small detail if I go straight to schematic + PCB design.

Could you point me to some documentation about this? Is this something that's built in to Apollo? Or just that Apollo enables building this sort of architecture more easily?

A frontend application that I work on has each component making separate tiny GraphQL queries to render just what it needs. The result is often 5-10+ GraphQL requests to render a single page. Is this a common practice?

It seems like a lot of overhead to me since the backend has to perform some redundant queries (i.e. fetch and authorize the user, etc.) in order to serve each of those requests. I had thought one of the main selling points of GraphQL was that the frontend could make a single API request and have everything it needs to render the entire page. Any thoughts?

GraphQL is nice from a consumer's perspective but results in a lot of extra complexity on the backend IMO. It sounds nice in theory for the frontend to just request whatever it needs but there are often performance considerations that make this easier said than done. You end up either tailoring the database queries for particular GraphQL queries (i.e. eager loading certain things you know will be fetched) or implementing some sort of more generic dataloader pattern. The fields and data types become more explicit through the schema but there are still implicit access patterns in play. Definitely a tradeoff vs. a REST API where each endpoint can be highly optimized since you know exactly what's being returned.

Wow, I had no idea HN was built like that - I'm impressed. I really wish I could read the Arc code better though since I'd love to know more about the details of how data is represented on disk and when things move in and out of memory, etc.

Does anyone know of other open source applications with similar architectures like this?

I've been using beancount [1] and beancount-import [2] for a while now and I'm liking it quite a bit. Every month I download CSVs of transaction data from my various accounts (checking, savings, credit card, etc.) and run beancount-import to categorize and reconcile transactions (I've written a few custom importers for this) into the ledger. I can then use bean-query (part of beancount) to perform SQL queries over the ledger data (i.e. expenses in the past month grouped by category). I feel like I'm just scratching the surface so far of what's possible with these tools but it has definitely helped me be more organized with my personal finances.

[1] https://github.com/beancount/beancount/

[2] https://github.com/jbms/beancount-import

I'm very much the same way. For a lot of lower-effort SaaS offerings I look at them and think: "I can't believe people pay for this when I can replicate the parts I need with a few Python scripts or a simple Rails app". The things I am willing to pay for are often much more ambitious businesses and would likely require far more effort than I'm willing to devote (i.e. things like Digital Ocean or Fastmail).

I just recently started using Beancount for tracking my personal finances and I really like it so far. I've written some custom importers to parse CSVs from various financial institutions and auto-categorize some of the expenses, income, etc. based on regex matching on the transaction description from the CSV.

I'm able to auto-categorize many of the transactions this way but there will always be some to which I need to manually apply categories. For example, entering "Expenses:Restaurants" for a restaurant I've never been to and thus don't have a corresponding matching rule. I also occasionally add new matching rules and then re-run the importer to generate a new ledger with the new auto-categorizations.

Once I edit the ledger file though I can't rerun the importer or else I'll lose my manually entered labels. Do I just add those one-off entries to the matching rules? Or is there a better way to handle this? Would be curious to hear how others are approaching auto-labeling expenses, etc.

The only advantage to freelancing that I can see is the flexibility to work less than 40 hour weeks, or take more time off than vacation time you're allotted.

I've been doing contract work exclusively for the past 9 years now and this is exactly why I continue with contract arrangements. If I could find a "permanent" position with flexibility like this I would likely consider transitioning away from contract work.

How does this work in terms of Postgres connections/pools? My understanding of this is that you'd do something like `SET SESSION user_id TO 123;` which sets the variable `user_id` for that connection. Subsequent queries could use that variable to do row-based authorization but they need to use the same connection. Is this how Postgrest does it? (guaranteeing the same connection for the lifecycle of a request that is)