I've been making excessive amounts of bread.
(We intend to get rid of pagination once the next implementation of Arc is ready.)
What should it be called? What day should it go out?
The list of bi-weekly paychecks for 2020 is here: https://www.nfc.usda.gov/Publications/Forms/1217n_20.pdf
Meaning that June's thread should be on the 20th. July on the 18th. August on the 15th. September on the 12th. October on the 10th.
So, people who start working on something new at the beginning of the month are ready to talk about their projects
I'm also going to partition them by topic, since there are so many.
If you're worrying about infinite scrolling, don't; we'd never.
So you are adding endless-scroll? One of the Web UI things that the HN community regularly complain about on other sites?
Please make it optional. :)
Not necessarily. I seem to remember that HN used to be without pagination, all the comments were just listed on one page (without any JS to load more comments etc) but servers started to struggle when HN got more users which led to sometimes too many comments, so they added the pagination.
Somehow I associate this with the thread when Steve Jobs died, but not sure how accurate that is. My memory is kind of sucky.
See also: isomorphic, real-time, serverless and countless others examples of poorly named concepts in web development.
Please don't. Or just make it optional. Infinite scrolling is evil.
Modern caching strategies mean it wouldn't be any database load or concerning computational overhead? I'm no expert on HN-scale sites though.
Anyway, my 2 cents is I'd prefer everything loaded at once, no pagination, no infinite scroll.
Why? Pagination seems like a good idea for really long threads.
Additionally, request count matters more than data transferred. It's much easier to serve 1MB to each of 100 users than 1KB to each of 100K users. n people are already going to view the comment thread for a submission - a several-dozen-KB increase in the amount of data that you send each of them (assuming you're serving them statically) results in anywhere from "little" to "imperceptibly" additional CPU load.
I'm assuming that what he means is that they'll replace the need to click on a link with the 'infinite scrolling' that you see on Fb, etc.
A nice example of how using the wrong programming language for your project impedes your progress/feature delivery.
HN wouldn't exist without Arc, so it's pointless to argue about this. But I love talking about it so I'm going to anyway.
The feedback loops between the language, the HN software, and the living system of the community go very deep. I could write a lot about that. It's one of the most interesting things about the project, though unfortunately not visible. The software just works its Lispy magic behind the scenes, remaining small and malleable. It's still only 15k lines of code, including the language implementation, and that code does a lot.
On performance, it's pretty cool that Arc has managed to run HN through 12+ years of growth without much optimization. It's a good sign, not a bad one, that we're only doing major rework for performance reasons now. HN is far from Reddit-scale, but still: the application runs on a single core. (Though we do cache pages for logged-out users and serve those from an Nginx front end.)
As long as we're on the topic, consider this: the software for both HN and YC was just a single Arc program (and not a large one) for the first 9 years of their existence, during which they went from nothing to massively successful to industry-changing. Written by one person, programming part-time. That is a staggering achievement. The power of using the right language for your project goes far further than most people dream. Our imagination about this is crippled by path dependence, social proof, and the conditioning that comes from only ever doing things the same few ways, like those fish in experiments (which may be urban legends?) who stick to their corner of the aquarium even after a glass barrier has been removed. The solution space of software and programming is so much larger than most of us want to imagine that it is. Sad.
I'm not saying that everyone should use Arc—language/programmer fit is a key part of language/project fit. But when all three variables align, incredible things become possible. Not only HN, but YC would not exist without Arc. Another case that came up recently was Cloudflare; very different language, project, and programmer, but a similar story (https://news.ycombinator.com/item?id=22883548).
Rather, it's that there's a deep interdependency between the three variables of language, programmer, and problem that give rise to a system like HN+YC (which was a single program until 2014). If you changed any one of those variables you'd either have gotten something radically different or nothing at all. So my statement is a bit like saying that YC would not exist without PG; and your objection is a bit like saying: that's an exaggeration, any person who did the same steps at the same time could have arrived at the same place (and perhaps better since that person might have been a better manager as well).
(Not only PG built YC, of course! But PG wrote the software and that was a critical piece.)
I'm not saying that all programs have this property about programming languages—rather, that some do, and they tend to be particularly interesting and creative. For another example, one might say that Unix would not exist without C.
There would be more interesting and creative systems in the world if we were more open as a community to these unexplored spaces. We exclude them in order to have the feeling that we know what we're doing, and we reinforce this by ridiculing and dismissing deviants. The social dynamics that exclude new creative possibilities are incredibly strong, which is one reason why when systems like this do end up succeeding, they tend to be the work of loners, weirdos, or people who have some strange mutation to withstand social pressure. (This by the way is the origin of the "$weird-language is only good for solo programmers" meme, ironically confusing cause and effect.) No doubt other fields work the same way; software is just the one I know well enough for the mechanisms to be obvious to me.
An analogy just occurred to me, which I want to note so I don't forget it. The relationship between a program and the language it's written in is like the relationship between a piece of music and the instrument it was composed for. To say "this system could have been built in some other language" is like saying "this music could have been composed for some other instrument". That may technically be true; music gets transcribed for other instruments all the time, just as programs get ported to other languages. But it misses the most important thing: the creative process by which the music or program got written in the first place.
There are intimate feedback loops between the mind of the composer, the developing music, and the design of the instrument—which possibilities it makes natural/easy vs. which it discourages/excludes. Every instrument and every programming language has a different set of these. They may not differ in what can theoretically be played on them, but they differ immensely in how they organize the space of possibilities—which ones are near at hand vs. out of reach. You can play the same scales on the piano, the cello, and the guitar, but where the mind goes next as it composes a new sequence of notes—not a scale, but a sequence that has never existed before—is deeply conditioned by the instrument it's working with, which is the medium it's growing in. Some next-notes are far more likely than others, and which next-notes those are differs greatly between instruments. In the same way, a program grows by accruing constructs (expressions, statements, forms, types), and the ones that are most likely to get added next are the ones that are most natural and nearest-to-mind, given the program so far. Which next-constructs those are differs greatly between languages.
Since each next-note or next-construct is deeply conditioned by the sequence it's adding to, this effect compounds as the system grows. It follows that, at least for the most interesting and creative systems, a program is literally unthinkable apart from the language it grows in. So much for "languages don't matter"—yet how often that untrue truism is repeated! The reason for this fallacy is that we take a program as if it existed prior to being written, which is impossible.
So when I say HN/YC would not exist without Arc (or Lisp really), I mean it in the sense that https://www.youtube.com/watch?v=rGgG-0lOJjk#t=14 would not exist without the cello even though https://www.youtube.com/watch?v=mhfxM5FOzjQ#t=3 is a thing, https://www.youtube.com/watch?v=x6GZ6xeGnJQ#t=15m would not exist without the piano even though https://www.youtube.com/watch?v=XXGCfW-cGoE#t=91 is a thing, and https://www.youtube.com/watch?v=skdE0KAFCEA would not exist without the electric guitar even though https://www.youtube.com/watch?v=kNFpOh2seqo is a thing.
As long as we're on the topic, consider this: the software for both HN and YC was just a single Arc program (and not a large one) for the first 9 years of their existence, during which they went from nothing to massively successful to industry-changing.
I mean, you don't have to agree, but his opinion is probably more informed on the topic than yours is.
And maybe, because they launch YC companies here and let them advertise job openings here, it's part of their business model.
It probably could be done in the current version, just not done well.
What would numbered pages look like?
e.g. "1 2 3 4 ... 10" links or something like that instead of a single "More".
Arc has a public fork called Anarki, which is built on Racket. The Anarki version of the forum differs from the Arc forum, which differs from HN's own custom instance, which is closed because of various YCombinator business reasons.
For example, the latest release, Arc3.2, came out in 2018, and was relatively minor (http://arclanguage.org/item?id=20772). Arc 3.1 was released in 2009 (http://arclanguage.org/item?id=10254).
Are there any details about this anywhere? What's it written in?
Surely there might be some portion of the 1,200 people who posted today that may want to delete their submission in the future.
Allowing them to do so would be civil don’t you think?
(There may also be those who figured out there is a risk here and just avoid sharing anything anymore, but that’s another story).
As I've explained many times in these conversations, we're happy to delete specific posts and to redact identifying information. What we don't allow is wholesale deletion of account history. You disagree with that—you've said so dozens of times—and this has now become repetitive and your behavior has become abusive. Actually, it became abusive months ago, including with surprisingly vicious comments in email. We try give people the benefit of the doubt and cut them slack for as long as we can, but I don't see what else to do at this point but ban your account and ask you to stop.
Please just delete all my comments. Including this one.
Of course, a truly Evil™ company would have both options available: a visible icon for transparently pinned comments, but also the ability to invisibly pin a comment to influence readers. There is no real foolproof method, unfortunately.
All pretty cynical, though.
Maybe a line between the "add comment" button and the first displayed comment?
Planning to add sorting and voting (If this interests people)
Is there any chance to get client-side thread collapsing?
Use case: suppose I'm interested in reading about side projects and not pagination or I'm "done" reading about side project X and want to get on to side project Y. If I could click to collapse the entire pagination thread (client-side only) and then later collapse project X's thread, that would represent an improvement in experience on this thread. (It's less clear that this applies generally to topics with 50 comments, but over 250, it could help.)
We have an experimental feature to highlight new comments if you or anyone wants to give it a try - email email@example.com. But you'll still have to scroll through the pages to find the new ones.
Worst case, if it did turn out to have a major negative effect, I hope (I pray?) we would have enough killer instinct to claw it back.
I can honestly say that I've never seen you act on HN other than in a positive way, and reading your contributions is part of the delight of visiting this site =)...
Sorry, it's just I can think of so few other sites where my first thought on seeing a mod post is not, "Oh what happened now..." and I just wanted to thank you for all the effort that you put in.
Let me know your thoughts, will add more details and links after i wake up tomorrow.
Stay safe everyone.
Edit: while I have you: you've posted several links to that already, plus you posted 10 of these: https://news.ycombinator.com/item?id=23189273. That's not allowed on HN—users consider it spamming—so please don't. It's of course ok to link occasionally to your own work when it's relevant, but not to use HN threads aggressively for promotion. The idea is always conversation, and one can't have a conversation with a commercial.
Hopefully, this will reduce the use of virgin plastic for creating art pieces in 3d printing community and you might be able to create beautiful and useful things out of waste plastic while cleaning plastic waste from the environment.
It's a profitable business.
I worked on this in my free time during quarantine.
I want to make the project more accessible so people around the world can develop local recycling unit. There is lots of work which needs to be done including making parts more standardized, demonstrating how parts fight together in a visual way and also have a microcontroller firmware to control diameter of filament. I don't have much experience with microcontrollers but I've ideas, so we'll see.
Any idea how they are doing it?
Wood drill has continuous flight depth while extrusion screw has 3 zones. In compression zone, flight depth is gradually reduced to compress polymer.
Other than this, I think you'll have problem with finding reasonably straight wood auger drill.
With precision machine barrel and screw, screw will not touch barrel wall.
You can experiment with wood drill and steel tube but I doubt you'll get consistent diameter filament with it.
If you fancy making cheaper one for small scale/personal use, try this one:
I'm thinking about making the extension intercept the traffic to the website of my favorite delivery services and automatically place the call so the button click also won't be required.
We were in the same office and needed a fast, simple way to communicate with eachother without coming in close contact (covid 19) and wanted to do that over LAN rather than use tools over the internet NOR use our ancient intercom system. So now we are using this internally for fast file sharing and good quality video calls.
Going to be introducing group calls soon and also the ability to integrate online calling and file sharing.
you could also introduce differnt channels, so different groups of ppl can chat . And you should add text chat through the data channel
It works over some VPN's but not all. We will look into why and try to resolve.
Yes, it works very well when we need to call eachother or share files with eachother in the office. At home, I mainly use it to share large pictures and videos with my wife as it is very fast.
Yes, different channels and group calling should be added. We could add a chat function in it aswell.
Even though it is based on your local wifi and the data never leaves your home/office network, we have still encrypted it by default so we can integrate online calling and file sharing in a secure manner and dont have to redo the whole security aspect again!
We want to refine it a bit further before taking it opensource. :)
I've built this tool because satellite imagery can be extremely beautiful , and I was looking for a way of regularly receiving high-resolution satellite views of arbitrary locations such as the center pivot irrigation farms of the American heartland  in my timeline. Plus, for obvious reasons, it's nice to see the world without actually having to go outside right now.
Currently, I'm running two Twitter bots based on ærialbot:
* @americasquared, which posts one randomly selected square mile of the United States every 4 hours: https://twitter.com/americasquared
* @placesfromorbit, which analogously posts a 5×5 km square anywhere in the world every 6 hours: https://twitter.com/placesfromorbit
EDIT: I read the readme and of course you mentioned Earth View :). Leaving the links for other people who might be interested.
I don't know a lot about image processing algorithms but clicking "Auto" on google photos tweaks basic stuff like exposure, contrast, highlights, shadows, vibrance etc. so the image has a lot more "punch".
* Some areas of the world are just naturally fairly flat and monochromatic, so a dynamic contrast/saturation/brightness adjustment (e.g. one that would turn the darkest pixel black, the brightest pixel white and linearly map the rest between these extremes) would not work for these areas.
* The available satellite imagery has been captured and processed in a variety of ways depending on the region, so a constant contrast/saturation/brightness adjustment might work well in some places, but overcorrect things in other places (especially urban areas in the US and Europe tend to already be fairly saturated and contrasty).
Basically, doing this well would involve a whole bunch of testing and fine-tuning. And since not even Google (the source of the imagery) seems to do this, I decided not to bother: Keeping the data basically the way I receive it is easy and "honest".
In the end I ended up using Next.js as a static site generator that pulls all the routes from my directory structure, making it possible to add new photography collections and filters as I go.
Might be overkill for the use case but it was fun to learn. The irony is I had to write a bunch of JS to produce it.
Still need to optimize the image sizes and I am thinking about adding filters for b&w/color/format.
I use a utility called jhead to resize, fix rotation issues, and rename photos by date - then I tied this to a folder action on macos so I can just drop photos in a folder and they get renamed and resized.
Then Hugo has this cool 'smart' cropping feature which tries to crop based on content  - and the end result is now all I do is drop photos in a folder and publish and it comes out looking pretty good .
I ended up using sharp  since it was so easy to integrate into my workflow.
No JS would have been nice, but ended up making the content draw and re-flow in JS as I wanted to keep the aspect ratio of the thumbnails instead of showing a bunch of squares, for which a simple flexbox would have been enough.
I still have to write a decent README
OP, have you tried loading="lazy" ? I don't know if it works with the picture tag but it is worth trying I think.
Very often, webpages contain many images that contribute to data-usage and how fast a page can load. Most of those images are off-screen (non-critical), requiring user interaction (an example being scroll) in order to view them.
The loading attribute on an <img> element (or the loading attribute on an <iframe>) can be used to instruct the browser to defer loading of images/iframes that are off-screen until the user scrolls near them.
For those on mobile and can't right click
<source srcset="https://static.hansenzhang.com/travel/places/2019-07-04-nort... type="image/webp">
<source srcset="https://static.hansenzhang.com/travel/places/2019-07-04-nort... type="image/jpeg">
<img src="https://static.hansenzhang.com/travel/places/2019-07-04-nort... alt="travel/places/2019-07-04-northcarolina-3-color.jpeg">
I was curious about the picture tag. Here is what Mozilla documentation says https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pi... :
The HTML <picture> element contains zero or more <source> elements and one <img> element to offer alternative versions of an image for different display/device scenarios.
The browser will consider each child <source> element and choose the best match among them. If no matches are found—or the browser doesn't support the <picture> element—the URL of the <img> element's src attribute is selected. The selected image is then presented in the space occupied by the <img> element.
To decide which URL to load, the user agent examines each <source>'s srcset, media, and type attributes to select a compatible image that best matches the current layout and capabilities of the display device.
The <img> element serves two purposes:
It describes the size and other attributes of the image and its presentation.
It provides a fallback in case none of the offered <source> elements are able to provide a usable image.
Common use cases for <picture>:
Art direction. Cropping or modifying images for different media conditions (for example, loading a simpler version of an image which has too many details, on smaller displays).
Offering alternative image formats, for cases where certain formats are not supported.
Saving bandwidth and speeding page load times by loading the most appropriate image for the viewer's display.
If providing higher-density versions of an image for high-DPI (Retina) display, use srcset on the <img> element instead. This lets browsers opt for lower-density versions in data-saving modes, and you don't have to write explicit media conditions.
The resolution scaling is a good idea as well. I used the picture tag initially as a fallback for browsers that don't support webp images. More importantly I need to actually create scaled images which I have been putting off...
Thanks for your comments/advice!
Neat photos though.
I've tried to make it intuitive enough that you don't have to read a page of instructions first but let me know if I've missed the mark. I'm hoping you can learn the gameplay mechanics as you play.
One thing that may make this easier is beveling the edges of the tiles slightly so you don't accidentally select letters on either side of the diagonal unintentionally.
> One thing that may make this easier is beveling the edges of the tiles slightly so you don't accidentally select letters on either side of the diagonal unintentionally.
Thanks, I'll have a play with that. If you use your web devtools to inspect the HTML, you should see over each letter tile, there's actually an invisible tile on top of each one at a 45 degree angle that's being used as the real touch/mouse target for selecting letters (as accidental selection is awful if you use the actual tile as the target). Maybe there's a more reliable way but playing with the target shapes and sizes will probably help.
And maybe I wanted vowels and consonants to look different (maybe a subtle-ish color change) so I could see at a quick glance how I'm doing at board management. But who knows if this would be useful in practice. (Actually now I wonder if I can do this myself in CSS...)
I partly moved from 5x5 originally to 5x6 because it looked better on mobile/portrait but then I found in play testing more letters gave people more room to manoeuvre when the orange/bonus tiles start appearing (where you want to delay using them).
> 1. "?" is a wild card, right? (meaning it can stand in for any letter)
Yep! It'll autocomplete to a valid letter as you use it - there should be tons of valid 3 letter words so I was hoping people would figure it out with a quick bit of experimenting. Try just making up a long word to see if you can find one for big points (at the cost of the time it takes you to guess).
> 2. I once got a diphthong "qu" in a single tile - not sure if it was a glitch?
Yep, there's no "q" tile, only a "qu" tile to make it easier to spell something. Adding diphthong to my personal dictionary!
> 3. Why is a tile sometimes yellow?
- Word scores directly depend on the length the word and goes up quick e.g. for a 3 letter word you get only 1 point (a deliberately lame amount), then 4 points for 4 letters, 9 points for 5 letters, 16 points for 6 letters, 25 points for 7 letters.
- The exception is yellow/bonus tiles are counted like they were two letters when calculating the word score, so one or more bonus tiles in a word grows the word score massively e.g. a 5 letter word using 2 bonus tiles will get you 25 points instead of the usual 9.
- You get rewarded a bonus tile if you spell a long word (this one for sure isn't obvious unless you play several games).
One of the core strategies is to earn a few bonus tiles with longer words, then make maximum use of them to level up by spelling words using multiple bonus tiles at once.
For the scoring, I was hoping for players to go through this thought process 1) "hmm, 3 letters words only give you a single point" 2) "4 and 5 letter words get way more points, and the score goes up rapidly by the length of the word" 3) "the bonus/yellow tiles boost the score up even faster". Sounds like this needs more work though so thanks.
You actually get an extra second before your time runs out to increase the chance of "just in time" saves. :)
After a few levels I found clusters of letters I was having trouble with building up over time (there was an “X” right in the middle, and like six “I”s clumped up). I found myself wishing there was some mechanic that could clear them out. Maybe that would make it too easy though.
I really love the animation when you make it to the next level, very satisfying.
On mobile safari, holding your finger on a tile for too long causes a text selection.
I’d love a “zen mode” with no timer!
> After a few levels I found clusters of letters I was having trouble with building up over time (there was an “X” right in the middle, and like six “I”s clumped up). I found myself wishing there was some mechanic that could clear them out. Maybe that would make it too easy though.
Yep, this seems worthwhile looking at. Maybe smarter letter randomisation would help this e.g. don't allow a new "I" tile in a place that has two "I" tiles already, don't allow clusters of consonants.
> I really love the animation when you make it to the next level, very satisfying.
Great! I thought I needed something flashier so I'm happy this could be enough.
> On mobile safari, holding your finger on a tile for too long causes a text selection.
Ah, thought I caught that. Thanks!
> I’d love a “zen mode” with no timer!
Yep, I want to figure something out for this. It's pretty fun thinking of different scoring mechanics and how this impacts gameplay strategy.
Haha, we have the same confetti effect at the end. Nice work! Is the situation with iOS and PWAs any better since you last worked on it (I saw your note about a few issues on the GitHub page)?
PWA’s are slowly becoming better on ios, there was another new release of safari that fixed a lot of bugs. But it’s still very niche, since Add to Home Screen is so hard to find for users
1) Trail Router (https://trailrouter.com) - This is a running route planner that favours greenery and nature in the routes it generates. It can generate point-to-point or round-trip routes that meet a specified distance. I developed this because I am (or was...) a frequent traveller for work, and want to run in nice areas rather than by horrible busy roads when I'm visiting somewhere new. Naturally, the utility of this tool is limited at the moment for people stuck in lockdown!
2) Fresh Brews (https://twitter.com/FreshBrews_UK) - I've been touring the UK's finest craft beer breweries from my own home in recent weeks. New beer releases sell out very quickly and I was frequently missing out. Fresh Brews is a simple bot that monitors the online shops of my favourite breweries and posts when a new beer is released to the shop, or an item comes back into stock.
Would be cool to see how you built it, if you put it on github.
I’m curios about building a similar thing for cycling – crazily neither Komoot nor Google Maps let you filter by type of road, and I’d like to select only bicycle paths and roads where cars can‘t go. Even if it means cycling much longer, I’d simply like to avoid cars and in Berlin it’s possible 90% of the time.
I'll probably write a blog post on how it's built though - there's quite a lot going on under the hood!
Supporting cycling is a possibility for the future. I don't think you'd want to absolutely exclude non-cycleways (as it might make many routes impossible), but you could certainly weight very heavily against them and show on the map which parts of the route were dedicated to cyclists vs which were not.
If you have the time, I’d also love to read a blog post (or even series) explaining how you built this. Your answer on the Graphhopper forum was very clear and makes me think that a more detailed version could be super useful for a lot of people.
Subscribed to you on twitter to get updated if you publish a post on that!
The thing on absolutely excluding – yes, maybe some things are impossible, but in my planning, it’s really about the journey, so even if I have to go additional hundreds of kilometers, so even in terms of extra days, but via cycling ways and tiny country-side streets (without max speeds over 30km ideally or similar) and not see fast moving cars almost at all, which in Berlin/Brandenburg area, for example, seems to really be possible if you plan it manually. Judging by the success of applying your rules on the trails it surely can be done better than I have seen so far.
For my region, I'm pretty happy with it (although it has its issues in places where you have to pass along bigger roads for short distances). It's OSM-based, though, so that might vary.
I'd actually also be willing to donate a little for the development of such a cool tool.
It's not open source yet, but I might open it up in the future. There's a donate link hidden away in the About page. Any donation would be much appreciated, and would help with the server costs (it needs a huge amount of RAM to store the whole planet's data).
I for one would positively crave an option to seek out hills. I've always found London far too flat for my taste.
The only thing I noticed is that it seems to prefer going next to water over anything else and have a slight tendency to take detours to run next to very small city parks. Running past a small city park for 50 meters might not be worth the detour.
This is great work! I've been doing this manually, so I appreciate you building this. Bookmarked!
Here's a link to an example route that I got that includes one: https://trailrouter.com/#wps=52.32928,20.94020%7C52.32805,20...
Here's a link to that cemetery on OSM: https://www.openstreetmap.org/way/60865696
1. Would it be possible to add an undo button for when changing a route goes wrong?
2. I think this would also work really well for planning routes and/or measuring their precise length. In fact, I have been looking for such a tool for ages! One like yours which also allows taking small tracks and paths and not just roads! Unfortunately, currently it's still somewhat difficult to select the precise route as changing it in some place might suddenly change it almost entirely. (Again, an undo button would be nice.) I assume this happens because Trail Router still tries to minimize a certain loss function? Would it be possible to disable that entirely, so that one could "free-draw" routes?
[UPDATE]: Just noticed that one can actually disable all routing preferences. This seems to be doing the trick – very nice!
Really great work!
19 miles and over 3000 feet of elevation climb. Nice! :)
when I run, I sometimes pick an entirely different route midway, just to avoid waiting at a light regulated intersection.
being able to filter those out would be a real winner for me, I dont know if traffic lights are indexed anywhere though.
Wanted to +1 others request for learning more about how its built!
Kudos and stay safe :+1:
There is a setting in Trail Router to "Avoid Potentially Unsafe Roads" which makes it much more conservative about road choices.
It uses OSM data for routing information, but this is quite poor for pedestrian safety (particularly in the US it seems, where some 'secondary' roads are very safe, and others are death traps). There are specific tags for foot access and sidewalks, but they are rarely used outside of cities. Crossing the I-95 should only be done if there's a bridge going over it, it should never take you across the lanes of traffic (!). If it does, please do email me a link to the route if you don't mind.
The Triborough bridge had a pedestrian walkway; I've never made it across because the rail is below my center of mass, and nope.
* Add sliders for setting greenery and hills preferences (so you can _prefer_ hills, rather than just avoid them)
* Add support for preferring particular surfaces (e.g. tarmac vs trail)
* Add support for creating distance-specific round-trip routes that pass through one or more waypoints (at the moment you can only specify a start/stop location for round-trip)
* Sometimes round-trip routing suggests some very complex routes which would be hard to follow when running. Some work could go into simplifying such cases.
* Improve the UI/UX, it's still quite fiddly, especially on mobile
* Cycling support
* Native mobile apps (there are already mobile apps for Trail Router, but they're basically WebViews)
* Offline routing support in the mobile app?!
* Direct sync'ing of routes to watches/Strava would be nice, but there's no open APIs for this yet.
If you have any other suggestions feel free to chip in!
It is an electron (toolbar) app, which uses WebRTC, so should be fully P2P.
It is too early to use or show, but I did not want to miss out on this thread!
I'd definitely be trying this out when its ready!
It's sort of starting to make the transition between a pile of ideas and an actually useful tool at the moment. The whole idea is to be a vector editing application that works more like a bitmap tool when it comes to painting, so there's a flood-fill tool and a way to build up paths just by drawing on the canvas rather than having to manually mess around with control points.
The way I built the UI is unique too I think. Choices for UI librarys for Rust were quite limited when I started so I built it to be easy to move to different libraries. I don't think there's any other UI library in existence that is as seamless for switching between platforms (or which can turn from a native app to a web app with a compiler flag without resorting to something like Electron)
Something else that’s a problem is that as a drawing app, FlowBetween wants to be able to get access to data from a digitizer: pen pressure and tilt in particular. A lot of UI libraries don’t think to pass that through from the operating system, or have an awkward API (browser support is also very spotty for this)
If you’re trying to do touch and pen on non-web platforms, things tend to be very messy if you want to handle all three types of pointers optimally.
But browser support spotty? I find the pointers events API a marvellous abstraction over platform differences, doing the right thing automatically for >99% of cases, and making the remaining cases possible. The only thing I feel it actually lacks is standardised gesture support for touch. I wrote a simple pressure-capable drawing app a couple of years back in the very early days of pressure-sensitivity (back when Edge was the only browser on Windows that supported it, so I targeted Edge only until other browsers got it), and I found it a refreshingly straightforward system to work with. And since then, everyone implements things like tilt and pressure.
So I’m curious to hear what you’re quibbling over, as someone that’s been using this stuff in anger more recently than I.
Other browsers don't do this, but they've had a few other issues: what I remember in particular - some only support pressure information using the touch API, and some seemed to support pressure information on different APIs on different platforms, so both pointer events and touch events were needed.
All of these are maturity issues rather than real problems with the API, though and I haven't re-checked some of the older issues recently - that Chrome issue was still happening back in January so might still be around, but the others I last encountered over a year ago so may have been fixed by now.
I believe that the pointer events API is in current browsers now uniformly superior in functionality to the touch events API which it obsoletes.
When I started I picked Rust because I’d been learning it and wanted to try using it on a more substantial project. I’m very happy with it as a choice of language: it definitely has a difficult learning curve especially with the way borrowing looks similar to references in a garbage-collected languages but works very differently. However, it’s a very expressive language: something about it makes it very easy to write code quickly that’s still very easy to follow later on.
I suspect everyone goes through a phase of hating borrowing when learning Rust: it's helpful to know that it's something that eventually 'clicks' and really stops being an issue. It didn't exist when I was learning, but 'Learning Rust with Entirely Too Many Linked Lists' looks like it would have helped a lot.
A major issue that I've seen is that of most beginner-focused educational content not being fast enough to learn with for the more experienced developer. This along with the fact that time is often a big issue for us. I've had numerous times where I had to learn a new framework within a 1-2 week time span in order to plug some work gap or speed up a project, and found no legitimate resources that could allow an intermediate developer like me to learn faster.
This is why I am currently creating content targeted specifically at intermediate to advanced developers and teaching new languages and frameworks (using the 'constructivist' method) in a way that makes the process of learning them much more efficient. In short, faster.
It's a little rough around the edges but you can check out the blog where I share my current tutorials here: https://fromtoschool.com.
To gain a better understanding of why the method of teaching that I've described is more efficient than others for the intermediate developer, check out this post: https://fromtoschool.com/why-most-programming-tutorials-are-....