HN user

Willamin

239 karma
Posts1
Comments104
View on HN

I recently made a very similar tool but focused on making small React apps instead of presentations.

A basic starter html file with an example app: https://glider-app.netlify.app/glider.html

Docs: https://glider-app.netlify.app/docs.html

The docs aren't very polished yet but it's quite usable!

It bundles a JSX transpiler, a code editor, and supports saving to a file or localstorage. It supports "ejecting" to separate the shell (handling saving files, transpiling, editing, etc) from the JSX and the JSON data.

I also threw together an iOS app in which you can save these mini apps, allowing for longer term saving of data and code edits without relying on localstorage alone, making the save/refresh loop seamless. It includes a sandbox, preventing any saved mini apps from making network calls, but allows the user to enable network usage on a per-app basis. I'd like to include more QoL features like a native editor, but haven't prioritized that yet.

https://apps.apple.com/app/id6790498430

as simple as installing Claude in the VM and connecting via an SSH terminal

I've done exactly this, and it works pretty well!

1. I setup a VM in UTM (but this could be any kind of containerization thing). I don't even bother with a non-root account in there (the agent has free rein to install packages, write files, etc). 2. I SSH into the container. 3. I install Claude or whatever there. 4. I setup git things in a way where I can push/pull to move code between the container and my host machine.

Upsides: the agent is isolated from the rest of my host system, only being able to read/write what I've explicitly handed to it. Downsides: the agent is isolated from the rest of my host system, so it's more limited in capability.

For context, my engineering team is fairly small – no guarantees this scales well for larger organizations. I capture the reasons for decisions on why code was written a particular way or why a particular architecture was decided upon in commit messages. We follow a squash-and-rebase flow for commits, so each PR is ultimately a single commit before merging. During that squash process, I'll update the commit message to sometimes be a few paragraphs long. Later when I'm curious why we made decision in the past, I can use git blame to navigate back until the point where I can find the answer.

I’d love to see a variation on the concept that minimizes information on each card. It would of course result in a larger deck, but would reduce visual noise while playing games.

I think one colored suit symbol and one rank is the most needed. Some cards could have symbols like Uno’s “skip” card as their rank.

I also do my best to stick to a "one strike and they're out" personal policy.

But I also have apps that push marketing through notifications _and_ are urgent on a reoccurring basis (usually delivery or rideshare apps). For those, I'd love if there was a system notification setting (per app) for "allow notifications from this all for the next X hours" _and_ a simple UX to make that happen.

Pebble Round 2 7 months ago

Is a normal (non-rose) gold (or even a brass) color something we could look forward go in the future?

Was the decision to not sell that color based on expected demand for the color or did it not work for some other reason?

I personally prefer leaving the measurement in the instructions for two reasons.

1. I'll often use the ingredients list (and quantities there) before cooking to ensure that I have everything I need ahead of time. Depending on what ingredient it is, I might not mise en place it. In those cases, a step that says "add ingredient" would require me to go reference the list in the beginning, losing a bit of context.

2. It's not often, but I've followed a few recipes that require a particular ingredient in 2 different steps in different amounts.

I love that you made it so simple to use!

I've started building a similar app before, except with more of a focus on the timestamps than the text (prioritizing time tracking over note taking). I ended up switching gears to different side projects and never came back to this one.

That being said, a feature I'd begun to implement that you could consider adding is what I called Context Tags. It looks like in Notetime tags are applied to notes to provide better organization. Context tags in contrast would be applied to timestamped lines within the note. When moving to the next line, the new one would default to having the same context tags.

That's it! That's the whole feature. This let's a user tag the first line in a category, such as "work" or "project A", then gain that categorization for any subsequent lines (until the user specified a new category).

Genuinely, I'd love to see this approach be taken: allow for a set of characters to be used as list delimiters. I personally like the set to be comma, semicolon, and newline, but of course this set would need to be varied depending on other syntax (e.g. in SQL, we wouldn't want semicolon to be used for this).

Having newline be a valid list separator is particularly nice because it solves the "trailing comma" and "comma-first" style workarounds in a visually elegant way. The newline already provides a visual separator; we can already tell that we're at the end of most lists by way of having another keyword appear next without needing to rely on a lack of commas, for example:

    select
        id
        name
        email
    from users

Totally agreed! It's a problem I'd love to see solved well. I've wanted a route planning / mapping app that can achieve advanced features for a few years now. I'd love to build it myself but honestly, I'd much more excited that it could exist rather than it existing under my control and for my profit.

* Multi-modal planning: where walking, transit, biking, and driving can be independently selected for each leg of the journey (in a multi-stop trip)

* Travel breaks with duration: for a multi-stop trip, allow the inclusion of estimated stop time (e.g. I plan to stop for a meal at a particular restaurant on my upcoming road trip and I intend for that stop to take 1.5 hours). That stop time would then affect the ETA for all stops along the way and may even impact which public transit options are available at later stops.

* Multi-day journeys: for more specifically planning road trips or vacations.

* Constraints on the journey: the most familiar of these (which is already somewhat implemented in the popular maps apps) is whether a business will be closed when you arrive. Others could involve weather predictions (on a multi-day, multi-stop trip I only want to go to the beach on a day it's not raining), daylight hours (I don't want to go to the park after dark), etc. I would expect this feature to let users provide their constraints and the planned route would warn users if their constraints aren't met.

* As mentioned in another comment, route comparisons: for single-stop or multi-stop trips, it should be incredibly simple to compare two or more routes. This should be possible prior to travel _and_ while en route. CityMapper provides some amount of this feature: while on a route, you can return to the form where you input your origin and destination and can get an idea of comparisons.

* Another comment (and the article) mentioned exploration while en route: it should be trivial to explore the map in a way that's completely unrelated to one's current trip. Similarly, it should be easier to search for locations that are nearby your route (that is, wouldn't take more than X amount of time out of your way).

An obvious stretch goal after having these features would be to allow for trip optimization given a number of modes of travel, destinations, timing constraints, ordering constraints (want to pick up food before I go to the park for a picnic, so restaurant must come before picnic), and even proposed start and finish times for a trip. This of course falls into the realm of the traveling salesman problem, but if I'm able to reasonable build a few proposals for routes manually (by setting arrival / departure times and choosing transport modes in my maps app) one stop at a time, an app could certainly check a few permutations.

ChatGPT Search 2 years ago

I find myself being unable to search for more complex subjects when I don't know the keywords, specialized terminology, or even the title of a work, yet I have a broad understanding of what I'd like to find. Traditional search engines (I'll jump between Kagi, DuckDuckGo, and Google) haven't proved as useful at pointing me in the right direction when I find that I need to spend a few sentences describing what I'm looking for.

LLMs on the other hand (free ChatGPT is the only one I've used for this, not sure which models) give me an opportunity to describe in detail what I'm looking for, and I can provide extra context if the LLM doesn't immediately give me an answer. Given LLM's propensity for hallucinations, I don't take its answers as solid truth, but I'll use the keywords, terms, and phrases in what it gives me to leverage traditional search engines to find a more authoritative source of information.

---

Separately, I'll also use LLMs to search for what I suspect is obscure-enough knowledge that it would prove difficult to wade through more popular sites in traditional search engine results pages.

Lately I've started using a barebones SQLite DB for this and a GUI DB editor program (TablePlus, which happens to have an iOS app as well).

I'd always relied on ORMs in whatever web application I used to interact with DBs for the most part, but I've recently been learning more about views, triggers, and more complex relations. It's been insightful and I've found that much of what I want from a program like BeeBase is covered by knowing more SQL.

----

That being said, I'd love to see what you described too. I don't mean for this to be like the infamous "why do you need dropbox when you have rsync" comment. I just wanted to give an anecdotal alternative to use until someone creates what you described!

This is possible and relatively easy for Apple to do: for most (if not all) permissions, a declaration that you intend to ask for permission is required in the app's Info.plist manifest file.

When permission is requested and you've forgotten to declare that your app asks for it, the permission will be immediately denied without prompting the user.

In the US, we tax roads by usage via fuel (gasoline and diesel) tax [^1]. It's a simple solution: the more miles you drive, the more fuel you use; the more fuel you use, the more tax you pay. Vehicles that use more fuel per mile driven tend to be larger and thus cause more wear on the roads.

It's not without its faults though. Fuel usage isn't directly related to cost of road maintenance, it's just a very rough approximation. Fuel usage has mattered less and less over the past couple of decades with hybrids and EVs – though this is addressed in some places by imposing an extra EV tax (since EV drivers would pay no fuel tax but would still cause wear on the roads).

[^1]: https://en.wikipedia.org/wiki/Fuel_taxes_in_the_United_State...

My Left Kidney 3 years ago

Great article! I'd never considered the mathematical risks associated with this.

Now I'm curious what the numbers would look like if it were a cultural norm for everyone (who passed the screening exam) to donate their kidneys in this non-directed fashion. My incredibly unscientific gut-feeling, back-of-the-napkin math seems like it would be plausible to reduce kidney failures to zero in no time: most people have two functioning kidneys and there are significantly less than 50% of people that need donated kidneys. Of course that gut-feeling math doesn't factor in the increase in risk for the donors (the radiation during screening, botched surgeries, etc), but those risks seem low enough that I imagine we'd net positive on a large scale.

A bit of a nitpick on the language on the homepage:

The description of the Fibonacci example seems incorrect, but I might be misunderstanding something about the language.

A fib evaluation function was defined using recursion.

The result of the function call was assigned to a variable named "result" and format the output using fmt.printf

    import fmt 

    fn fib(int n):int {
        if n <= 1 {
            return n
        }
        return fib(n - 1) + fib(n - 2)
    }

    fmt.printf('fib result is %d', fib(30))
No variable named "result" is ever defined, right? Maybe the description is outdated from a time when an intermediate variable was present.

many apps really only work if they get your full contacts list

Too bad for those apps. They should be able to work whether I have 1000 contacts, 0 contacts, or any number in between.

If they want to have a cool feature like alerting me when a friend joins, they are more than welcome to persuade me to provide my full contacts list so I get the most out of a feature.

This is such a welcome addition! I totally agree: it likely took all of 30 minutes to implement (plus testing, QA, etc time).

I'd love to see another Clock feature: let me choose a new timer/alarm sound _without_ immediately previewing the sound. At this point I know a handful of my favorites that I like to choose from, and I don't want to hear them at full alarm volume just because I'm changing the noise. A preview button trailing-aligned in the list would be perfect spot for a quick way to listen to an alarm sound.

And a related feature: include Alert Tones (ie Messages alert sounds) in addition to Ringtones as timer/alarm noises.

Elm typically leans into this exact style (though without semicolons)! It's refreshing seeing support for this delimiter-first, dangling closing delimiter style in a more imperative and mainstream language.

The rule of thumb estimation number I've always heard for calculating a salaried job's hourly rate is 2080:

365 / 7 ≈ 52 (weeks) * 5 (work days per week) * 8 (hours per day) = 2080 hours per year

Given that very estimated number, vacation, holidays, and sick time all count as extra benefit.

One convenient aspect of this number is that if you go ahead and factor in 2 weeks of PTO/holidays/sick days, then the number of hours actually worked drops to 2000. That makes the mental math tremendously simple, albeit not 100% accurate: 100k salary / 2k ≈ 50 per hour

Any chance that was a location based App Clip suggestion in your Siri App Suggestions home screen widget?

That or the App Store widget (which is essentially a banner ad widget) are the only reasons I can imagine where:

1. You don't have the Dunkin' Donuts app installed

2. You saw the Dunkin' Donuts app icon on your homescreen

---

If it's an App Clip suggestion in your Siri App Suggestions widget, you can disable this behavior in a couple of places (depending on what you care about):

* Settings > Siri & Search > App Clips > Suggest App Clips

* Settings > Privacy & Security > Location Services > System Services > Location-Based Suggestions

---

I don't mean to suggest that Apple is free and clear of guilt. They often add new options with their preferred value as the default – rather than a user-focused default.

However, I don't think this is caused by advertisements in the same way that Smart TVs suggest things.

SwiftUI in 2022 4 years ago

deprecate Combine and move further toward actors and async APIs

Combine is an abstraction to encapsulate changes in state over time, while actors and async APIs are abstractions to encapsulate concurrent behavior. I think these are orthogonal concerns, so they wouldn't likely drop one in favor of the other.

SwiftUI is very dependent on Combine

As someone who's been writing SwiftUI a lot over the last year or two, I've only touched Combine a few times. Even then, I only tried it because I wanted to see how it compares to RxSwift, not because it was something I needed.

SwiftUI in 2022 4 years ago

That last 10% is easily accessible by reaching into UIKit. Crossing that boundary is much easier in practice than one might expect at a first glance of the docs for doing so.

SwiftUI in 2022 4 years ago

I'm using SwiftUI extensively when I get the opportunity. The team that I'm on has decided to shift our UIKit+Storyboards app towards leveraging SwiftUI more. It won't work for 100% of the app, but that's alright because there are easy-to-implement escape hatches back into UIKit.

The worst part of the dev experience is that we are currently supporting back to iOS 13 (which is when SwiftUI was introduced). That means we can only really use the oldest SwiftUI components and modifiers; it's not too bad, but finding usable examples online is tricky sometimes (they often assume the latest).

SwiftUI in 2022 4 years ago

There are official escape hatches in SwiftUI to let you leverage UIKit. As someone actively working on a slow migration from UIKit to SwiftUI (where possible), it doesn't feel discouraging to wrap a UIKit view to use it in SwiftUI if necessary.