Please make your products work with URLs
anderspitman.net
anderspitman.net
Samsung’s Tizen OS is the most genuinely frustrating experience I’ve had with a consumer device outside of printing. Advertisements on my home screen that can’t be disabled, dubious privacy, bugs that require me to reboot my TV, and of course security so bad that they recommend installing a virus scanner? Yeah, that’s great. It’s got a web browser at least, though that’s the only positive thing I can really say about the web browsing experience.
Can it run software? If you can find it! There’s no app ecosystem here, just the big apps it absolutely had to have to be worthy of shipping. If you want to watch Twitch.TV streams for example you are SoL. There was an unofficial Twitch app, but it was removed from the store.
I tried to set up development for Tizen. Yeah not gonna try that again. I always thought getting started with development on Android or iOS was a little cumbersome but it really doesn’t compare. Even getting into developer mode was challenging since I had trouble finding the instructions that were pertinent to my model of TV, and that was the last thing I accomplished successfully.
So I’ve got a desktop computer hooked up to my smart TV and now I am contemplating paying more for a TV so I can get one that doesn’t have any of this dumb crap on it. The only downside? You can’t really run many 10 ft versions of things, and there’s not many good casting solutions. Lame, but every time I run into a new pathological case with the TV OS and its set of subpar apps I reconsider how much it’s even worth to have fancy 10ft interfaces and smart phone integration.
(If you are looking for a casting solution for an HTPC running Windows, I tried Reflector 3 briefly and it looks pretty good. But I personally do not run Windows on my own HTPC, so I’m stuck in the dark.)
The TV itself is a black box of mystery, and does NOT get to go on my network. It doesn't need my wifi password, and I certainly don't want it sending screenshots of my desktop (with sensitive information) off to some advertising agency. No thank you! But far more importantly, the TV will last for years as a dumb monitor, and the external box is usually much cheaper, and can be upgraded and secured separately. This just feels like the correct model.
I was never able to build a HTPC that worked with all the video sources I wanted (Plex, Netflix, Youtube) and was possible to control without ever having to touch a keyboard/mouse (or resort to a janky air mouse/remote thing). With the Shield + a Logitech Harmony Hub, a single dead-simple remote controls entire setup (Shield, TV, external amp, plus a BluRay player that I never use anymore).
[1] Note: I only have a Roku 2nd Gen. The newer ones look a lot better and are probably a fine option now, but I still really like the Android TV "Home" experience a lot more.
I'd go farther. I want everything to be external boxes. Right now I'm looking at having to get a new A/V receiver because mine cannot handle 4K video. It does all the audio stuff I need just fine.
If video switching and audio processing was handled by separate boxes, I'd just be looking at changing out the video switching box.
Now suppose that later I decide I would like to be able to control my receiver with Alexa or Google Home. As it is now that will be another "replace the whole damn receiver" moment. If it were all separate boxes, the preamps, amps, surround sound processor, and radio receiver would all be separate components, controlled by a controller box. If I decide I want Alexa, I'd just buy a new Alexa compatible controller box.
Or I decide I want to upgrade from 5 channels to 7 channels...buy a couple more amp boxes and speakers for the new channels (and might also need a new surround sound processor box).
Basically, take a block diagram of a complete full featured home theater system, and make every block in that a separate box so I can (1) just buy the boxes I need for my system, and (2) upgrade a box at a time.
That said, I doubt TV makers will ever stop primarily making Smart TVs. A Smart TV can function as the only component of a home theater system. Someone moving into their first apartment after school, say, wanting to start putting together their entertainment system can start with a Smart TV, stick it on their home internet, and then use the Netflix/Prime/Disney+/etc app on the TV to watch movies.
That Smart TV probably has a few HDMI in ports, so they can also use it with the cable box if they have cable, and with their gaming consoles.
With a dumb TV they'd need the TV, and they would need an A/V receiver, and speakers, and something to run the Netflix/etc. apps. Buying all that at once might be a budget buster for someone starting out.
By making the TVs smart, the TV makers greatly increase the chances that a TV will be the first component bought for a new home theater setup, and probably also increases the chances that that first TV will be a big screen, high resolution, high quality display model.
I could not figure out how to do this with any other combination, and this strikes me as fairly baseline usability.
lets hope they can deliver.
It's actually pretty hard to find a media player that supports Dolby Vision for example. No Android media box does, and as far as I know Windows support is very patchy. At least with webOS it supports all the video formats the TV supports.
Interestingly, apparently in the UK (or maybe EU?) there's a defined period an appliance is required to work for, to be "fit for purpose". Note - not a warranty thing, it's a consumer goods thing.
Not living in the UK any more (thanks Brexit), so don't remember off hand the period of time though.
I always laugh when I see something say "1 year warranty" as I know two years is required.
[1] https://www.consumerprotection.govt.nz/general-help/consumer...
[2] http://www.legislation.govt.nz/act/public/1993/0091/24.0/DLM...
It's a DLNA/UPNP client so I can cast anything I want from my media server on my computer to it (Bubble UPNP is a great app to control all this from my phone) and even though it doesn't have "cast" built into apps like Youtube and Twitch, they're all supported as addons so you can still get 90% of the functionality, so I can finally throw away my Chromecasts. Plus you can either use the TV's remote with HDMI-CEC out of the box, or hook up a wireless keyboard.
With another pi running TVHeadEnd that I feed my aerial into, I basically don't need any of the builtin TV software anymore, Kodi just controls it all. It's a pretty liberating feeling.
I haven't yet circled back, but my conclusion was to give up on it and instead pursue an end-to-end solution like Plex or Jellyfin.
It currently serves around 3TB of video and audio files, and new files are added daily. I haven't restarted either the Pi or the minidlna service for many months.
I choose this option because it is a very light-weight solution with no features that I will never use (like trans-coding or metadata downloading, poster art etc).
There's a Firefox extension called "Send to Kodi" that I use to quickly cast Youtube videos and other videos from my PC to my Kodi. On my phone I use Kore, which can send a URL to Kodi using the standard Android share menu (hold a link, Share > Play on Kodi).
Kodi also supports UPNP so you can use one of the million available apps for that to allow some other media servers as well.
It's not perfect, but Kodi has managed to satisfy my video consumption needs quite well. I'm using an outdated version (it's running on my server which runs Debian stable) but I haven't run into problems thus far.
Setup sound bar.
Connect new TV to HDMI switch.
Get the TV working with my remote.
Throw TV remote in a corner somewhere....
I don't even try to use a smart TV's internal functions anymore. They're just big monitors to me.
Guessing they haven't started shipping with a dictionary to try brute forcing the most common passwords. :D
I do worry that one day someone is going to buy one of those Comcast modems that has the automatic Xfinity guest networks and it will find that ...
There would be some kind of backlash if those TVs connected to one and was able to phone home. Don't know how bad, probably on the order of the smart TV that was phoning home with the name of the contents of and flash drives you connected.
I used to do the whole HTPC thing but having to use an actual web browser to access half my content felt obnoxious and cumbersome.
As for avoiding smart TVs, I found it pretty easy to just ignore the WebOS garbage on my LG. I don't see why I would want to pay more to get rid of a feature I haven't had to interact with since setting the device up.
But can any of them be trusted? Serious question...
Apple TV is a pragmatic option for the sort of person that doesn't mind the Apple Walled Garden.
Xbox One is a pragmatic option for the sort of person that doesn't mind the Xbox/Microsoft Walled Garden.
NVidia Shield and FireTV are pragmatic options for folks that prefer the more Android-ish "mostly a Walled Garden, but".
If your threat model is anything with a corporate or walled garden smell, then sure none of them can be trusted and just build your own media PC with Linux and whichever apps you feel you can trust.
I intend to replace the Rokus.
I like keeping privacy private, but I'm having a hard time imagining what sorts of private data you are concerned with that would be going over a set top box.
Or were you more worried about the STB being an attack vector into your home and other machines?
The computer can be as cheap as the video quality you want to view... and a decent 1080p projector can easily be had for ~300 USD, bump up the computer to gaming specs and run your entertainment off of it and you've got a nice multi-use solution for the house... unless there is competition for resources.
I've said it before here, but I'm getting a second hand NEC commercial display as my next TV. I've used them at work and they are excellent panels.
Unless average Joes start clamoring for that, all of the cost associated with what you're asking for wouldn't help them sell a significantly larger number of TVs.
I bought an LG OLED last summer (a 55" C9) and to be honest I don't hate the software (webOS) on it. However my setup is not really normal.
Firstly my TV is connected via Ethernet to my router and is restricted to only Netflix, the LG web store and my internal network.
I don't watch live TV, instead my viewing is limited to Netflix and content on my Plex server. Turns out the LG Plex app is very good. The TV supports pretty much every video and audio codec so I can do Direct Play from my Plex server. I mostly have direct Blu-ray streams extracted and remuxed into mkv files so there is no quality difference with using Plex vs. the actual Blu-ray. The rest is a mixture of H.264 and H.265 video with AAC and DTS audio in mp4 or mkv files. Everything plays perfectly with quality on par with or exceeding Netflix to give a comparison.
This setup works great for me. I only really interact with the TV OS to switch between Netflix and Plex which isn't a big deal and the picture quality of the OLED panel is incredible with 4K HDR content.
The real star of the show is Plex though which is just god damn fantastic. As everything I have is Direct Play compatible I can (and have) run the Plex server on a Raspberry Pi with a USB HDD attached and it works perfectly. Even for 80GB 4K HDR movies (direct Blu-ray remux files are large!) plays back from a Pi running openmediavault and Plex media server in Docker.
In the past I have tried a few different solutions such as a HTPC running Windows plugged directly into the TV but nothing gave me as good picture quality with the same flexibility as using the native TV apps.
In fact the Plex on a Pi setup works so well for me I set one up for my mother when I visited over the new year. She can watch any content on my Plex server as well as anything I upload to hers (as she often wants things I don't care for so don't want using up my disk space :)
If you haven't looked into Plex I highly recommend you check it out. It really does 'just work' which is so nice when you want to sit down and watch a movie without having to deal with all the adverts and junk before the movie on a Blu-ray disc.
I am always open to alternatives however with everything I have tried over the years nothing has come close to how well Plex works. From the flexibility of running the server to the superb automatic content identification to the frame perfect delivery to my TV it has been flawless for me.
However I feel I should point out again that I don't use the transcoding feature so I cannot comment on how well that works.
Alternative: Emby https://emby.media/
Open-Source Alternative: Jellyfin (fork of Emby v3) https://jellyfin.org/
Subtle. :) Anyone know the motivation for this fork / dig against Emby, other than the premium licensing?
Yes, it's more expensive than a smart TV, but the only reason is because smart TVs are very literally subsidized by future data collection and monetization.
Not trying to minimize that this could still be too much money for some people, but frankly, a one-time extra $250-300 to permanently escape that whole tracking situation is just a lot less than I expected.
I'd also like to point out that most of the sub-$400 Smart TVs on Amazon don't have any DisplayPorts, and the display is probably of a lower quality than something that's designed to be looked at from a couple of feet away rather than dozens of feet.
Bigger than 42", I'd just recommend a projector.
What's the main benefit of DisplayPort when most new hardware supports Hdmi 2.0, which does 4k at 60Hz?
How would you define lower quality based on viewing distance? What metrics are we going by that we might expect to be worse? There probably are some, but I can't think of any off the top of my head.
Reaponse time is the one that comes to mind, not because of viewing distance but because of different intended use cases, but I specifically account for that when looking for a TV to use as a monitor.
You need to sign packages with a certificate you get from Samsung and tie it to your device ids for sideloading. For that, you need Tizen Studio, which is a custom outdated version of eclipse, depending on outdated versions of some external libraries. I tried it in a container, which worked fine, except for the signature generation. So I ran it in a sufficiently outdated VM.
Unfortunately, this developer cert will only get you so far and for the complete API, you need a partner level cert.
If you put up with all this, there's the documentation[0]. It takes ages to load and you can't easily download the damn thing, because they pull in the content via XHR. Why, Samsung, why?
[0]: https://developer.tizen.org/development/api-references/nativ...
Me too! When I bought a new Samsung 32" last year, I went very, very slowly as I set it up, so as not to inadvertently connect it to the internet. I succeeded in not connecting and life is good.
Not sure if Samsung is one of the manufacturers of those though.
Yeah, call me when you find one…
I have an nvidia shield which more than fulfills the "smart tv" needs, and I think that's probably the way it should be and stay. I love this setup and just want to disable all the smart features now. It's not like they're in the way but sometimes the tv does decide that "I see you're watching a movie. Now might be a good time to ask you to reboot for the latest software update innit?"
All such radios can be disabled, if not by removing the antenna, then by enclosing it in a faraday cage. It is chilling, though, that these things may become necessary for basic things like appliances.
One downside though is that I only have a couple HDMI ports to work with, so between a Nintendo Switch and a full desktop PC I'm already using all of the ports.
Also, even though I love the NVIDIA Shield, I find it does not really integrate as well as I hoped via HDMI CEC. It's a bit clunky to be honest, and though it's cool I can use the TV remote over CEC, it is definitely not as good as using the Shield remote, due to latency and some weird behavioral differences. So there are also downsides like that, too...
Keeping the comment in case anyone does have a source. If no response, let's assume rumor.
I still get worked up about this. I was able to watch streams on my TV using this app and someone somewhere just decided I shouldn't be able no more. The TV has lost value with this change, to me at least.
That said, I wish there was a dumb TV option.
Samsung/Tizen was one of the worst in my experience (the only thing I found more annoying was PlayStation only giving a windows sdk when the box itself is basically a BSD. Let me develop on Linux dammit!)
Yes, me too. I have an old dumb TV, and will use that until it breaks. When that happens, I won't be buying another TV at all, since as near as I can tell, the "smart" kind will be the only kind on the market.
> You can’t really run many 10 ft versions of things ...
Huh?
My media server is in a ventilated closet, so I'm using ~15 meter HDMI, USB and audio cables. It was admittedly an expensive HDMI cable, but it seems to work well enough.
Isn't it easy to tweak all that? It is in Debian, anyway.
Virtually universally, videos are embedded in webpages, and occasionally a link is provided that downloads rather than plays a video.
So I think this is just a use-case issue: the average user is exceedingly unlikely to ever want to watch a raw video file specified by a URL, because you just don't come across them in the wild. So therefore Roku didn't build that feature.
And that's 100% justifiable for a consumer product. There's no philosophical reason why a consumer product should support computational primitives like URL's or files when the use case is rare or non-existent for the target market.
I mean, if this were a command-line utility then it would be a different story... but it's not.
Obviously the protocol descriptor would be different from HTTP/HTTPS.
Uploading the video to YouTube is typically a much simpler way to get the job done these days, because it works off of things you likely already have and require only moderate technical skills, while setting up a server that can serve files over HTTP(s) on your home network is the kind of thing that would get your parents to start calling you a "computer whiz" in public again.
But that all died out, it seems. So I get that history could have continued in that direction... but it didn't, I guess. It sure would have been interesting if it had, though.
Here is one of many examples (look at the bottom): https://media.ccc.de/v/35c3-9462-what_the_fax
I see those all the time.
There are plenty of philisophical reasons to support it, you might disagree with them, but that doesn't mean they don't exist.
Also, more generally, while videos do tend to be embedded in web pages, some of these pages are nice enough to provide a download link for the video.
But then I thought about it, and the URL thing is a red herring. That's not what they really want -- that's an implementation detail. What they really want is the ability to play something from their local server on their TV. This is totally do-able in the Apple eco-system. The URL thing is exactly what you don't want. Who wants to type a URL into their TV using their phone as a virtual keyboard or not? (Which the AppleTV + iPhone combo does this great too...)
The best option is where you could "cast" any video/media you're watching on a phone or computer up to a TV. The AppleTV + iPhone (or Mac) combo does this great.
Also, just to understand, what does Roku get out of blocking your ability to potentially see non-DRM content? Is Neflix going to pull their app if Roku starts displaying urls?
When it works, it works well, and it is nice to just press a button and whatever I'd like to use is up on my TV. It does feel a little magic.
But even when you're using compatible tools / devices that should work together, sometimes they mysteriously don't, and there's absolutely no way to know what's going wrong. Approximately 25% of the time, my Chromecast device just doesn't seem to exist according to my computer. Both my computer and the device have network connectivity, but there's just no ability to cast. I'm reduced to randomly restarting things in a vain hope that things will work.
If you stick your Chromecast and your phone in their own broadcast domain I think the problem would disappear. Unfortunately it’s not a solution to whatever is spamming your network but it would tell you that that’s the problem.
1) I copy some URL on my phone or computer
2) I open the VLC app on my Apple TV and select the URL field
3) My phone buzzes because it recognizes an input field
4) I paste the url and press play
The nice part is that you can also use that to watch Acestream content if you run some Acestream container on your NAS / Computer exposed via a http proxy and just paste that URL into VLC on the TV.
"We Suck At HTTP"
>"We have broken HTTP. We’ve done it for years in fits and starts, but apps have completely broken it. HTTP was a good specification which we’ve steadily whittled away."
This is a simple text-only web page (in courier new ffs) and it refuses to load with JavaScript disabled. There is no valid reason for this.
> Here is my plea: when you build hardware/software, please make it support the primitive, simple case.
I just wanted to play a video file I had on my laptop. I googled around, found that Roku appears to support DLNA, and tried to use Universal Media Server on my laptop. The Roku did find the media server, but kept claiming that there were no files available. Not sure if it was a video format issue (main-profile h264, ac3, and mkv are listed as supported by Roku) or something else, but at the end of the day I just couldn't get it to work, and I was bummed and frustrated.
Maybe play-this-URL functionality wouldn't've helped, but at least I would have felt more confident that it was a format issue rather than just some dumb problem with the huge DLNA tech stack.
HTTP is the lingua franca of the internet.
When you build stuff, please make it work with simple URLs.
Can't argue with that can we?I've recently installed Jellyfin and even put the Roku in "Developer Mode" so I could install the Jellyfin Roku app from GitHub. This is better because unlike Plex, it won't transcode arbitrarily, but it's far worse because the Jellyfin Roku app crashes frequently, has only basic page-based navigation ("go to page 23 for media that starts with 'T'"), and it requires running a heavy media server for no real reason. I'm still reluctantly using Plex for the time being.
When I need something that I haven't put in Plex, I fall back to the Android interface on the FireTV and use VLC to access the NAS over SMB. It still rankles that Roku won't allow an easy way to access local media.
> If your browser was redirected here, it's because you have JavaScript disabled. To navigate the text version, simply paste one of the following URLs into your browser, or the entire cURL command into your terminal. If you're looking for a specific post, check the list on the Feed page.
This would be some work, but only one person would need to do it and then anyone could "cast" a URL.
(Disclosure: I work at Google, speaking only for myself)
I guess I could just spend 99 cents and 2 minutes to find out...
I've had experience overseeing the implementation of a simple Chromecast application. It was a relatively painless process and worked pretty flawlessly with minimal code. It may not be a standard but it is totally accessible to anyone with a bit of Javascript experience.
I could imagine an evening hack session that would be a Chromecast application (maybe a browser extension) that you can paste urls into and it would play that way. Without even bothering looking, I would bet such an extension already exists in the Chrome Web Store.
You can disagree with this reasoning. It should be possible to safely load arbitrary endpoints and not ever execute an attack embedded in it. But then it wouldn't be called an exploit, would it?
In the end, I set them up a Plex server, which I can securely remotely drop things into. But that comes with its own fair share of ridiculous concerns.
I feel that I soon will have to change it for some more fancy set, like 65” 4K HDR OLED. I will make my best to dumb it down and keep using it in the same manner. And I definitely will not connect it to the internet!
All the smart TVs I've used implement this functionality. VLC and Kodi support this too.
https://en.wikipedia.org/wiki/Digital_Living_Network_Allianc...
https://play.google.com/store/apps/details?id=com.instantbit...
Actually, I think the standard is UPnP / DLNA. After setting up a UPNP server I can "cast" most things from Android by using the share button, and then choosing a UPnP app, such as Bubble UPnP. I don't know if the author's tv supports this, but many do.
http://movies.foamsnet.com/url/
discussed at https://news.ycombinator.com/item?id=7365256
But chromecast is essentially that standard you ask for, otherwise "apps" like I linked wouldn't work. Heck, as far as I know (I'm not really a Chrome user), Chrome has this functionality built-in, so you can send URLs directly from browser to a chromecast device.
RTINGS.com is pretty awesome at being able to quickly see which TVs have the more egregious data privacy practices.
That's what I do (my Apple TV is connected to the internet). A nice side effect is that you don't get ads in the TV's home screen that way.
- How inefficient is video streaming when you're downloading chunks of a compressed, static file over a flaky Internet connection?
- Was it worse before? Would it work better with QUIC or HTTP/3?
Your main enemy in this process is, as usual, middleboxes, which may be a bigger problem for the advanced protocols. This is why Apple created the bizarre but effective HLS system: https://en.wikipedia.org/wiki/HTTP_Live_Streaming
I'm wondering how much you lose by doing it the simple way?
I saw a recommendation for it here or on Reddit recently.
Is that really typical? I just put a file on a USB drive, and plug it into the TV to play.
https://anderspitman.net/17/curlable/
Thanks for all the feedback!
Says a webpage that is just a couple empty divs w/o JS, and, with JS, is 4 hyperlinks, a few paragraphs of text, and absolutley nothing (aside from google-analytics) that ever needed any JS in the first place, let alone 5 or 6 files' worth of it.
But, I think that conflict really speaks to the funamental issue, here: Thinking about the primitive, simple case is often, from the creator's perspective, more work than it's worth.
Such is the way of things.
Otherwise, you're just demonstrating exactly why Roku doesn't have a way to input a URL to play media.
Just render the markdown to HTML once on the server and upload it for the love of God.
That being said, the article is entirely correct.
<body>
<div id='rain-container'></div>
<div id='root'></div>
<script src='/deps/marked/lib/marked.js'></script>
<script src='/deps/highlight.js/src/highlight.js'></script>
<!-- Start preload for performance -->
<script type='module' src='/components/core.js'></script>
<script type='module' src='/components/tutorials.js'></script>
<script type='module' src='/components/about.js'></script>
<!-- End preload for performance -->
<script type='module' src='/index.js'></script>
</body>Edit: Actually https://raw.githubusercontent.com/anderspitman/anderspitman.... works fine already; can we change the submission URL to that?
Based on this web site, this is a definition of "software engineer" of which I was previously unaware.
JS should not be needed to show five paragraphs of text. And even with the JS the resulting HTML is still unreadable.
FF72, uBlock Origin in medium mode, no whitelisting => site renders just fine both in normal and in reader view.
His "noscript" is also broken as it still doesn't show the darned 5 paragraphs of text. It's that hard for him, as he writes what others should do.
The OP is arguing that the primitive, simple case for this page is to not use any javascript because it's unnecessary for the core functionality of this page. The content here can be displayed simply as a few kilobytes of raw HTML.
Much like the author assumed that javascript is most primitive & simple functionality for internet users, the people who built his TV, assumed that chromecast protocol is the most primitive & simple way to send a video link to the TV.
It entirely fails to render in text-mode browsers (I actually make heavy use of w3m).
It entirely fails to render in https://outline.com/, which otherwise is a good way to get fucked-up JS-dependent sites to render. I consider that stage of fuckwittedness either absolutely deliberate (which it appears to be in this case based on the authors defence of their practices), or utter incompetence. These are not mutually exclusive possibilities.
The fact that the article is apparently (I've still been unable to read it) a plea for base-level compatibility is, as initially noted, arch irony.
View source indicates about half is some Google analytics boilerplate, the other half is a body consisting entirely of non-functional JS pulls.
OP, where is the content stored?
Note for OP:
The reason this breaks without Javascript is because it's rendering the Markdown clientside. That could be moved to part of the build process without increasing your hosting requirements at all.
I can see that you already have https://github.com/anderspitman/anderspitman.net/blob/master... started, so I'm assuming you know this already and that you just haven't had the time to set up rendering on build yet. It's not my intention to preach to the choir.
If you're struggling to figure out how to get this working as a SPA while still including content for non-JS users, my advice would be to include the rendered HTML in each index.html and just hide it with CSS during page load. You can still use AJAX for all of your subsequent navigation to avoid reloading the page, but if the static HTML is annotated with the correct links and content, people who request a specific URL without Javascript would still get to read.
Or you could even get fancy and skip hiding it on the initial page load, only swapping it out with AJAX for future navigation, and this would make your initial page load even faster than it currently is.
Requiring readers to execute arbitrary code in order to read content seems like a terrible way to implement a web page.
Nor is it cheap: it requires every single reader to execute the same code, burning CPU over and over and over when it could be done once for all readers, by the server.
> Yes, some people choose to browse with JS disabled, but anyone who browses that way should expect that many sites won't work and will need to be manually whitelisted.
Yes, you can require execute privileges in order to publish content, but anyone who publishes that way should expect that many people won't read what he writes.
I never whitelist sites that don't work without JS unless the site is actually critical for some reason (doing so is too risky). I expect that this means some parts of the web effectively no longer exist for people like me, and accept that, but I wonder if the authors of these badly engineered pages really know that they're excluding people.
(Note: works for me too, with default uBlock and Pi-Hole blocklists)
Is this site heavy on ads and other malware and won't display without totally naked openness to exploits?
With NoScript blocking both the site and Google.
By "w/o JS" do you mean totally disabled? Or just NoScript?
And you're right, I wasn't paying attention. I did temporarily allow the site.
Says the one who can't have a simple HTTP only site and I had to enable JS on NoScript in order to read his rant.
Now, this is this person's personal site... they can do what they want. But it's pretty ironic to put a rant about working with URLs on a site with a design like this that doesn't work with simple URLs.
The resource you get with your site is the same thing regardless of what the URL requested is. There is then JavaScript logic that loads more information based on the path. The content is then dynamically added to the DOM. This is how your site works, right?
In this model, you never actually get the content with an HTTP request. You get code that runs that contains/displays the content. From the HTTP point of view, the resource is the code. If you don’t execute the code, you don’t get the content.
This is a perfectly fine way to run a website. I have zero issues with this. And as you say, this ship has largely sailed.
But — what you are asking for in your post is the ability to hand a URL to a media player and have that content play. What would happen if the content site had the same setup as your site (without any special configuration like supporting YouTube URLs, etc)? What is the HTTP request returned a JavaScript wrapper around everything and not the actual video?
The Roku could very well support a video format and still not be able to play the content on such a site. And the kicker is — a web browser would probably work just fine and the user would have no idea why their URL wasn’t working on their TV.
This is why there have to be tools to extract YouTube videos to download. For sites like YouTube, the URL isn’t a simple resource locator. It’s a link to a bunch of code that needs to be run to get to the video.
What I think you’re missing is that it isn’t just the client authors who need to support URLs, but also the server authors. If you have a small local HTTP server that just sends raw files, that’s easy. But loading something like YouTube isn’t as simple as supporting HTTP requests. And there is a certain irony in publishing a post that asks for clients to support working with URLs on such a site design.
That said, I assure you I am intimately familiar with the tradeoffs of different methods of delivering HTML. TL;DR it's my personal site and I'll do what I want with it. It's for fun. The previous version of this site used a static site generator I wrote myself[0]. I switched to client-side JS rendering for several reasons.
First, having a build step creates a dependency on both the build tool and a specific action. If you clone my blog[1] (with submodules) you should be able to host it exactly as-is from the repo. No build step required. I hold a fairly extreme view[2] on dependencies.
Second, I wanted user interactions within my site to be very fast[3]. After the initial load, subsequent navigations are much faster (and consistent) than retrieving a new static HTML page. Obviously once the HTML is cached that's no longer true, but I'm optimizing for first-time visitors. Though I should give more consideration to the fact that most of you are only going to look at the one linked page.
Also, I plan to eventually add some quirky little things to the site which require maintaining state between navigations. For example, I thought it would be fun to integrate a little 2D adventure game with a character you can move around to scroll the content.
EDIT: I should also acknowledge that while I defend the use of JS on my site, I concede that supporting non-JS use cases would be far more true to supporting "the simple case" as fallback. Simply supporting browsers in the default configuration isn't a very high bar. Browsers are incredibly complicated VMs. I would actually argue that my text-heavy content should be accessible via curl, like my other[4] projects[5]. I've never tried making a site browseable with curl before. That might be a fun experiment.
EDIT2: <noscript> should be working now, with a link to the raw content on GitHub, per danShumway's suggestion (thanks Dan!).
[0] https://github.com/anderspitman/assg
[1] https://github.com/anderspitman/anderspitman.net
[2] https://anderspitman.net/11/dependencies/
They'd probably make the point that most user-video content is on Youtube or Vimeo, and that for most users there really isn't much need for a non-app solution.
They'd probably make the point that Roku is designed to fit a particular user, not to stream arbitrary content, that it's not trying to be a be-all-end-all streaming solution for everyone.
They'd probably make the point that a URL system wouldn't allow them to support cool app-streaming-specific features like resuming play between devices, or social features like comments, or suggested content.
And they'd probably tell you that of course they considered supporting URLs, and of course they considered the tradeoffs, and ultimately it just wasn't worth it.
I have no doubt that the number of people who want to use URLs with their TV are a minority of the market. Almost certainly not as much of a minority as people who disable JS (that's a tiny sliver of traffic that mostly just hangs out on tech forums like HN). But probably not a high enough market segment that it makes financial sense for a Roku or Chromecast to expend a lot of time adding support.
Please make your site work with vanilla HTML.
A link to your Github repo head where the Markdown might ... possibly ... be unearthed ... is not that.
As a first-time visitor I had a very bad experience while waiting for your JS to download and generate the content - in the meantime I was looking at a completely empty black screen.
Optimizing for first-time user experience means giving your visitors the content they came for as soon as possible, which is not what you’re doing.
EDITed to be less inflammatory.
Your largest entry (about dependencies) would be about 8K of gzipped HTML, and another quick estimate says that all the entries together would be about 50K of gzipped HTML.
> First, having a build step creates a dependency on both the build tool and a specific action.
Instead, you push that compute off on your readers; actively harming the environment in the process. Yes, in this day and age I feel it's quite justifiable to point that out. You could render it once and be done with it, but instead you chose to have it be rendered (inefficiently) tens or hundreds of thousands of times, consuming orders of magnitude more energy and generating heat, all to "avoid a dependency". This should be, in this day and age, morally reprehensible.
I'd also point out the irony of the dependency upon javascript for static pages.
> Second, I wanted user interactions within my site to be very fast
A HTML page load from your site with a cold cache 114ms, of which 41ms is connection and TLS overhead, with a fetch time of 70ms. With all of the following requests it's up around 1s before it's rendered (and I'm on a Ryzen-powered gaming computer and fiber). A subsequent fetch of the assets to build one of your other pages is 71 ms (connection re-use means there's no connect time and no TLS time). This time is roughly the same no matter what article or page I pull up.
TL;DR: it's not making your other pages faster. It's just making your first page slower.
I will write documents as plain text, and I agree with your idea to make them accessible as text is good.
I and others will write computer games and other stuff using simpler VMs than the web browser, such as Famicom and Glulx (both of which can also be implemented to work within the web browser, too). (Z-machine is also very portable; there are implementations for many computers, and I even wrote implementation of Z-machine in Glulx and in PostScript, and started (but never completed) writing one for Famicom (which has my own unusual mapper design too, with a bank size of only one byte, and mapper registers overlapping mirrors of internal RAM).)
Another thing can be, if you have a discussion forum, then I think NNTP is good (better than mailing list and web forum), although you can have mailing list and web forum with the same messages as the NNTP too. Even if the web interface requires JavaScripts to work, I would still insist that at least one thing works even without JavaScript and CSS, which is the link to the NNTP, including the message ID or newsgroup name. (It may also be used with the web forum allowing Markdown and then they appear in NNTP with "Content-type: text/markdown", which is something I have seen suggested; however, I think plain text is also fine and is my own preference.) (I also made up "Unusenet", which is a way of making newsgroup names which are not part of Usenet; all Unusenet newsgroup names begin with "un" and one or more digits and then a dot, and then the rest of the newsgroup name.) (Also, like IRC, NNTP can also be used without specialized software for it, although also like IRC, it is more convenient and work better if you do have such software, and it is not as difficult to write as the web browser software.)
The page which can't be shown in the "Reader view" is definitely broken for me and everybody with disabilities who depends on Reader view.
(Also, the same browser, when JS blocked by the extension: just black screen)
That's great and I hope you keep on doing that. That said I have a few comments on your actual implementation.
> If you clone my blog[1] (with submodules) you should be able to host it exactly as-is from the repo.
Who would want to do that? Somebody interested in running your website is probably somebody also willing to install and run a build tool. And even if not, if it's just about consuming the contents of your website without visiting your website, the Markdown in your git repository is accessible enough.
> Second, I wanted user interactions within my site to be very fast[3]. > [3] https://anderspitman.net/13/64-ms/
A noble goal, however the initial load time from a cold browser session was consistently between 3s and 4s for me. Probably because you got hit by HN, but looking at the network tab reveals why a statically generated page would've been way faster: Instead of loading 19 resources, you could've simply loaded 3 (HTML, CSS + Favicon). That'd have been significantly smaller and faster.
> After the initial load, subsequent navigations are much faster (and consistent) than retrieving a new static HTML page.
As already mentioned your initial page load would've been significantly faster with a statically generated page. What you do is optimize for subsequent page loads at the cost of the initial page load. I can only speak from my own experience, but I also believe this is true for most of the HN crowd: I usually end up on websites like yours, because somebody links to a specific article on it. I then read such an article and close the website right afterware. It's very rare that I look around what other content is available on such a website. So I don't know how your usual website visitors behave, but I'd assume visitors which actually visit more than 3-4 articles on your page a probably relatively rare and for such a few pages the sum of loading times would be shorter than your premature optimization.
However if you want to optimize for subsequent page loads I suggest you do so without compromising your initial page load and completely without JavaScript by utilizing link prefetching [1] which is supported by all major browsers [2] except Safari.
[1]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Link_prefe...
> Who would want to do that?
Future me. Actually just today in order to publish this post I had to re-learn how I had set up my dependencies, so I switched it to submodules so it won't be a problem again.
> However if you want to optimize for subsequent page loads I suggest you do so without compromising your initial page load and completely without JavaScript by utilizing link prefetching [1] which is supported by all major browsers [2] except Safari.
Believe me, I spent a torturous amount of time trying to achieve the same results with static HTML+prefetching/preloading. First off, Safari is a huge number of users. Plus you can't include HTML from HTML, so this requires a build step (though I've been experimenting with a new tool[0] for mitigating that somewhat). Also, this doesn't allow maintaining state between navigations.
As is your right but it's not consistent with calls for simplicity.
> <noscript> should be working now
I've always had JS enabled and your site has still not worked, then or now. Your site is not accessible or simple. Again that's your right, and I agree with you about Smart TVs. Why not start the path to fix things by making your site readible on the screen of common blokes, poor people, and the non-elite that didn't buy something in the last 2 months?
URLs are simply not the forward case.
But I agree that IPv6 makes it messy. (I had my own idea which is version 10 (numbers 7, 8, 9 are unusable) which uses the same format like version 4 but with sixteen octets instead of four, and some other differences too.)