Why our website looks like an operating system

posthog.com

660 points by bnc319 a day ago


arghwhat - 20 hours ago

Oh god. It has a pleasant color scheme, but this is an awful idea. By trying to recreate windows and bookmarks in the web app you're at best just implementing redundant features and getting in the way of the native browser features by trying to showcase yours, at worst breaking regular web usage entirely.

Take their right click menu for items to select whether you want an in-app tab or real browser tab. Congrats, you've broken UX by making the native browser right-click menu unavailable on link items, and because you've only implemented this on some things most of your content is not deep linkable as navigation is a cursed in-app feature.

This is as usual a fun tech demo, but it should not be used for anything in the real world.

hliyan - a day ago

Why this feels so incredibly appealing compared to prevailing designs is probably something for a psychologist / cognitive scientist / neurologist (?) to answer -- there is certainly something here that warrants better study than what we in the software industry do in rushed blog posts.

But I can personally speak to at least one aspect, having worked for a company that does high end web sites and strategy for large SaaS products, and also being the target audience for such websites (director or VP Eng): the speed and ease with which I can find what I want (as a potential customer) using that top navigation menu is superior to anything I've seen done so far.

I could see immediately they have 34 products under 7 categories; 5 are popular, 4 are new. If I want to try out one: Docs > Product OS > Integration > Install and configure > Install PostHog.

And if I wanted to learn a bit about their engineering: Company > Handbook > Engineering > Internal Processes > Bug prioritization.

Pricing: Pricing calculator > select product > set usage, select addons.

Each of these interactions took only seconds. And I could switch between the product overview page I opened earlier and the pricing page I just opened, without waiting for any entire website to reload (or having to right click, open in new tab, and then scroll).

As I said, there is something here beyond just aesthetics. And one of the conclusions may be that our current UI/UX philosophy has inadvertantly become user-hostile.

Twey - a day ago

I've always thought ‘multi-document interfaces’ as we used to call them are an anti-pattern. I have a perfectly good window manager; why does every app need its own incompatible, usually inferior window manager built in?

(Mind you on mobile I very much don't have a perfectly good window manager, and indeed can't even open multiple instances of most apps…)

vander_elst - a day ago

Nice idea, awesome implementation, but please no. I now need to learn a new UI and UX, I have to to organize windows inside my windows. I want websites to be more like a block of text rather than a super fancy interface.

scosman - 20 hours ago

Usability and perf experience for me:

- I'm getting about 5 FPS scrolling on a M4 Pro

- Moving a "window" around takes 29% of my CPU, and renders at about 2 fps

- I'm losing about 40% of my screen height for reading (14" laptop screen). So much so none of the article is visible above the fold, just the title and by-line.

- My browser's CMD-F finds things on layers hidden under the current window

- Changing window size via corner drag is also selecting text on other windows, no prevent default.

- Xzibit says: Tabs are bad, so we put some tabs in your tabs?

lpln3452 - an hour ago

My goal on a webpage for specific product information is simply to extract data and leave. I have zero interest in learning a new immersive UX for a task that should take seconds.

The modern web's obsession with maximizing engagement and time on page is fundamentally user hostile. It creates a frustrating experience for anyone viewing the web as a utility rather than just a source of entertainment.

keyle - a day ago

It's neat but it runs like a dog. I opened a couple of things and tried to move the window... I'd take a statically generated bunch of webpages over this. If you're going to make one of those multi window webpages looking thing, make it good.

To note, in the past, this was a big no-no because SEO was important. You had to have good SEO for search engines to index your content efficiently and show up well ranked in search results...

Now, well, that ship has sailed and sank somewhere off the west coast...

andrenotgiant - a day ago

I love the website. It stands out amongst a million vanilla SaaS marketing sites all using the same section stack template.

But nobody will actually use it the way they describe in this article. Nobody is going to use the site enough to learn and remember to use your site-specific window management when they need it.

goo - a day ago

Almost perfect. Inspirational.

It just needed to create a little box you can drag around when you click on nothing, like OS desktops have.

So here's the snippet to do that, toss this in the console and live the dream:

(() => { let startX, startY, box, dragging = false;

  const style = document.createElement('style');
  style.textContent = `
    .___selection-box {
      position: absolute;
      pointer-events: none;
      border: 1px dashed #2b76d6;
      background: rgba(43,118,214,0.12);
      z-index: 999999;
    }
  `;
  document.head.appendChild(style);

  function onDown(e) {
    if (e.button !== 0) return; // left click only
    startX = e.pageX;
    startY = e.pageY;
    dragging = true;

    box = document.createElement('div');
    box.className = '___selection-box';
    box.style.left = startX + 'px';
    box.style.top = startY + 'px';
    document.body.appendChild(box);

    e.preventDefault();
  }

  function onMove(e) {
    if (!dragging) return;
    const x = e.pageX, y = e.pageY;
    const left = Math.min(x, startX);
    const top = Math.min(y, startY);
    const width = Math.abs(x - startX);
    const height = Math.abs(y - startY);
    Object.assign(box.style, {
      left: left + 'px',
      top: top + 'px',
      width: width + 'px',
      height: height + 'px'
    });
  }

  function onUp(e) {
    if (!dragging) return;
    dragging = false;
    console.log('Selection rect:', box.getBoundingClientRect());
    box.remove();
    box = null;
  }

  window.addEventListener('mousedown', onDown);
  window.addEventListener('mousemove', onMove);
  window.addEventListener('mouseup', onUp);

  console.log(" Selection enabled. Drag with left mouse button. Check console for rect.");
})();
Retr0id - a day ago

> Legally-required cookie banner

> PostHog.com doesn't use third-party cookies, only a single in-house cookie

You're legally required to let me opt out of that cookie. Unless it's essential to the site functionality, in which case you don't need the banner at all.