HN user

jw_cook

139 karma

https://jwcook.dev | https://github.com/JWCook

Posts0
Comments61
View on HN
No posts found.
iNaturalist 4 months ago

iNaturalist would agree with you; they explicitly say[1] it's not meant to be the primary source for your photos. Users generally fall into a couple broad camps:

1. Mostly use the mobile app, and take photos and upload observations directly from there. Local photo collection either isn't a priority or is backed up by their phone's cloud sync.

2. Mostly use inaturalist.org via a desktop browser, with either a standalone digital camera or mobile photos synced to desktop. Local filesystem (hopefully plus backups) is the source of truth.

I have been working on a desktop application[2] with a long-term goal of full bidirectional sync, and a secondary goal of offline usage. The current feature set is fairly modest and read-only, though, focusing on organizing local photos using data from iNat.

[1] https://www.inaturalist.org/pages/about

[2] https://github.com/pyinat/naturtag

iNaturalist 4 months ago

It is a gem. There are all kinds of fun location/organism-specific tools you can put together with the public read-only data, and owlsnearme is a good example of that. I just used it to check my area and learned there are snowy owls nearby, which is new to me!

The iNat API certainly has some quirks and shortcomings, but in terms of usability it's uncommonly good compared to most biodiversity platforms. I maintain the python API client[1], which is used for data visualizations, doing useful things with your own observation data (which is how I got into it), Jupyter notebooks, Discord bots, and some research/education workflows.

[1] https://github.com/pyinat/pyinaturalist

iNaturalist 4 months ago

I've wanted to do something similar, but unfortunately their CV model isn't public and can't be used through their API.

Yeah, I hear you. I almost started using a purely text-based todo workflow for those same reasons, but it was hard to give up some web UI features, like easily switching between list and kanban-style views.

My use case looks roughly like this: for a given project (as in hobby/DIY/learning, not professional work), I typically have general planning/reference notes in a markdown file synced across my devices via Nextcloud. Separately, for some individual tasks I might have comments about the initial problem, stuff I researched along the way, and the solution I ended up with. Or just thinking out loud, like you mentioned. Sometimes I'll take the effort to edit that info into my main project doc, but for the way I think, it's sometimes more convenient for me to have that kind of info associated with a specific task. When referring to it later, though, it's really handy to be able to use ripgrep (or other search tools) to search everything at once.

To clarify, though, Vikunja doesn't have a built-in feature that exports all task info including comments, just a REST API. It did take a little work to pull all that info together using multiple endpoints (in this case: projects, tasks, views, comments, labels). Here's a small tool I made for that, although it's fairly specific to my own workflow: https://github.com/JWCook/scripts/tree/main/vikunja-export

Check if your router has an option to add custom DNS entries. If you're using OpenWRT, for example, it's already running dnsmasq, which can do split DNS relatively easily: https://blog.entek.org.uk/notes/2021/01/05/split-dns-with-dn...

If not, and you don't want to set up dnsmasq just for Nextcloud over LAN, then DNS-based adblock software like AdGuard Home would be a good option (as in, it would give you more benefit for the amount of time/effort required). With AdGuard, you just add a line under Filters -> DNS rewrites. PiHole can do this as well (it's been awhile since I've used it, but I believe there's a Local DNS settings page).

Otherwise, if you only have a small handful of devices, you could add an entry to /etc/hosts (or equivalent) on each device. Not pretty, but it works.

The article mentions Vikunja as an alternative to Nextcloud Tasks, and I can give it a solid recommendation as well. I wanted a self-hosted task management app with some lightweight features for organizing tasks into projects, ideally with a kanban view, but without a full-blown PM feature set. I tried just about every task management app out there, and Vikunja was the only one that ticked all the boxes for me.

Some specific things I like about it:

  * Basic todo app features are compatible with CalDAV clients like tasks.org
  * Several ways of organizing tasks: subtasks, tags, projects, subprojects, and custom filters
  * list, table, and kanban views
  * A reasonably clean and performant frontend that isn't cluttered with stuff I don't need (i.e., not Jira)
And some other things that weren't hard requirements, but have been useful for me:
  * A REST API, which I use to export task summaries and comments to markdown files (to make them searchable along with my other plaintext notes)
  * A 3rd party CLI tool: https://gitlab.com/ce72/vja
  * OIDC integration (currently using it with Keycloak)
  * Easily deployable with docker compose

This was a fun read, and well written. Thanks for sharing! Adding/improving support for some niche piece of hardware sounds like an ideal way to get started with kernel development, and something I'd like to try myself sometime.

I also assumed those were going to be links, but after a second of confusion I really liked the side pane with animations. It adds a lot to the article and it's more pleasant than the usual alternatives (lightbox on top of the text, or opening a bunch of tabs).

Off the top of my head, I'm not sure how else you'd visually communicate "this bit is interactive on click/hover but isn't a link." Maybe a different text color (without underline), background color, outline (replaced by the colored highlight bar on hover), or a slightly larger and more distinct icon to replace the generic 'image' icon?

Could you elaborate a bit? Do you think said "GitHub culture" is just because it's the largest platform, or more intrinsic qualities of the platform? Anecdotally I see many of the same problems elsewhere (GitLab, and even independent/self-hosted), but some things I can think of that might be more unique to GitHub are:

* The larger presence of commercial OSS projects setting a tone of "projects here are products to be marketed"

* Social media-like features encouraging popularity contests, curating a personal brand, etc.

* Both of the above leading to more users acting like you owe them something ("you're competing for my attention, right?")

I'm not 100% convinced that those or other GitHub-specific factors are primary causes of maintainer burnout, but I think it's certainly possible.

anyone that works in the service industry has to have an iron-clad patient and friendly manner with all forms of idiots and jerks

giving each of these users a clue that there's something they could be doing to make life easier for the maintainers of the project that they are using for free.

The intersection of these two things is something I've been mulling over lately. In other words, how do we respond to the implicit proposition of "I'm going to pay you $0 and expect the effort and patience of a well-compensated service industry employee"? Putting in the mental energy to deescalate conflicts and be diplomatic with challenging personalities is something I'm willing and able to do... but not for a hobby/unpaid volunteer project!

But then there are many different types of people behind those interactions, including but not limited to:

* Someone who's genuinely a sociopath, or at best an entitled ne'er-do-well who just wants free labor

* Someone in full "socially inept engineer mode," with terse communication that comes across as curt or demanding via text, but are otherwise reasonable if you spend more time talking with them; in their own mind, they're probably just being "direct" or "efficient"

* Someone new to open source etiquette, who doesn't yet know what a good bug report or feature request looks like, but are willing to learn with a little guidance

Sometimes it's hard to tell the difference, and all of those cases can have the same effect of being rather draining, at least in the short term. Longer-term, I've had at least a few cases of someone who seemed like an entitled jerk at first blush, but turned out to be a valuable power user who stays engaged with the project and provides useful feedback. Of course power users come with their own challenges, like wanting to cram every feature under the sun into your project without appreciating the long-term maintenance costs. But at least they're more fun to work with!

For what it's worth: Thank you for your work on SQLAlchemy and Alembic!

On large projects like those, what ratio of community interactions would you say are angry/demanding vs supportive/helpful? And any advice for dealing with the negative ones?

For me, probably less than 5% of interactions on PRs/issues/discussions are negative, but even that small amout sure does have a way of draining one's enthusiasm and motivation!

At the end of the article, there's a link to a script[1] that does the steps covered in the article.

That got me thinking: how do other self-hosters/homelabbers here go about automating their server setups? None/purely manual? One big shell script? Multiple scripts wrapped in a Makefile (or justfile, or other command runner)? More enterprisey provisioning/automation tools like Ansible, Puppet, etc.?

[1] https://git.sovbit.dev/Enki/sovran-scripts

I'm also a big fan of LocalSend! I've tried several tools in the category of "easy cross-platform file/text sharing over LAN," and LocalSend really stood out as the most polished option.

If your main use case for a web UI is browsing photos, have you considered a self-hosted photo gallery like PhotoPrism, Immich, or Lychee?

I'm in a similar boat, where I use NextCloud but really wish there was a better option (especially for mobile photo sync). Syncthing + Photoprism is currently at the top of my list of possible viable alternatives.

Willow Protocol 3 years ago

Iroh is named by a certain fictional character that likes tea.

"The file was in my sleeve the whole time!"

But it feels reductionist to demand that every author conform to the lowest common denominator.

Sibling comment:

This is a valid need that any project maintainer should aspire to address.

I think either of these things can be true, depending on the goals and intended audience of the project. It's totally valid for someone to make software like this primarily for themselves, and leave it up to others to tailor it to their own needs or contribute to make it more accessible.

I get the impression this project was made for the author's particular use case and isn't (yet) seeking a broad audience. The readme for this project doesn't really explain this, though, which makes me realize several of my own projects don't clearly set these expectations either.

Poor Man's Web 3 years ago

ISPs that allow hosting web services are fairly common, but you're right, if all your local providers forbid it, you're probably out of luck.

For your second point, Dynamic DNS is super useful. I've had a good experience with noip.com/ddns.net, but there are plenty of other options out there.