Readit News logoReadit News
johnmw commented on Microsoft in court for allegedly misleading Australians over 365 subscriptions   accc.gov.au/media-release... · Posted by u/edwinjm
EvanAnderson · 4 months ago
Oh, hell. I just made this change this afternoon.

If you don't mind me asking, how long was it from switching until this happened?

johnmw · 4 months ago
I changed the plan type some time ago and it happened when my existing subscription expired and it automatically switched over.

I'm afraid I wasn't paying close attention so only know it happened around the same day. If you have already switched over to Classic and have had no problems then hopefully the issue has been fixed.

johnmw commented on Microsoft in court for allegedly misleading Australians over 365 subscriptions   accc.gov.au/media-release... · Posted by u/edwinjm
tzs · 4 months ago
They have switched people to the plan with Copilot in the US too. I just checked and next renewal is set for the $99 plan with Copilot instead of the $69 plan I had been on.

I remember some email from them saying the Copilot was now on my plan, but I don't recall anything saying that this was actually a different, more expansive plan, or that Copilot was just a trial and the plan would switch until I took action, or anything like that.

Here's how to get back to your old plan:

• find the Services & Subscriptions page on your account and select Manage.

• click "Cancel Subscription".

• On the page that brings up there will be an option to switch to a different plan. That should have the "Personal Classic" plan. There's also "Family Classic" for people that want the family plan without Copilot.

Another way that some have reported works is to simply turn off recurring billing. That then sometimes triggers an offer to switch plans that includes the Classic plans.

johnmw · 4 months ago
Just another heads up - I switched to Family Classic and when it renewed it dropped all access to my family members. I wasn't aware it would do that and had a family member unable to use their "full" email account until I had worked it out and was able to re-link them.
johnmw commented on ZjsComponent: A Pragmatic Approach to Reusable UI Fragments for Web Development   arxiv.org/abs/2506.11016... · Posted by u/lelanthran
lelanthran · 9 months ago
> I see what you mean. I do understand the desire to reduce boilerplate. I'd go for a small framework like Lit (I'm sure there are even smaller ones out there) for that but I wouldn't fault anyone for writing their own. I guess, good for you you could get a paper out of it, too. It just doesn't feel particularly novel to warrant one.

I appreciate the sentiment; while this is, indeed, a paper, it is not a published or peer-reviewed paper. I wrote it with no intention of actually publishing it anywhere, and putting it on Arxiv is better long-term than putting it into Github or similar (I expect Arxiv to outlive any code forge).

In much the same way that I looked at web components and thought "What a nice idea. Here is how I can make this incrementally better and support client-side includes as well", I am hoping that this 100-lines of code will someday be looked at by someone else, who will (with the benefit of future knowledge and tech), then say "What a nice idea. Here is how I can make this incrementally better AND support <some future feature we cannot see right now>".

In any case, I thank you for your criticism and your time; your criticism can only make this better (for example, after reading your criticism, I think that showing a side-by-side comparison of my counter example with a custom element doing the same thing will make it more obvious why I find zjs-components more pleasant to write and use than Custom Elements).

Cheers :-)

[EDIT: Here is the comparison, in case you are still curious]

Here is the small comparison; I gave ChatGPT the ZjsComponent README.md and got it to write the example in the README as a custom element web component.

Here are the two implementations:

Implementation as a zjs-component:

    <div>
        Counter Value: <span name=counter-value>0</span>
    </div>
    <div>
        <button onclick='ZjsComponent.send(this, "increment", 1)'> +1 </button>
        <button onclick='ZjsComponent.send(this, "increment", 2)'> +2 </button>
        <button onclick='ZjsComponent.send(this, "increment", 5)'> +5 </button>
    </div>

    <script>
        function increment(amount) {
            const el = this.querySelector("[name='counter-value']");
            el.textContent = parseInt(el.textContent) + amount;
        }

        exports.increment = increment;
    </script>
Usage of zjs-component:

   <zjs-component remote-src=counter.zjsc> </zjs-component>
Implementation as a custom element web component:

    <!-- counter-component.js -->
    <script>
    class CounterComponent extends HTMLElement {
      constructor() {
        super();

        this.attachShadow({ mode: 'open' });

        this.shadowRoot.innerHTML = `
          <div>
            Counter Value: <span id="counter-value">0</span>
          </div>
          <div>
            <button data-amount="1"> +1 </button>
            <button data-amount="2"> +2 </button>
            <button data-amount="5"> +5 </button>
          </div>
        `;
      }

      connectedCallback() {
        this.shadowRoot.querySelectorAll('button').forEach(btn => {
          btn.addEventListener('click', () => {
            const amount = parseInt(btn.getAttribute('data-amount'), 10);
            this.increment(amount);
          });
        });
      }

      increment(amount) {
        const valueEl = this.shadowRoot.getElementById('counter-value');
        valueEl.textContent = parseInt(valueEl.textContent, 10) + amount;
      }
    }

    customElements.define('counter-component', CounterComponent);
    </script>
Usage of the custom element web component:

    <counter-component></counter-component>

johnmw · 9 months ago
I really like what you have done.

I know you are trying to avoid boiler plate but I'm wondering how technically difficult it would be to provide an alternative for those of us who really like named components? Something like:

  <script>
    ZjsComponent.register("counter-component", "counter.zjsc");
  </script>
Then I can just use in the named way, like:

  <counter-component start-at="100"><counter-component>

johnmw commented on A.I. Is a Religious Cult   youtube.com/watch?v=6ovuM... · Posted by u/johnmw
johnmw · 9 months ago
I think this is an interesting interview about AI companies. I'm curious to see what people think.
johnmw · 9 months ago
Edit/Addendum: the full title of the video is "A.I. is a Religious Cult with Karen Hao". Karen Hao recently released a book called "Empire of AI - Dreams and Nightmares in Sam Altman's OpenAI".

I don't think the video title is great. The interview covers a wide range of topics around AI companies (often quite critically) and makes some interesting points.

johnmw commented on A.I. Is a Religious Cult   youtube.com/watch?v=6ovuM... · Posted by u/johnmw
johnmw · 9 months ago
I think this is an interesting interview about AI companies. I'm curious to see what people think.
johnmw commented on Type-constrained code generation with language models   arxiv.org/abs/2504.09246... · Posted by u/tough
ArcaneMoose · 10 months ago
I think TypeScript is uniquely positioned to be the optimal language for LLMs. Tons of training data (benefiting from all the JS examples as well) plus the structure of types for LLMs to follow and tools to enforce.
johnmw · 10 months ago
Those who agree might be interested in "Introducing TypeChat" by Anders Hejlsberg + others (2023) [1]

[1]: https://microsoft.github.io/TypeChat/blog/introducing-typech...

johnmw commented on Self-Hosting like it's 2025   kiranet.org/self-hosting-... · Posted by u/finnlab
johnmw · a year ago
I recently came across another new one that looks really nice - Canine [0].

I haven't tried it myself yet. Has anybody else given it a spin?

[0]: https://canine.sh/

u/johnmw

KarmaCake day193May 31, 2009
About
Wandering developer currently living in New Zealand.
View Original