Show HN: Spase.io – A new kind of planner - <AUTHOR> http://spase.io/?in=hackernews <comment><USER2> So this is neat in terms of the technical prowess it took to put together. I really want to make that clear up front because its impressive in that regard. The animation is super smooth (at least on chrome), and it looks really cool. Its amazing whats possible on the web these days.

The actual functionality of this tool itself confuses me. Why would I ever want to visualize my schedule in this manner and with this kind of a UI? When I go to make a new appointment of visualize my week/month/year/life I have never yearned for a UX that looked anything like this. Furthermore, dragging to whatever I want to see (ala google maps) potentially way far in the future would make me pull my hair out. I don't really understand how it solves anything around this problem space. I dunno maybe I just don't get it. Regardless my hats off to the people who made this and I wish them good luck.

<comment><AUTHOR> Thank you! It took a while to put together, but the reason I made it was to literally help me look forward to the day.

I found that with my previous calendar, a lot of attention was lost to the past.

Any thoughts about the "Grid" mode, and "Shift" which might speed up navigation?

Sahil firstname.lastname@example.com

</comment></comment><comment><AUTHOR> Hey HN -

My name is Sahil, and I'm excited to share this v1 of Spase.io with you. It's a 3D planner where time moves forward, instead of in 7-day loop-de-loops, so that when you see stuff in the future, it really looks like the future.

So if you have a project deadline, a birthday party, or a reminder to do laundry, that event will actually register spatially in your mind as in the future.

Spase.io clearly not as powerful as Google Calendar or Todoist but it does hack your brain to focus on the future.

What do you like about this v1, and what do you want to see it become?

\- Sahil

<comment><USER3> I dont see any points in the 3D for the given "problem" (shedule planing). No value is added right now.

For example, if you could have multiple calendars on top of each other (with transparency to view layers below) that would be some actual value.

Right now its just eye candy. I for one dont need eye candy.

</comment></comment><comment><USER4> Please, please add an easter egg where I can mark tasks as complete by firing at them with a Doom2-like shotgun and they explode!

<comment><AUTHOR> Hahaha is this the one? [https://www.youtube.com/watch?v=M4VHUXV77hA](https://www.youtube.com/watch?v=M4VHUXV77hA)

Will add to feature list asap.

<comment><USER4> Oh yeahhhh! Also, play Doom 2 ASAP! iddqd ftw.

</comment></comment></comment><comment><USER5> Tried it on mobile, got blue screen with no info. Backed out, did not upvote.

<comment><AUTHOR> For this v1, mobile is read-only :/

But on desktop you could make an account, create events, and then read events on your phone!

<comment><USER6> Please make it say that when on mobile! :)

<comment><AUTHOR> Done!

<comment><USER7> Still blue screen for me after typing in a handle on iOS.

<comment><AUTHOR> Sorry about the blue screen. Just now I added a note which recommends joining on a desktop first. Will add whole mobile signup flow in v2.

</comment></comment></comment></comment></comment></comment><comment><USER8> It does not seem to work on mobile ( chrome, S7) :/ looked cool on paper though

<comment><AUTHOR> Right, the 3D view doesn't show on mobile. It's a condensed 2D view on mobile.

<comment><USER8> I must be doing something wrong as I just get a blue screen with nothing to interact with. Is there a special handle to use ?

<comment><AUTHOR> Nope you're not doing anything wrong. I just gave no directions lol.

To get going, head to spase.io on desktop, make an account (with your handle of choice) then you're good to go.

Desktop is where you can create, read, delete events. Mobile is read only (for now).

<comment><USER8> Thanks for the reactivity !

</comment></comment></comment></comment></comment><comment><USER9> Looks pretty (not really smooth in Firefox, but still). I'll stick with 2D, though.

If you like the time-distance mapping idea, this 1D calendar might be worth trying: [http://www.oneviewcalendar.com/](http://www.oneviewcalendar.com/) (i'm not affiliated in any way, just used it for a while). Some old threads on HN: [https://news.ycombinator.com/from?site=oneviewcalendar.com](https://news.ycombinator.com/from?site=oneviewcalendar.com)

<comment><AUTHOR> Cool, thanks for linking the threads

</comment></comment><comment><USER10> I have an idea that I haven't had enough knowledge to build, that is new visual for folders hierarchy based on physical sense ux.

This kind of visual navigation would help user to define their own physical nested shapes like House, Rooms, Desks, Folders Files etc. This eliminates the weak points of dumb nested folders. This also helps in real physical world in putting personal items somewhere in the house, because in computer world you can "search"!

It would be interesting to see urban visual to store items in weird hierarchy such as year > month > date > items.

Good stuff

<comment><AUTHOR> Interesting. Are you thinking like a 3D Dropbox or 3D Finder/Explorer?

<comment><USER10> Kind of 3D Explorer, the same way you put stuff in your house. Home directory is a whole house, then rooms for several categories, something like that. It's not a new idea I think some people had tried.

<comment><USER9> There are several 3D file managers, like this pretty old one: [https://en.wikipedia.org/wiki/Fsn_(file_manager)](https://en.wikipedia.org/wiki/Fsn_\(file_manager\)) (featured in Jurrasic Park)

Oh, and MS Bob. Not really 3D, but maybe a bit closer to the house/room/desk analogy: [https://en.wikipedia.org/wiki/Microsoft_Bob](https://en.wikipedia.org/wiki/Microsoft_Bob)

</comment></comment></comment></comment><comment><USER11> FYI, smooth in Chrome, but quite a slow frame rate in Safari. Also takes 90-100% of a whole core when it's animating at all, on a 2.9Ghz 2017 Mac Pro.

<comment><AUTHOR> Thx for the heads up. Is the frame rate in Safari consistently slow?

<comment><USER11> Seemed to be, whenever it was moving.

(High processor usage with both browsers, BTW, not just Safari.)

</comment></comment></comment><comment><USER12> Sorry but this seems like a classic 'if you have a hammer everything seems like a nail'. There is no problem with the two dimensions that a traditional calendar has. Want to know whats in the future? Turn the page or look further to the right and to the bottom. This just makes it harder to see certain groupings like months/weeks etc.

<comment><AUTHOR> Is it ridiculous to say that there is some value in mapping time to distance?

<comment><USER13> I think this would be better implemented by making a linear calendar. In either case, the UX of navigating through time is bad.

</comment></comment></comment><comment><USER14> Nice tech demo. Looks more like a good UI for making a game. Not sure what advantages it has over an existing 2D version though.

<comment><AUTHOR> Thanks for the compliment. In my mind the biggest advantage was - and reason for building it - was to help me take a Day 1 approach to life. That every moment is the youngest you'll ever be. Not quite so apparent when all the days of the year are projected on a flat surface and arranged in rows.

</comment></comment><comment><USER15> Cool idea and great execution! The paper airplanes are a nice touch.

I'd suggest making it a little more clear which day is selected and a lot more clear which item is selected (plus editable text/color/date).

Also, is there a way to make my calendar private? Public-by-default doesn't seem wise.

Would love a tech write up :)

<comment><AUTHOR> Thanks for the feedback! Definitely features I should implement. Would love to get a back-and-forth going at email@example.com if you have more ideas!

</comment></comment><comment><USER16> Nice work. It's a little too heavy (not snappy enough) for my personal taste, but I like the concept and the site is overall impressive. Have you thought about making a desktop or mobile app? Might make it more responsive.

</comment><comment><USER17> I'm sure this works great at impressing people who wear ties, or as demo reel for FUI work, but I couldn't even bother waiting for the intro animation to finish. Do not want.

<comment><AUTHOR> Well, I do sometimes like to think of life as FUI work

</comment></comment><comment><AUTHOR> Extra note: if you'd like to share feedback via email, hit me up at email@example.com

I'll be sure to respond in < 15min!

Any feedback at this stage will go a long way into improving the product.

</comment><comment><USER18> I can see using this with an AR or VR system.

Super Medium? [https://www.supermedium.com/](https://www.supermedium.com/)

<comment><AUTHOR> Cool idea. Do you see yourself using this in Oculus or Vive?

Btw the Supermedium guys are great. I think they worked on A-Frame, which was really key to making this.

<comment><USER18> I would once the resolution is good enough for programming

</comment></comment></comment><comment><USER19> This reminds me of the computer UI in movies from the 90s.

</comment><comment><USER20> reminds me of fsv, the 3d file manager

[http://fsv.sourceforge.net/](http://fsv.sourceforge.net/)

<comment><USER21> It's A Unix System [https://www.youtube.com/watch?v=dFUlAQZB9Ng](https://www.youtube.com/watch?v=dFUlAQZB9Ng)

</comment></comment><comment><USER22> Seeing something that I am dreading physically "looming" in the distance would poke my anxiety button pretty hard.

</comment><comment><USER23> Looks pretty cool

<comment><AUTHOR> Hey thanks

</comment></comment><comment><USER24> After sign up the login link you get emailed seems to have an API key in it, but doesn't log you in.

<comment><AUTHOR> Ah might be an edge case - can you click the login link from the same device & browser you made the account on? i.e. not your phone

</comment></comment><comment><USER25> Reminds me of The Brain/Personal Brain and the Firefox 3D view (no longer available).

<comment><AUTHOR> Mozilla/Firefox has done some amazing work with 3D

</comment></comment><comment><USER26> On iPad it doesn't respect the "Request Desktop Site"

It revert to the /_phone

</comment><comment><USER27> I can literally hear my battery die as my Intel "GPU" tries to apologise for JavaScript's 3D-capabilities.

No way I would ever use this. But I have to admit that it is a nice demo and certainly a good portfolio project.

</comment><comment><USER28> It's a Unix system, I know this!

<comment><USER29> Context: [https://www.youtube.com/watch?v=dxIPcbmo1_U](https://www.youtube.com/watch?v=dxIPcbmo1_U)

<comment><AUTHOR> Blast from the past</comment></comment></comment>


Foobar with Google - Hiring alternate?? - <AUTHOR> Was searching dependency injection today and ran into cmd prompt like env in browser asking you to solve a list of challenges in order. Apparently you can only attempt those if google flagged your search results and invited you in. You can log in after solving the first challenge and continue from there. Wondering how practical is this? Any one here hired via this? <comment><USER2> Google's pretty well known for doing stuff like this.</comment>


Machine Learning as Art - <AUTHOR> http://wesleytansey.com/machine-learning-as-art/ <comment><USER2> ... and the point is?

You can ignore 90% of the machine learning literature, treat the whole thing as a craft rather than a science and use OPAL/PA-II or an averaged perceptron (which are closely related with proven 50s and 60s machine learning technology, but are very well-understood these days), with regularization.

It doesn't necessarily take a PhD to realize that, but fortunately (for me) you'll need a PhD to convincingly sell that point to non-machine learning people.</comment>


Microsoft won't stop forcing companies to pay for its bogus Android patents - <AUTHOR> http://www.zdnet.com/article/the-one-thing-microsoft-needs-to-do-to-gain-real-open-source-trust/ <comment><USER2> People often misattribute this patent attack as on Android. What they don't realise is that most of patents involved are simply Linux or general computing patents. In other words, whether you love or hate Android or Google, is irrelevant. This is an exact example of a generic attack on a computing system through use of sketchy, over broad, under substantiated patents. MS happened to deploy it against Android because Android was the competitor of the day, but they can and will deploy it as suits their business interests against any technology or company out there.

<comment><USER3> And they already have, back in 2009, suing TomTom for using Linux in their GPS navigation devices:

[https://en.m.wikipedia.org/wiki/Microsoft_Corp._v._TomTom_In...](https://en.m.wikipedia.org/wiki/Microsoft_Corp._v._TomTom_Inc).

</comment></comment><comment><USER4> > So, why are people still paying up rather than fighting? Because patent > litigation is incredibly expensive. It's cheaper to pay a $5 to $15 per > device licensing fee than to pay a small fortune and take even a remote > chance of failure in court.

> Samsung alone paid Microsoft a billion bucks to license its Android patents.

So like, why didn't Samsung take them to court?

<comment><USER5> Give me a billion dollars and I write you a mobile OS. Shoot me an email if you are interested.

<comment><USER6> Does the billion dollars include indemnification against all patent and copyright lawsuits?

<comment><USER7> I don't know about the OP, but if you pay me up front my shell company will agree to indemnify you against anything you want. For various reasons, I will not personally be responsible for any of it and I _do_ draw a heft salary because I'm _awesome_. But if there is any money left over after design meetings in the Bahamas on the corporate yacht, I'm sure there will be lawyers available to take it.

</comment></comment></comment></comment><comment><USER8> I can't seem to understand if MSFT patents actually apply to the Android OS / AOSP or just to various firmware, middleware and software that OEM's use on their devices regardless of the OS in question.

The AOSP license and 3rd party notifications do not mention Microsoft and the patents listed in Chinese doc are like vague in the usual patent-esque way.

But in any case i don't really see the issue here, if MSFT gets royalties from these patents it would be irresponsible (to their shareholders, and employees) for them to ditch them, none of these patents claims actually seem to be aimed at Google or the AOSP project so it looks like the core Android OS is not really affected by this.

Google owns countless patents and Apple just might be the biggest patent troll in history and none of them seem to receive even remotely the same amount of scrutiny.

<comment><USER9> Even if that was the case, which I don't think it is, Microsoft shouldn't be asking for stuff like FAT32 royalties.

Think about it. Microsoft is asking for royalties for _making devices that work with Windows_. How crazy is that? Imagine if Google charged accessory makers for hooking into Android devices. I don't care if others do this sort of thing, too. It's just wrong.

It should be an anti-trust issue, especially when you have a dominating OS like Windows. What are other companies going to do - make mobile devices that _don 't work_ with Windows?

<comment><USER8> Why shouldn't MSFT claim patents for FAT? They've developed it and it was adopted by everyone and their mother for being good and cheap FS.

You don't need to support FAT to allow transfer of files between your your Windows PC and the phone standards that abstract the file system like MTP and PTP exist for this very own reason.

If you are as a phone maker want to enable users to mount their local phone storage as a fully writable file system cheaply you just format the SDCard using FAT and pay royalties.

If you don't you can still easily bypass the FAT patent issue by creating your own abstraction layer which may or maynot require the user to use specialized software and drivers (BB manager/itune/kies etc.).

That said for the majority of users MTP and PTP are more than sufficient I have an iPhone now and I do not miss the mount-SD card feature one bit if I'm honest even without using iTunes on a non-jailbroken device.

I can still plugin the phone and transfer files from the camera which is pretty much the only bloodything I could do with it anyhow and for this Apple does not need to support FAR nor pay MSFT a dime.

<comment><USER10> >They've developed it and it was adopted by everyone and their mother for being good and cheap FS.

No, it was adopted in order to have Windows compability, which you need given the Windows desktop monopoly and since Windows refuses to support any filesystem it won't get royalties on.

<comment><USER11> There are drivers for other file systems like ext3 on Windows.

</comment></comment></comment></comment></comment><comment><USER12> Darn, with all this talk we hear of a "new Microsoft", it would be nice if they stopped doing this.

<comment><USER13> Yep. People come out of the woodwork to praise MS when they do something that involves Linux, but when they are caught (yet again) doing something anti- Linux it get very quiet.

I think this headline sums it up best: [http://www.infoworld.com/article/3042699/open-source- tools/m...](http://www.infoworld.com/article/3042699/open-source- tools/microsoft-loves-open-source-only-when-its-convenient.html)

</comment></comment><comment><USER14> I am pretty sure the title of this submission is against the site guidelines; it's not the title of the article submitted and the article's title is perfectly explanatory.

<comment><USER15> The submitted title may not be much better, but the original is pure clickbait. It starts off with "The one thing...", and makes you click through to find out.

<comment><USER16> The current (written by the poster) HN title of this article claims that the MSFT patents are "bogus" which is surely not true.

Samsung has enough money to challenge them, but they know they would fail, the patents are valid, as long as the US law supports the software patents in the current form.

</comment></comment></comment><comment><USER17> The best reason for Microsoft to stop leaching off vaguely applicable patents on smartphones is that their best chance at reviving their own smartphone business is with something along the lines of the Nokia X handsets, running Android, but with an emphasis on Microsoft's apps and ecosystem.

That won't fly without access to Google's proprietary apps and app store. Microsoft will need to bury this hatchet before they could get that licensing deal.

They have an SDK for this approach now, with Xamarin. Don't be surprised if they trade the patent revenue for another shot at phones.

<comment><USER18> _> That won't fly without access to Google's proprietary apps and app store. Microsoft will need to bury this hatchet before they could get that licensing deal._

Microsoft could use AOSP or Cyanogen. But is there any known case where Google has blocked a would-be Android phone maker? And if it blocked Microsoft, how would that stand up to DoJ scrutiny?

<comment><USER19> It doesn't really matter. If you don't have Google services and the Play store your Android based phone is destined to fail.

<comment><USER18> Have you looked at the market in China?

</comment></comment></comment></comment><comment><USER20> I suspect it has a lot to do with the legal deadlock "you'll sue me? I'll sue you!" type situation companies like Microsoft, Apple, Google and Oracle have been so reliant upon.

None of these companies have, to my knowledge, ever used these patents against individuals in the open source community but they sure do love to wield them with each other...

<comment><USER21> > None of these companies have, to my knowledge, ever used these patents > against individuals in the open source community but they sure do love to > wield them with each other...

There have been many, many cases of patent trolls doing exactly that. The reason this is relevant to these companies is that patent trolls can _buy_ these patents from a company and then make their money's worth by suing every Tom, Dick and Harry they want. Sure, $CompanyX might not actually be the one suing, but they are enabling this sort of abuse of an already broken system.

</comment></comment><comment><USER22> Oh, but I thought Microsoft changed.

</comment><comment><USER23> I wonder if this kind of behavior is not creating an obstacle for their move towards opening their own software and convincing people to use it outside of the Windows environment. I'm sure all these nice new things have OS licenses that protect their users, but who knows in which direction this will develop. People have become pretty sceptic of the Oracle owned line of technology as well recently.

</comment><comment><USER24> How did Motorola manage to push back while others caved?

<comment><USER25> And why didn't Google/Motorola fight the very existence of the patents?

<comment><USER24> They did. For example [http://www.pcworld.com/article/2070280/german-court- invalida...](http://www.pcworld.com/article/2070280/german-court-invalidates- microsoft-patent-used-for-motorola-phone-sales-ban.html)

</comment></comment></comment><comment><USER26> [http://hal2020.com/2014/03/03/satya-shuffles-his- leadership/...](http://hal2020.com/2014/03/03/satya-shuffles-his- leadership/#comment-15007)

</comment><comment><USER27> "So why, with all this, are many open-source fans and developers certain that Microsoft can't be trusted?"

Source?

<comment><USER28> Let's vote: +1.

MS doesn't stand a chance when it comes to me (and I imagine others) trusting them. Too much BS for too many years.

<comment><USER27> If I were the writer of this article I would rewrite as follow.

"So why, with all this, am I certain that Microsoft can't be trusted?"

If I want to say "So why, with all this, are many open-source fans and developers certain that Microsoft can't be trusted?", then I would want source to back me up. This is how I want to earn "Trust" :)

</comment></comment></comment><comment><USER29> New MSFT, same as the old MSFT.

</comment><comment><USER30> Microsoft is Internet Explorer 6 of Open Source

</comment><comment><USER31> As long as litigation is of a positive net present value (i.e. expected return is positive) then they have a duty to their shareholders to undertake it. It's just the way of the world, its not like the CEO is taking into account this when thinking of 'the way microsoft should be' its just the state of tech innovation at the moment.

<comment><USER32> That's not actually a thing. Corporate law gives officers great discretion in how to run the business.

</comment></comment><comment><USER33> Slightly OT: "I'm writing this on Linux Mint" must be the equivalent, in the personal computing world, of having a long beard and wearing hipster clothing. So many are using it but they all think they are oh-so-not-mainstream. Oh, and just like those skinny jeans, they are probably going to hate it sooner or later.

EDIT: I was referring to Linux Mint, not Linux in general. I would never call a Slackware user a hipster ;-)

</comment><comment><USER16> You know why MSFT enforces its patents? Because the patents are valid. The US approved and likes such patents.

Software patents in the form the US does them didn't exist in Europe, but see this (hint: the US again):

[http://www.europarl.europa.eu/sides/getDoc.do?pubRef=-//EP//...](http://www.europarl.europa.eu/sides/getDoc.do?pubRef=-//EP//TEXT+WQ+E-2015-007869+0+DOC+XML+V0//EN)

</comment><comment><USER34> It's apparently OK to rip off the best ideas while learning from the mistakes of more then 15 years of work done pioneering by Palm, Microsoft and Apple and slapping them on top of a free OS and just paying nothing.

It's hard to see the difference between the first iPhones and Galaxy phones, in terms of home screen and hardware. You can't tell them apart at first glance. A clear rip-off. The patents Apple used to sue them were often trivial but the fact it was nothing but an iClone was obvious.

Apparently that's the only thing you can do to a competitor that copies without innovating. I can imagine that now Google had a few firsts in Android (interactive notifications for example) these patents will be swapped more and more and Microsoft gets less leverage. That's why Motorola didn't have to pay, they were extremely important advancing mobile technology and have their own chest of patents as a result.

<comment><USER11> > rip off the best ideas

The obviousness bar should be raised much higher so that if a lone undergraduate could arrive at a solution it is not a patentable solution. If we are going to entertain software patents then they should be used to cover major investments, like it works in pharmaceutical industry. Most patents are not of this kind, and most things in iPhone are just straightforward progression of prior art.

<comment><USER35> Which undergraduate though, I was an undergraduate once, so was Dijkstra, I suspect his idea of obvious would have been divergent from mine.

<comment><USER11> And average one, obviously. This isn't an objective measure, but there are similar concepts in jurisprudence.[1] Patent system was created in a different time, but at least to me in the present it only makes sense to use it to protect ideas that necessitated hundreds of man-years of investment by competent teams and not to be used for land grabs for trivial ideas that anyone can arrive at just by virtue of being a pioneer one's field.

[1] [https://en.wikipedia.org/wiki/The_man_on_the_Clapham_omnibus](https://en.wikipedia.org/wiki/The_man_on_the_Clapham_omnibus)</comment></comment></comment></comment>


Ask HN: Software Engineer to trainer career advice - <AUTHOR> Has anyone here made the move from engineer to trainer?
And maybe even moved back?
Thoughts on career impact moving to a training role, if you want to go back to engineering/architecture in the future. <comment><USER2> Yeah, I became a trainer and moved back.

Side by side, training part time actually pays much less than engineering work, but it's also a lot easier and repetitive.

Then again, half the richest people I know on the freelance tier are full time trainers. It's a way to make about $200k/year working 20 hours/week. You'll also get called to do training in a lot of distant areas, fully paid, so it's nice if you want to travel.

It's actually very possible to keep a main engineering job. Nobody believes a trainer who hasn't done a lot of work themselves ("if you can't do, teach"). So for most people, I'd recommend you do 20% of work training, 80% engineering.

Career wise, it has been very good. As I teach for certifications, it's worth far more than having a certification. All the last jobs I got made the decision to hire me on training experience.

The downside is that it is physically more tiring. I can work remotely with programming, but not training. I can't take the day off if I'm not feeling so well. You'll also have to be wary of unpaid hours doing things like researching new technology, making slides, iterating on improving your material.

1 week training involves about several weeks of work to do the first time, but you can repeat the same material in the future. Ideal are things like certifications, bootcamps, and corporate training, where you can reuse the same material across many different people.

<comment><USER3> Yeah, what he said. :-)

In addition one side effect of moving to and fro is that, as a trainer, you have to know _everything_ about your subject (not on the first day but you will eventually). Most people learn just enough about a topic to get by. As a trainer, you're expected to know _everything_ about a subject so you do learn everything[0], which means when you transition back to engineering, you have a _lot_ of deep knowledge about your technical field(s). With that deep knowledge, I've been able to walk into problem situations that people have been poring over for hours and go "Here's how you fix that problem" and suddenly everything is working again.

Also, it's a great way to learn how to present knowledge. More often than not, technical presentations I make within my current company elicit applause.

[0] In a class I had been teaching for years, a student ask me a question about the some command. I didn't know the answer, so I spent several hours that night figuring it out, coming up with examples, and a small presentation so I could explain it to them the next day.</comment></comment>


Intro to Gulp and Browserify - <AUTHOR> http://thinkingonthinking.com/intro-to-gulp/

<comment><USER2> here's good slides to know difference between gulp & grunt [http://markdalgleish.github.io/presentation-build-wars- gulp-...](http://markdalgleish.github.io/presentation-build-wars-gulp-vs- grunt/)</comment>


In Uganda, Fostering a World Without Adoption - <AUTHOR> https://medium.com/the-development-set/in-uganda-fostering-a-world-without-adoption-c07e4abccf0e#.zgn6lq3i1 <comment><AUTHOR> A great, solutions-oriented piece about building a sustainable child welfare system in Uganda from the ground up.</comment>


1 in 5 Highly Engaged Employees Is at Risk of Burnout - <AUTHOR> https://hbr.org/2018/02/1-in-5-highly-engaged-employees-is-at-risk-of-burnout?utm_source=Leadercast+Master+Distribution+List&utm_campaign=d787eb478d-DAILY-DOSE-EMAIL_CAMPAIGN_2018_02_14&utm_medium=email&utm_term=0_c403472bd5-d787eb478d-103948577&mc_cid=d787eb478d&mc_eid=313acbc4e3 <comment><USER2> Someday I would like to work for a company that recognized pending burnout, let alone did something about it.</comment>


Awesome PHP – Your Go-To PHP Toolbox - <AUTHOR> http://php.libhunt.com/ <comment><AUTHOR> I just released this project. Please, let me know what you think. I will be more than happy if you comment with an idea how the site could be improved, or if you notice a functionality that is missing.

Also, feel welcome to contribute if you know a valuable library that isn't on the list. Thanks!

<comment><USER2> Cool!</comment></comment>


Please fix: Unknown or expired link. - <AUTHOR> I'm pretty sure that the HN community likes to read thoughtful, thoroughly researched comments that are somewhat longer than one-liners. But whenever I take more than a few minutes to write a comment, I am greeted with the following error message as soon as I hit "Submit":

    Unknown or expired link.
 Fortunately, I can usually hit the Back button, refresh the page, and resubmit my comment without losing the contents of the textarea. Anyway, I try to be extra careful and copy the comment to the clipboard before I hit "Submit" if I feel like it's been more than a few minutes since I started writing.
But this should not be necessary in the first place.
Please increase the timeout on your CSRF tokens (or whatever it is that triggers the error message above) to something more user-friendly. I would suggest a sensible default of 86400 seconds.
Thanks. <comment><USER2> I'll try to respond to everything in one comment.

kogir and I talked recently about getting rid of "unknown or expired link". It's on our list. There are a lot of things on the list; we don't know yet when we'll get to it.

There's work ongoing to make HN more usable on mobile. This will likely roll out sooner than the above. We intend to roll it out incrementally, starting with the front page. We'll give people lots of notice so anyone running scrapers that are affected (like me!) will have time to change.

The look and feel of HN is unlikely to change much. We can argue about that one till the cows come home. I'm tempted to—my opinions are as strong as many of yours—but that doesn't seem like the best idea right now.

Feature requests should go to [https://news.ycombinator.com/item?id=363](https://news.ycombinator.com/item?id=363). Software bugs should go to [https://github.com/HackerNews/HN/issues](https://github.com/HackerNews/HN/issues). That would have been the appropriate destination for the OP, and indeed this issue has been posted about there.

Threads like the current one get lots of upvotes and comments, but they've never been on topic for HN. I'm going to bury this one now.

<comment><USER3> How is it not on topic for HN?

It would be on topic to discuss the implementation of any other site.

<comment><USER2> What's on topic for HN, as the guidelines say, are stories that gratify intellectual curiosity. Meta posts gratify several things, but that is not one of them. They generate masses of comments like fast-growing weeds, because we're all full of opinions about HN, but the discussions never go very deep, or really anywhere. This has been the case for many years—pretty much since the beginning of the site—and so has the policy on it.

<comment><USER3> You don't think a community of programmers and hackers and UX nerds would or should be intellectually curious about why a forum written in a Lisp dialect works and why it doesn't, and how it solves, or doesn't solve, various problems?

I can understand why it's annoying for the staff to have to encounter these threads so often - it's annoying for users to keep running into dead links. But I don't think it's entirely true that this topic has no value to the community at large. Having opinions and discussing things is kind of what forums are supposed to be about.

<comment><USER4> But look at the actual discussion here. It's mediocre.

<comment><USER3> I guess I can't argue with that, even though I personally find the subject more interesting than politics or talk about sexism in tech or bitcoin... everyone's mileage varies.

Though I would disagree with the premise that meta-discussion, necessarily, is a bad thing. At the very least given the nature of the site and its userbase, it's going to be inevitable.

</comment></comment></comment></comment></comment></comment><comment><USER5> This has bearing on my _absolutely favourite_ part of the Web Content Accessibility Guidelines (WCAG) 2.0:

Section 2.2.1, Timing Adjustable ([http://www.w3.org/TR/WCAG20/#time-limits- required-behaviors](http://www.w3.org/TR/WCAG20/#time-limits-required- behaviors)):

\----

2.2.1 Timing Adjustable: For each time limit that is set by the content, at least one of the following is true: (Level A)

\- Turn off: The user is allowed to turn off the time limit before encountering it; or

\- Adjust: The user is allowed to adjust the time limit before encountering it over a wide range that is at least ten times the length of the default setting; or

\- Extend: The user is warned before time expires and given at least 20 seconds to extend the time limit with a simple action (for example, "press the space bar"), and the user is allowed to extend the time limit at least ten times; or

\- Real-time Exception: The time limit is a required part of a real-time event (for example, an auction), and no alternative to the time limit is possible; or

\- Essential Exception: The time limit is essential and extending it would invalidate the activity; or

\- 20 Hour Exception: The time limit is longer than 20 hours.

 _Note:_ This success criterion helps ensure that users can complete tasks without unexpected changes in content or context that are a result of a time limit. This success criterion should be considered in conjunction with Success Criterion 3.2.1, which puts limits on changes of content or context as a result of user action.

\----

Yea, verily! HN isn't even Level A (the most basic level that "everyone" should comply with) compliant. _Through this, HN fails Accessibility 101._ (Its text colour choices are also often dubious as far as contrast goes—that's covered in WCAG 2.0 as well, of course.)

I simply don't care about the technical reasons. The choice of coroutines to back all of these things has broken the basic accessibility of all the content.

<comment><USER6> > The choice of coroutines to back all of these things has broken the basic > accessibility of all the content.

Exactly. This is actually a good example of More is Less.

</comment></comment><comment><USER7> Also, can someone _please_ make the site render with a larger font on mobile? I am spending a fortune on new glasses and contact lenses, as well as monocles and loupes just to read HN when not on my computer. So many people on here have asked for this over the years. Perhaps this is a subtle attempt by the YC to make sure all the people in our industry have to use eyewear so we can recognize each other at the secret meetings. Maybe this has something to do with Gunnar Optiks marketing eyewear for geeks? Maybe YC is about to fund an optometrist practice. Or maybe someone here knows that Apple is about to release a 20 inch iPad?

Please, for the love of everything that is good and pure and true, make the font larger!

Sincerely, Blind among blind

Edit: please don't suggest one of the other HN wrappers. I know they exist. I don't want to hand over my HN password to them. My HN identity is important to me, so unless I can run my own wrapper on my own servers I don't want it.

Edit edit: I believe if HN mods/operators announced a contest for best mobile design they'd get a ton of submissions. Sadly I am not a designer and could not participate, but I am sure the amount of submissions would be huge.

<comment> loup-vaillant Can't you control the minimum font size on your mobile browser or something?

<comment><USER7> I believe on iOS you can increase the font size for the entire UI, not just the browser. Not something I would want to do. No idea about Android.

</comment></comment></comment><comment><USER8> This happens with the next page button as well if I've been on the page for more than 3 minutes or so.

<comment><USER9> I see this almost every day. I have always assumed that Hacker News is too cool to fix/support navigation after the frontpage (or any other page) has changed.

<comment><USER10> It's not "cool", it's that the implementation is a quick hack, not intended to be a quality product. It just needs to be good enough to make users grudgingly return and see the PR for YC startups.

</comment></comment></comment><comment><USER11> See [1] on why this is happening. Relevant part:

>Internally, the web server associates a token called the fnid with each instance of a link or form, and records the continuation function for each token. Periodically, old fnids are deleted.

[1]: [http://arclanguage.github.io/ref/srv.html](http://arclanguage.github.io/ref/srv.html)

<comment><AUTHOR> Thanks for the reference.

Any idea where the fnids are stored and how they are garbage-collected? Could it be that they're just dumped into a memcached instance and older fnids get pushed out whenever the memory limit is reached?

<comment><USER12> It's not the fnid that gets garbage collected, it's the coroutine itself.

</comment></comment></comment><comment> grey-area I have a modest proposal for addressing the terrible dearth of fnids on this site. Since fnids are in such high demand, and yet are expensive to keep in memory, one small change might free up lots of them - _remove the use of fnids for more pages and use a static url instead_

so the more link on:

[https://news.ycombinator.com/news](https://news.ycombinator.com/news)

would point to:

[https://news.ycombinator.com/news/2](https://news.ycombinator.com/news/2)

and so on.... This would free up many fnids for use elsewhere, and also make the secondary list pages more easily cacheable and reduce load on the server.

The same could be done for other lists which currently use fnids without any appreciable change in the user experience or probably much change in the server code.

</comment><comment><USER13> Public Service Announcement:

If you're on Chrome use HackerNews Enhancement Suite.

[https://chrome.google.com/webstore/detail/hacker-news- enhanc...](https://chrome.google.com/webstore/detail/hacker-news- enhancement-s/bappiabcodbpphnojdiaddhnilfnjmpm)

No more ass-ugly hackernews font choices and colors.

<comment><USER14> Neat! Worth it for the option to collapse threads alone. Recently some _extraordinarily_ lengthy, tedious threads have dominated the discussion on otherwise-interesting topics, and simply finding the end of the dreck was a problem.

</comment></comment><comment><USER15> One positive side effect of the architecture is proper isolation in pagination. When I fetch Page 1, the link to Page 2 will always return the same set, regardless of timing (up until it expires). You will never see the last entry on one page show up as the first entry on the next page.

</comment><comment><USER16> Ya, for a community that is supposed to value great design and technical acumen, this site looks like somebody's pet project that was abandoned.

<comment><USER17> I don't really mind the design. I have a feeling they purposely keep the site design simple and, what some might consider "unappealing" to the average user. Helps weed out the normies.

<comment><USER10> It also weeds out the adults who think about what they read and don't have child eyes.

<comment><USER18> You can always zoom in or enable high DPI mode if your browser supports it

<comment><USER19> Or one can always make a mother*ucking web site [^1], which works perfectly in every browser. Zero issues with font size, layout and scrolling. Just-works.

[1]: [http://motherfuckingwebsite.com/](http://motherfuckingwebsite.com/)

</comment></comment></comment></comment></comment><comment><USER20> So ... is this a bug or a feature?

Is the internal activity causing this unpopular behavior _supposed_ to do this, in the first place? If the site is indeed behaving exactly as its designers want it to, then that's a rather separate debate as opposed to simply ways and means.

I'm not saying I agree with the behavior; I'm just trying to see what should be debated to start with.

<comment><USER21> Yes, the order changes over time, so the second page will often contain items from the old first page.

</comment></comment><comment><USER22> I agree with you: HN time-outs and failures (which also occur on reading) are an unnecessary pain. This is one reason you should never write into a web text box (a rule I also fail to adhere to). But really even "modern application grade" web stuff is so flakey if you value your text you write it in a local editor and then copy/paste later.

<comment><USER20> With this rule in mind, I wonder if a textures / notes area would be a good feature to include in the web browser itself (including mobile browsers) ...

</comment></comment><comment><USER23>
      > I'm pretty sure that the HN community likes to read thoughtful, thoroughly
      > researched comments that are somewhat longer than one-liners.

Could not agree more and this is a great side effect of the time out. It gives the commenter yet another reason to compose their comment in a real editor. Personally I find the comment text box is too small to do a decent job of assessing and editing my comment. A real editor also makes it easy to format the above blockquote[^1] or to insert[^2] logical and consistent footnotes.[^3]

[^1]: [http://www.nicemice.net/par/](http://www.nicemice.net/par/)

[^2]: [http://jblevins.org/projects/markdown- mode/](http://jblevins.org/projects/markdown-mode/)

[^3]: I just wish markdown-mode would renumber the footnotes if I go back and insert a new footnote. As it is I have to pipe the output through pandoc

</comment><comment><USER24> It's not a priority for HN development. See Graham's 2009 essay for an explanation of what matters:

[http://paulgraham.com/hackernews.html](http://paulgraham.com/hackernews.html)

</comment><comment><USER25> Can someone explain why this expiration thing is happening like I'm 5? Even the most basic PHP tutorial app doesn't have this problem so I don't understand people saying it's inevitable.

</comment><comment><USER26> Yeah, it's really annoying to have to edit the URL on mobile when this happens..

</comment><comment><USER27> I really do believe that HN is poorly designed for end users. The UI is not forward with intent, or pleasurable to use. It's been literally years and the expired link issue hasn't been addressed. ---No, I'll stop you right there. It's been acknowledged as an implementation bug, but not addressed. PG's lack of user empathy and stubbornness make HN worse.

The only reason people come here is the content.

<comment><USER28> _The only reason people come here is the content._

I consider this a good thing. It attracts the right kind of people.

<comment><USER27> Are you insinuating that the key to dissuading the _wrong_ kind of people is to make Hacker News difficult to use? The notion that good users will "power through" a bad design is dubious at best.

I hope that you're not involved in product design. This thought process is not good for anyone.

<comment><USER28> I make no apologies for my opinion, however much you dislike it.

I've maintained for years that the key to a high quality online forum is for it to be limited in some way. It can be limited by bugs. Limited by nobody advertising that it exists. Limited by having a very focused topic of discussion. I'm willing to believe that it can be limited by moderation, but I self-select out of those forums so don't know.

But without some sort of limiting you get what happened to Usenet, Slashdot, kuro5hin, the main page of Reddit, and so on. Which is that they became the place that everyone knew that they should go. And then the noise went up faster than the signal, resulting in a poor signal to noise ratio. And then the best people found new forums to go to, and slowly disappeared.

Of course if you make the limiting TOO effective, eventually nobody will be left. There is a balance to be had.

And this only applies to high quality content of the kind that I want to engage with. Which is admittedly not to everyone's taste. It is not a way to make something popular.

</comment></comment></comment></comment><comment><USER29> For any new readers: this is a "bug by design", it has been extensively complained about in the past, and it's marked "will not fix, stop complaining" by management.

This has been a public service announcement.

<comment><USER30> Not true. It's an open bug. It's just really hard to fix.

[https://github.com/HackerNews/HN/issues/11](https://github.com/HackerNews/HN/issues/11)

<comment><USER31> With all due respect, if a framework makes storing sessions for more than 30 minutes "hard", there's something fundamentally wrong with the framework. This has been a solved problem for longer than I have worked in the industry.

<comment><USER30> Yes, it's been frustrating to me as well: [https://news.ycombinator.com/item?id=5032739](https://news.ycombinator.com/item?id=5032739). Just an unfortunate consequence of starting out as a prototype.

</comment></comment></comment></comment><comment><USER32> This 'bug' has been around so long that at this point I suspect that it's really just a long-running troll.

</comment><comment><USER33> There's a reason things are set up as they are:

* Although HTTP connections are normally stateless, HN has a login system for account holders, which means there's a state, a connection, associated with each logged-in user.

* Because of the state information associated with logins, A Web server has a limited number of login connections it can handle.

* To serve the maximum number of visitors, a server needs to recycle connections that are no longer in use.

* There's no reliable heartbeat method between browser and server that a server can use to determine whether a given connection is still in use. Also, heartbeats would represent an extra traffic load on the server. And now that tabs have become popular, there's no way to be sure that a heartbeat response isn't from an unused, forgotten tab among dozens.

* Therefore, after a connection has not seen packet requests for a set time interval, the server expires the connection to make it available to other visitors.

* The shorter the timeout, the more connections the server can handle.

> I would suggest a sensible default of 86400 seconds.

Let's say the server can handle 2048 simultaneous login sessions (I don't know the actual number). According to your suggestion, after the first 2048 visitors log in, the server would refuse to accept any new logins for 24 hours. This isn't realistic.

Here's how I handle the problem -- if I decide a reply is going to take more than a few seconds, I transfer my reply to a text editor and let the connection expire. When my long-winded reply is ready, I refresh the original page, paste my reply in, and click "Add Comment".

I hope this helps.

<comment><USER34> I don't think this is what is going on here, it makes no sense for it to operate like this. To demonstrate this is not the case, I just momentarily unplugged my NIC and then submitted this comment. The connection was definitely dropped and re-associated, but my comment passed perfectly fine. This is more likely a very short cache time on CSRF tokens rather than anything to do with associated sockets.

<comment><USER24> The architectural model your comment and the initial post assumes to underlay the behavior is incorrect.

The reason for 'Unknown or Expired Link' is that HN runs on a webserver that uses continuations to maintain state. The continuations are stored in a table and based on load individual table entries get flushed to make room for new entries as needed. The message is actually always the result of an unknown link because the hash is no longer in the table.

Your experiment worked because the relevant continuation [state reference] was available after disconnect e.g. the 'route' so to speak was still valid.

Now obviously one might wonder why HN works this way. The reason is that the HN codebase came about as a way of field testing Arc [Graham's 100 year language]. Until rather recently, HN ran on a single server. It still uses relatively few lines of code.

<comment><USER35> > Now obviously one might wonder why HN works this way. The reason is that the > HN codebase came about as a way of field testing Arc [Graham's 100 year > language].

This is really the key point: continuations are the wrong way to write this kind of application. It's significantly more work and there's no benefit from doing so _but_ it allowed someone to test a pet idea and, having done so, fixing it would mean admitting that doing something because it's cool isn't good engineering.

<comment><USER24> The kind of application is specifically Hacker News, not a generic website or webserver. See the essay linked here for what kind of application this is:

[https://news.ycombinator.com/item?id=7651525](https://news.ycombinator.com/item?id=7651525)

<comment><USER35> Continuations are a questionable fit for web applications in general, however. HTTP is stateless and it requires a lot of extra work to build an abstraction which pretends otherwise. I prefer to embrace that from the beginning so the entire design matches the nature of the medium.

<comment><USER24> The explanation is mine. It wasn't an argument.

The application and implementation decisions are YC's. The essay explains their rationales.</comment></comment></comment></comment></comment></comment></comment>


Request for new search-referer header to make search better - <AUTHOR> http://blog.verticalset.com/search-referrer-header

<comment><USER2> I don't understand what information this proposed "search-referer" header contains that the referer header does not.</comment>


Secret colours of the Commodore 64 - <AUTHOR> http://www.aaronbell.com/secret-colours-of-the-commodore-64/ <comment><USER2> > Sidebar: A note on frames per second. The European PAL C64 updated at 50fps, > whereas the US NTSC systems updated at 60fps

This is because alternating current is 50Hz in PAL countries (eg Europe), and 60Hz in NTSC countries (eg America). Analogue TVs vertical refresh rate was synced to the AC frequency for a bunch of practical reasons, which meant gaming consoles had to send signals to the television at either 50Hz or 60Hz.

Result? Many PAL console games actually ran at 5/6ths of NTSC speed. Most notoriously, Sonic the Hedgehog, whose agility was more sluggish (and soundtrack less vivacious) for a large fraction of the world. More information in this video: [https://www.youtube.com/watch?v=cWSIhf8q9Ao](https://www.youtube.com/watch?v=cWSIhf8q9Ao)

<comment><USER3> > for a bunch of practical reasons

Basically makes it cheaper to build. You have a natural frequency there to use, and you don't have to come up with all this additional hardware to smooth out the existing frequency and come up with a new one.

I think there was a flip-side to this ... though NTSC had faster refresh, PAL had a higher resolution (more lines). I'm not sure, but I think this may have been a tradeoff.

<comment><USER4> It also reduced the effects of mains interference. If you had a 60Hz vertical scan, but there was interference from 50Hz mains (as there often was) then this would cause rapid rolling vertical distortion.

At 50Hz, even if the vertical sync wasn't actually locked to the mains frequency, any mains distortion would roll much, much more slowly, and be less offputting.

</comment></comment></comment><comment><USER5> If you want to see how this type of colour magic works in video form, the 8-bit guy does a GREAT video on this:

[https://www.youtube.com/watch?v=niKblgZupOc](https://www.youtube.com/watch?v=niKblgZupOc)

He shows all the interesting artifacting that makes these extra colours possible.

</comment><comment><USER6> Here's a great older example of this technique (and a couple others) used on the TRS-80 Color Computer 3 to show "hi-color" bitmaps on a machine with a 16 color palette:

[http://users.axess.com/twilight/sock/hicolor/hicolor.html](http://users.axess.com/twilight/sock/hicolor/hicolor.html)

<comment><USER7> Wow. Thanks! This CoCo is still teaching me. Love that thing.

</comment></comment><comment><USER8> Reminds me of another piece of magic I used to use during my Amiga demo days. Infinite Bobs. A Bob was a BlitterObject, a graphic rendered by the hardware, not dissimilar to a sprites.

People would try many things to render as many Bobs as possible.

[https://www.youtube.com/watch?v=eDQTxbudvDg](https://www.youtube.com/watch?v=eDQTxbudvDg)

At some point the infinite bob demo appeared (I couldn't find a video for this). Seemingly endless sprites rendered on the screen - all moving, with no slowdown. As a 15 year old programmer learning to code demos in assembly I was very confused, how was it done?

I did eventually (after many hours spent in devpac disassembling code) work it out. They were not rendering infinite bobs, they were rendering one!

If you create three screen buffers. On the first screen buffer draw the bob at position (x,y), then switch to the second buffer draw at (x+delta,y+delta), then switch to the third buffer and draw at (x+delta,y+delta) and then repeat the cycle through the buffers as you move the bob.

If you switch between the buffers on the vsync (50/60hz) then the difference between where you drew the bobs appears like movement. You can draw out infinitely complex patterns and make it look like you're rendering millions of bobs!

Happy days.

<comment><USER9> That Phenomena demo in the youtube video that you linked to is actually a very clever display of the infinite bob trick. It is just so convincing that it is, still, difficult to spot it.

</comment></comment><comment><USER10> This overlooks a key detail, namely interlacing. The C64 wasn't producing 60 frames per second, but rather 60 _fields_ : sets of odd or even scanlines. So on the CRT TVs of the time, you'd get one colour on the odd scanlines, and another on the even scanlines. Scanline striping, essentially.

<comment><USER11> I was under the impression that there must have been some additional signaling to make interlacing happen. If for no other reason than the display would need to know which frame was the upper scanline and which was the lower.

Apart from the fact that they would have advertised the increased resolution (albeit flickery). On the Amiga, which did do interlaced modes. you could tell on a screen showing a single colour whether it was interlaced or not.

<comment><USER12> It's not an additional signaling.

TVs were designed in the 30's, where electronics were extremely primitive and expensive. You wanted the consumer device to be as simple as possible so it could be within the consumer price range. So TVs were little more than a Radio receiver hooked up to a cathode ray tube (CRT).

To drive a CRT you need 3 signals: X position, Y position and brightness. The dumbest possible design is to have 3 radio receivers and transmit all 3 signals over the air. But the extra receivers are expensive and besides the X and Y signals are very repetitive, which would be a waste of bandwidth.

So two flyback transformers were added to the design of the TV, which generate a saw wave pattern. Starting at 0% they would consistently increase power until 100% before rapidly snapping back to 0. One would run at the vertical refresh rate to drive the CRT's Y signal and the other would run at the horizontal refresh rate to drive the CRT's X signal. The Brightness would come from the radio receiver.

With this design, you just need a way of synchronizing the TV studio's cameras and all the TVs in the area to the same horizontal and vertical refresh rates. You might think: Easy, we just use the mains power frequency for vertical and then divide it by 525 to get the horizontal frequency.

But a 525 frequency divider way too expensive to put in every TV. Instead, they only put one divider in the studio to calculate the horizontal refresh rate and transmit a synchronization pulse embedded into the brightness signal. A simple circuit in the TV detects the synchronization pulse and nudges the flyback transformer to match. A second, longer synchronization pulse is transmitted between every field for the TV to synchronize the vertical flyback transformer.

So a basic Black and White TV is just a radio receiver, two flyback transformers and two synchronization detectors hooked up to a CRT. It doesn't know anything about interlacing or even how many lines there should be in every frame. Back then, a TV studio could theoretically start transmitting at 61 Hz or with a few extra lines per frame and every TV would follow along, right up until the point where the horizontal or vertical refresh rates went out of the spec of the shittest flyback transformers in consumer TVs.

Interlacing is a brilliant hack that is 100% done at the studio end. All they do is pick a horizontal and vertical refresh rate that don't divide into each other a whole number of times. 60 hz divided by 15.750 kHz is 262.5 lines. This means that when the TV's vertical flyback transformer reverts to zero (putting the CRT's Y position back to zero), every second frame, the X position of the CRT will be halfway along the screen.

One thing you might have noticed is that the Y position is constantly incrementing, it doesn't step down by one line worth of y position at the end of each line. This means that the TV signal is actually rotated slightly, with the end of each line having almost the same Y position as the start of the next line.

Which means if the field starts halfway through a line, the start of the first full line on that field (and every line after that) will be half a line lower than it was on the previous field.

Other interlacing schemes are theoretically possible, just by picking appropriate horizontal and vertical refresh rates. You could have Triple interlacing or quadruple interlacing (though I doubt either would be pleasing to look at). But most early game consoles and computers pick a horizontal and vertical refresh rate which divide into each other with a whole number of lines, resulting in a progressive display.

<comment><USER13> Amiga had the A2024 monitor and I always thought is was kind of quad interlace weird interlace for an exotic monitor with long afterglow.

However, the thruth is different but also strange. [http://bboah.amiga- resistance.info/cgi-bin/showhardware_en.c...](http://bboah.amiga- resistance.info/cgi-bin/showhardware_en.cgi?HARDID=863)

Apparently, the monitor samples four frames, puts them in 4 frame buffers, then outputs a complete image to the CRT, each frame representing a quadrant on the screen. Must have been very expensive...

</comment></comment></comment></comment><comment><USER11> I once toyed with Temporal dithering on VGA ModeX.

While the bullet point listed resolution for standard VGA was 320x200. Hitting the hardware registers and paying the price of a rather peculiar addressing mechanism for pixels you could get a lot more(and double buffering to boot).

320x240 was the most common tweaked mode, because it gave you square pixels and page flipping.

At the edge of what momitors could handle there was a 400x300 mode which ran at 87Hz Flipping two images with this mechanism give you a 43Hz shimmer, which is amost impossible to pick on colours if the two components are similar luminance.

I never saw this get used for anything, but it would have made an excellent paint program for standert VGA.

<comment><USER14> I'm pretty sure I've seen this used in the demo scene, but I can't name any productions after all these years. I remember Second Reality has a mode x plasma at least

<comment><USER15> I recall Ambience by Tran as one of the first (and few) tasteful interlaced productions: [https://www.youtube.com/watch?v=xJshv8BjdoM](https://www.youtube.com/watch?v=xJshv8BjdoM) VESA-compatible hicolor and truecolor were about to become commonplace.

</comment></comment></comment><comment><USER16> If using composite video and a PAL TV, you can also blend colors by using alternating horizontal stripes because PAL TVs use a delay line to cancel the chroma information with the line above it. Exactly what color you got would depend on the specifics of your TV's decoding.

<comment><USER3> Yes. I believe the term was a "raster split". There was a limitation to how many colours you could use for your sprites, and using this technique you could effectively double-it. As long as your characters were on different horizontal portions of the screen. The bitmap brothers (Creatures, Mayhem in Monster Land) were notorious for this and other sweet tricks. Remember how there used to be a border? They figured out how to get sprites in there. Amazing towards the end of its life all the ways developers found to squeeze out those extra tricks from the ageing hardware.

<comment><USER17> The border was "opened" for sprites by the crack group 1001 Crew in the beginning of 1986.

</comment></comment></comment><comment><USER18> This is very similar to how "grayscale" is achieved on a TI-83 calculator to make games like Zelda and Desolate ([https://www.youtube.com/watch?v=5UHqPMxeZnY](https://www.youtube.com/watch?v=5UHqPMxeZnY)) possible.

</comment><comment><USER19> Off topic-ish: There was a trick you could use on the Atari ST to display more than the allowed number of colours - you reloaded the palette data on each horizontal interrupt. Could this have been used on the C64 also?

<comment><USER20> There was no palette to reload - the C64 (like most 8-bit systems) had a fixed palette in hardware.

<comment><USER21> But you could interrupt the CPU from the graphics chip based on scan line (just in case that's the part GP was interested in), for instance to do a classical graphics/text screen split or replicate sprites.

</comment></comment></comment><comment><USER22> Brilliant talk on using these techniques to draw hires color pix on c64. The NUFLI technique is based on combining hires mono images with color sprites underneath AND color flashing.

[https://www.youtube.com/watch?v=bKk0m-GDFdc](https://www.youtube.com/watch?v=bKk0m-GDFdc)

</comment><comment><USER23> Incidentally, this type of temporal dithering is how 18-bit LCDs can approximate 24-bit colour:

[https://en.wikipedia.org/wiki/Frame_rate_control](https://en.wikipedia.org/wiki/Frame_rate_control)

</comment><comment><USER24> I remember writing a piece of machine language on a C-64 which flipped the color palette as fast as possible. It was so fast that all you saw was individual horizontal line segments of different colors within every individual raster line. (I.e. it was faster than the _horizontal_ refresh rate of the CRT which is usually what, well over 10 kHz.)

Sheesh, when was that? Probably 1985.

<comment><USER25> Mid-rasterline color splits, often combined with snakes of sprites, often with border removal effects.

Watch this demo for state-of-the-art in that kind of programming on the C64.

[https://www.youtube.com/watch?v=lseBxJYpz54](https://www.youtube.com/watch?v=lseBxJYpz54)

</comment></comment><comment><USER26> This is cool, but I've never understood why people like the C64 palette. It looked washed out to me.

I guess people grow to like the look of the machines they have fond memories of. (Apple II, Coco, Sinclair)

The Amiga was the first machine to really impress me with its pallete.

<comment><USER3> The Amiga was really the first home computer to have a truly impressive palette. It got the jump on the PC mainstream by a good few years. I don't think it was until sVGA happened that the PCs caught up again ...

</comment></comment><comment><USER27> These kinds of tricks remind me a bit of how the Apple II produced color using the timing of the NTSC signal, or how Thexder tried to produce more colors [https://www.youtube.com/watch?v=fBL2rtCdpZ0](https://www.youtube.com/watch?v=fBL2rtCdpZ0), or how the demo 8088 MPH produces more colors than the CGA composite mode was intended [https://www.youtube.com/watch?v=yHXx3orN35Y](https://www.youtube.com/watch?v=yHXx3orN35Y)

</comment><comment><USER28> These were the "magics" you were able to do at that time! You could achieve amazing and unexpected results going beyond common software programming, mixing software with phisical effects for example. This was the reason the author of the article got so impressed. I don't know what kind of todays's unconventional programming technique can achieve such a wow effect! Side note: i was 14 too in 1991...incredible times, such as mid '80s!

</comment><comment><USER29> I think this type of instance maybe why the C64 has the reputation of encouraging hackers that it does. This is the perfect example to me of hacking to make something better.

<comment><USER6> I think a big part of the beauty of the C64 is that there were so many of them, and they were all more or less the same (although the hardwere went through many revisions). That meant people quickly ran up against the same boundaries, and identified amazing ways to push past them.

</comment></comment><comment><USER30> Question: the demos on the website are not smooth in my mobile chrome browser. Is it even POSSIBLE to get glitch free per display frame update in a browser? I grew up with the c64; the kind of tearing and frame-rate glitches we see on nearly every other platform since make me sad!

<comment><USER31> If _all_ the stars align. So, basically, no.

There are too many layers, half of which don't synchronize correctly, and if even one is out of alignment you'll get tearing/stuttering.

</comment></comment><comment><USER32> The page [http://vik.cc/dvik- joyrex/download/105Colors.ppt](http://vik.cc/dvik- joyrex/download/105Colors.ppt) has an algorithm to convert a 24-bit RGB to interlaced 8-bit on the MSX palette.

</comment><comment><USER33> Cool article, but the Spectrum really only had 7 colours and black. And at the time I hated the Commodore 64's colour palate (and any non ZX Spectrum palate, until I saw the beautiful SAM Coupé's) so I guess it's a matter of preference.

<comment><USER34> You could use this same palette flicker on the speccy to remove the attribute clash and create new colours, I remember someone demoing a more or less pixel perfect version of Super Mario World, albeit with a black background.

The spectrum was capable of all sorts of odd things that were never intended. [http://tarjan.uw.hu/zx_gfx_modes_en.htm](http://tarjan.uw.hu/zx_gfx_modes_en.htm)

<comment><USER33> That's very interesting. I'm always impressed at how dedicated some people are to old systems too. My Spectrums haven't been touched in 15 years and here's people making graphics cards for them still.

<comment><USER34> There's even a new speccy coming out. [http://www.specnext.com/](http://www.specnext.com/)

<comment><USER33> Niceee. I wonder if it has a real Z80 or it's implemented on an FPGA as mentioned.

<comment><USER34> As I understand, the FPGA is to interface the Z80 with the raspberry pi that's onboard to include extra graphic modes and HDMI output, but I could well be wrong. There's a lot of unanswered questions about its inner workings, but they have some good looking test boards already etched.

</comment></comment></comment></comment></comment></comment><comment><USER35> Near the bottom, I wonder if high-speed img flipping in js could be done by absolute-positioning the two images and toggling display:none/display:block (or flip the z-index above/below) on the upper layer on every animation frame?

<comment><USER11> I think you'd have better luck with rendering a pair of ImageBitmap to a canvas via requestAnimationFrame.

<comment><USER36> Would either be faster on mobile? I feel like a gif would have been better in this case, and I generally dislike the format.

</comment></comment></comment><comment><USER37> I guess it's all about which 8-bit we have fond memories of but ... the C64 is not known for having a great palette. It looks rather dull and washed out.

The Amstrad CPC probably had the most vibrant palette of all of the 8-bits.

A C64 artist even tried to prove otherwise, but IMHO scored an own goal : [http://www.indieretronews.com/2016/02/is-c64-palette-far- sup...](http://www.indieretronews.com/2016/02/is-c64-palette-far-superior-to- amstrad.html)

<comment><USER38> So there is a potentiometer on the c64's board that you can adjust to control the color intensity. The people on the assembly line them were supposed to connect them to a screen and adjust the pot until it matched a particular intensity, but there were runs of c64s where they just said "fuck that" and turned it all the way up without checking. Early 64s were SUPER saturated.

The fact that we are having a conversation about it looking dull and washed out makes it clear that this unauthorized shortcut was cracked down upon. But it also helps to explain why there are so many palettes available in most c64 emulators - people tried to match their memories, or a screen grab, of wherever their particular c64 was adjusted.

I'd adjusted mine; if I recall correctly it came with the intensity all the way up. I turned it down but didn't turn it down to the point most people's seem to have been set at, judging from most modern emulated screenshots.

</comment></comment><comment><USER39> I would think answer is NO, but (why not) is there a way to synchronize painting of the picture with the vertical synchronization of the screen in modern browsers, to prevent flickering?

<comment><USER40> That's `requestAnimationFrame` - it will lock at 60hz if possible, though I believe 60fps is not enough to get rid of the flickering.

</comment></comment><comment><USER41> As an Australian user of the TRS-80 Color Computer I was always disappointed the artificating technique: [https://en.wikipedia.org/wiki/Composite_artifact_colors](https://en.wikipedia.org/wiki/Composite_artifact_colors) ... didn't work on PAL so I never got to see all the 'cool' colours promised on game adverts in USA-based magazines!

</comment><comment><USER42> How did they a screenshot of the blended color in the magazine? Wouldn't a screenshot only get one frame?

</comment><comment><USER43> I'm wondering why they went with a dragon boss that flipped from one solid color to the other - wouldn't switching between a checkerboard pattern of the two colours have worked better?

<comment><USER44> Yes but it looks like this wasn't possible. C64 multicolor sprites have 4 colors and it looks like one frame of the dragon is already using 4 colors.

Also, having two separate ditherings of each sprite would use twice the memory per sprite, and that dragon looks to be composed of multiple sprites and possibly multiple frames of animation per sprite. Most games were memory limited, which means the devs had to make several compromises just to get the game to fit at all.

<comment><USER43> Ah, so a trade-off as always.

I wonder if the demoscene has some nice examples where they are more perfectionist about this.

</comment></comment></comment><comment><USER45> Reminds me of the Future Crew demo that used similar techniques to emulate "thousands" of colors on a 256 color display. Very unimpressive in YouTube videos. Amazing on a CRT.</comment>