imalex
Tiers of Password Storage
Non-blocking I/O and how Node uses it, in friendly terms
How to understand taxes on RSUs, options, and startup equity
I think it's a clever idea to use the native square root to seed the guess. That hadn't occurred to me. In my solution, I do integer square roots, and the fixed just dispatches to that, so I could drastically improve my guess if I used the native square root there. Nice idea!
I use pi just for normalization of the light power: https://github.com/aquach/from-nand-to-raytracer/blob/main/r...
And I don't use trig. I mention it just for fun. In the original Rust raytracer tutorial, they use trig to set up the field of view, but I hardcoded it to 90 degrees to remove the trig.
As for square roots, the reason why you can't use the underlying architecture is that it only works on the native i16 type. That's why I had to reimplement integer square root in the Int32 and then fixed point square root using that.
If you're saying that I could just ignore the Int32 part of the code and implement square roots just for the fixed point using the underlying architecture, that's definitely doable, but I'd be concerned about Newton's method (specifically the squaring of x_n) overflowing the fixed point. Maybe it'd work and I haven't thought it through enough. Thanks for the suggestion :D
From NAND to Raytracer: Raytracing on the Hack Computer (Feat. Rust)
Understand How Equity Compensation and Taxes Work
Non-blocking I/O and how Node uses it, in friendly terms
As for the Ruby/JSON stuff, that was also built by hand (actually the very first thing we built before we even had the UI in place). Whenever a conversation is started, the client gets the entire syntax tree from the server and evaluates it to make the conversation happen. We actually thought that pushing the state to the client actually made things easier since the server no longer has to manage the status of many concurrent conversations. It also means faster responses in poor network conditions.
I think the main reason for chatbot platforms to push things to the server is out of necessity because they work across many clients (Messenger, etc) where they don't control the client, and because they may be doing some heavy lifting with NLP that can only be done on the server.
The other aspect is that banks are really good at physical security, but not so great at data security. Consider the recent Chase breaches, where a ton of sensitive data was leaked—you're obviously placing a lot of trust on Intuit or Plaid whenever you use Mint or Penny, but at least they're modern technology companies that probably hold themselves to higher data security standards than your bank.
For example, here's a excerpt from explaining how credit card interest works:
Penny: Chase charges you interest based on your <em>APR</em> (annual percentage rate).
Penny: You probably saw this number when you signed up for your credit card :credit_card:
Penny: APRs are usually about 12-24%.
Penny: As far as I can tell, your Chase Freedom's APR is about <em>{{ numeral(0.15).format('0%') }}</em>, which is about normal.
You: OK
Penny: To compute how much interest you get charged every day, divide your APR by the number of days in a year, like this:
<rest of conversation>
We also do a fair amount of two-way communication when we're understanding a user's circumstances. When Penny coaches people about investing, we try to understand the user's financial situation based on how much risk they're willing to take, how much they have that's investable, their horizon for returns, etc, all of which fits pretty naturally into a chat interface.
Since we use Cordova, the entire app is a website. So when you open up the app, it launches a webview pointed to a website that we deploy to like any other website. That means we can change any client logic and it'll go out in minutes. We also have a conversation DSL that lets us make conversation flow tweaks in under a minute, and since the bulk of the app is conversations, that allows us to move super quickly.
Great question about the changelogs! Since we don't have a longer cadence between feature pushes since we're deploying all the time, we have to go back and look at historical pushes whenever we need to write a changelog. We typically roll up all the little features and announce them whenever we make a new version in the app store. On top of that, we usually announce new features inside Penny, where she'll give a little intro on the new functionality. That also doubles as onboarding to the new feature if needed.
Our biggest differentiators: more focus on automation and friendliness. The major pain point we discovered is that average people find finances intimidating and difficult to track. We wanted to take as much of it off of people's hands as possible as well as doing everything we can to make the experience as friendly and engaging as possible. That goes a long way to making something that people feel comfortable using. We think Mint is a powerful tool with a much steeper learning curve, and we wanted to build something that anybody can use.
Show HN: Visualize your vesting equity with a client side calculator
In fact, you might even observe a speedup because fewer elements are being painted, but the difference as a whole should be marginal.
Are you experiencing actual slowness from using the extension? I'd be really curious to know.
Show HN: Trello Compact Mode
You're totally right that people who have trouble managing money in general don't use these kind of apps. Before starting work on Penny, we asked a hundred or so people "how do you manage your money?" The prevailing answer was, "I don't." So when you give them the tools to do that, it really helps them understand their situation.
What we see as the real problem is comprehension and usability. Many people we talked to shy away from apps like Mint because they're complex and intimidating. From a more technical/analytical/affluent standpoint (where I come from), I don't have an issue using Mint and querying my own data, but it's important to remember that I'm different from most people. So, we think that giving people that awareness of their financial situation in a friendly, relatable, and understandable manner goes a long, long way.
Regarding continued use: everybody's finances are a representation of their life, and as life changes, your finances do too. So we think there's a lot Penny can do to help you on an ongoing basis, like tell you about how your new commute to your new work is affecting your gas spending and your savings rates; mention how Comcast just bumped your bill up by 10%; point out that your Starbucks spending has been trending up and might start being a significant money drain, etc. We might be wrong, but we think we and everybody else in this space have only scratched the surface of what insights can help people with their finances.