<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged webdev-learning</title>
<link>https://coderlegion.com/tag/webdev-learning</link>
<description>Powered by Question2Answer</description>
<item>
<title>Your Next.js redirect() Silently Does Nothing Because It's Inside a try/catch</title>
<link>https://coderlegion.com/33072/your-next-js-redirect-silently-does-nothing-because-its-inside-a-try-catch</link>
<description>&lt;p&gt;A user fills in your form and clicks &quot;Create post&quot;. The post is saved in the database. And the page shows &quot;Could not create post&quot;.&lt;/p&gt;
&lt;p&gt;They try again. Now there are two posts.&lt;/p&gt;
&lt;p&gt;Nothing is wrong with your database. Your error handling caught something it was never supposed to catch.&lt;/p&gt;
&lt;h3 id=&quot;the-code-that-causes-it&quot;&gt;The Code That Causes It&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;// app/actions.ts
'use server';

import { redirect } from 'next/navigation';

export async function createPost(formData: FormData) {
  try {
    const post = await db.post.create({
      data: { title: String(formData.get('title')) },
    });

    redirect(`/posts/${post.id}`);
  } catch (err) {
    return { error: 'Could not create post' };
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It reads perfectly. Save the post, go to its page, and if anything fails, return an error. A tidy, defensive pattern that you have probably written a hundred times in other frameworks.&lt;/p&gt;
&lt;h3 id=&quot;why-it-breaks&quot;&gt;Why It Breaks&lt;/h3&gt;
&lt;p&gt;In Next.js, &lt;code&gt;redirect()&lt;/code&gt; does not return. It &lt;strong&gt;throws a special error&lt;/strong&gt;, and the framework catches that error higher up and turns it into a redirect response.&lt;/p&gt;
&lt;p&gt;That means your &lt;code&gt;catch&lt;/code&gt; block receives it first. Your code swallows the redirect, returns &lt;code&gt;{ error: ... }&lt;/code&gt;, and the framework never sees it.&lt;/p&gt;
&lt;p&gt;The same is true for &lt;code&gt;notFound()&lt;/code&gt;, which also works by throwing. Both are written to stop execution immediately, which is why TypeScript treats them as functions that never return.&lt;/p&gt;
&lt;h3 id=&quot;why-it-is-hard-to-catch&quot;&gt;Why It Is Hard to Catch&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The data is saved.&lt;/strong&gt; The only visible symptom is a wrong error message, so it looks like a UI bug, not a logic bug.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It is inconsistent in your head.&lt;/strong&gt; The same &lt;code&gt;redirect()&lt;/code&gt; works fine outside a &lt;code&gt;try&lt;/code&gt;, so you assume it is fine everywhere.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your logs are confusing.&lt;/strong&gt; If you log the caught error, you will see a strange error with a &lt;code&gt;NEXT_REDIRECT&lt;/code&gt; digest and think something crashed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It tempts you to retry.&lt;/strong&gt; Users see an error, submit again and create duplicates.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fix-1-keep-redirect-outside-the-try-block&quot;&gt;Fix 1: Keep redirect() Outside the try Block&lt;/h3&gt;
&lt;p&gt;Only wrap the code that can genuinely fail, and redirect afterwards:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;export async function createPost(formData: FormData) {
  let postId: string;

  try {
    const post = await db.post.create({
      data: { title: String(formData.get('title')) },
    });
    postId = post.id;
  } catch (err) {
    return { error: 'Could not create post' };
  }

  redirect(`/posts/${postId}`);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;try&lt;/code&gt; now covers only the database call. If it fails, you return the error. If it succeeds, execution continues to &lt;code&gt;redirect()&lt;/code&gt;, which is outside any &lt;code&gt;catch&lt;/code&gt;, so it can do its job.&lt;/p&gt;
&lt;p&gt;This is the cleanest option, and it is the one I use by default.&lt;/p&gt;
&lt;h3 id=&quot;fix-2-rethrow-if-you-must-catch-everything&quot;&gt;Fix 2: Rethrow If You Must Catch Everything&lt;/h3&gt;
&lt;p&gt;Sometimes the &lt;code&gt;redirect()&lt;/code&gt; sits deep inside a helper, and restructuring is awkward. Then let the framework's own errors pass through your &lt;code&gt;catch&lt;/code&gt;. Newer Next.js versions provide a helper for exactly this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;import { redirect, unstable_rethrow } from 'next/navigation';

try {
  // ...work that may call redirect() or notFound() somewhere inside
} catch (err) {
  unstable_rethrow(err); // lets redirect/notFound errors continue upward
  return { error: 'Something went wrong' };
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The name says it is not final, so check the documentation for the version you use. If it is not available in yours, structure your code as in Fix 1.&lt;/p&gt;
&lt;h3 id=&quot;fix-3-do-not-use-catch-all-to-control-flow&quot;&gt;Fix 3: Do Not Use Catch-All to Control Flow&lt;/h3&gt;
&lt;p&gt;A broader habit helps here. A &lt;code&gt;catch (err)&lt;/code&gt; with no check is a very wide net. Catch what you expect:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;catch (err) {
  if (err instanceof DuplicateTitleError) {
    return { error: 'You already have a post with that title' };
  }
  throw err; // anything else is not yours to handle here
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Rethrowing what you do not recognize means the framework's own signals, real crashes and bugs all reach the place that is meant to handle them.&lt;/p&gt;
&lt;h3 id=&quot;where-else-this-bites&quot;&gt;Where Else This Bites&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;notFound()&lt;/code&gt; inside &lt;code&gt;try&lt;/code&gt;.&lt;/strong&gt; A missing record becomes your generic error instead of a 404 page.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Route handlers and Server Components.&lt;/strong&gt; The same rule applies: any &lt;code&gt;try/catch&lt;/code&gt; around a call that can redirect or 404 will swallow it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;.catch()&lt;/code&gt; on a promise.&lt;/strong&gt; &lt;code&gt;somePromise.catch(() =&amp;gt; null)&lt;/code&gt; has the same effect if the promise's code calls &lt;code&gt;redirect()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wrapper functions.&lt;/strong&gt; A helper like &lt;code&gt;withErrorHandling(fn)&lt;/code&gt; that catches everything will break redirects in every function it wraps.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;quick-checklist&quot;&gt;Quick Checklist&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Situation &lt;/th&gt;&lt;th&gt;What to do&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;redirect()&lt;/code&gt; after a database write &lt;/td&gt;&lt;td&gt;Put the write in &lt;code&gt;try&lt;/code&gt;, &lt;code&gt;redirect()&lt;/code&gt; after it&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;notFound()&lt;/code&gt; when a record is missing &lt;/td&gt;&lt;td&gt;Call it outside the &lt;code&gt;try&lt;/code&gt;, or rethrow&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;A shared error-handling wrapper &lt;/td&gt;&lt;td&gt;Make it rethrow framework errors&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Unsure &lt;/td&gt;&lt;td&gt;Catch specific error types, rethrow the rest&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&quot;the-rule&quot;&gt;The Rule&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;redirect()&lt;/code&gt; and &lt;code&gt;notFound()&lt;/code&gt; signal by throwing, so a &lt;code&gt;catch&lt;/code&gt; around them will eat the signal.&lt;/strong&gt; Keep them outside &lt;code&gt;try&lt;/code&gt; blocks, or rethrow what you do not recognize.&lt;/p&gt;
&lt;p&gt;Quick audit: search your project for &lt;code&gt;redirect(&lt;/code&gt; and &lt;code&gt;notFound(&lt;/code&gt;. For each hit, look upward. If it sits inside a &lt;code&gt;try&lt;/code&gt;, you have either a bug now or one waiting for the day the code path is used.&lt;/p&gt;
&lt;p&gt;If you want a Next.js starting point where forms and actions are set up sensibly from day one, you can browse my &lt;a rel=&quot;nofollow&quot; href=&quot;https://pixelanas.com&quot;&gt;templates on pixelanas.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Get the templates:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://pixelanas.gumroad.com&quot;&gt;https://pixelanas.gumroad.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Have you ever shipped a form that showed an error after it had succeeded? Tell me in the comments how long it took you to find it.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Anas, full-stack Next.js developer building SaaS products and premium templates. X: &lt;a rel=&quot;nofollow&quot; href=&quot;https://x.com/ASheikh69751&quot;&gt;@ASheikh69751&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/33072/your-next-js-redirect-silently-does-nothing-because-its-inside-a-try-catch</guid>
<pubDate>Fri, 30 Oct 2026 10:08:42 +0000</pubDate>
</item>
<item>
<title>Fix: useSearchParams() Should Be Wrapped in a Suspense Boundary (and Why It Only Breaks at Build</title>
<link>https://coderlegion.com/31610/fix-usesearchparams-should-be-wrapped-in-suspense-boundary-and-why-it-only-breaks-at-build</link>
<description>&lt;p&gt;You add a small search box to your navbar. It reads the query string, so you reach for &lt;code&gt;useSearchParams()&lt;/code&gt;. Everything works in &lt;code&gt;next dev&lt;/code&gt;. You push, the deploy fails, and the build log says:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;useSearchParams() should be wrapped in a suspense boundary at page &quot;/about&quot;.
Read more: https://nextjs.org/docs/messages/missing-suspense-with-csr-bailout
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Notice the page name. You did not touch &lt;code&gt;/about&lt;/code&gt;. That detail is the whole story.&lt;/p&gt;
&lt;h3 id=&quot;the-code-that-triggers-it&quot;&gt;The Code That Triggers It&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-tsx&quot;&gt;// components/SearchBox.tsx
'use client';

import { useSearchParams } from 'next/navigation';

export function SearchBox() {
  const searchParams = useSearchParams();
  const query = searchParams.get('q') ?? '';

  return &amp;lt;input defaultValue={query} placeholder=&quot;Search...&quot; /&amp;gt;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-tsx&quot;&gt;// app/layout.tsx
import { SearchBox } from '@/components/SearchBox';

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    &amp;lt;html lang=&quot;en&quot;&amp;gt;
      &amp;lt;body&amp;gt;
        &amp;lt;nav&amp;gt;
          &amp;lt;SearchBox /&amp;gt;
        &amp;lt;/nav&amp;gt;
        {children}
      &amp;lt;/body&amp;gt;
    &amp;lt;/html&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nothing here looks wrong, and &lt;code&gt;next dev&lt;/code&gt; agrees with you.&lt;/p&gt;
&lt;h3 id=&quot;why-only-the-build-complains&quot;&gt;Why Only the Build Complains&lt;/h3&gt;
&lt;p&gt;At build time, Next.js tries to pre-render every page that does not obviously need request data into static HTML. That is the fast path, and it is the default.&lt;/p&gt;
&lt;p&gt;But a static page is built once, before any visitor exists, so it has no query string. &lt;code&gt;useSearchParams()&lt;/code&gt; needs one. Next.js handles this by &lt;strong&gt;bailing out of static rendering for that part of the tree&lt;/strong&gt;: the component is skipped on the server and rendered in the browser instead.&lt;/p&gt;
&lt;p&gt;The catch is how far the bail-out spreads. Without a &lt;code&gt;Suspense&lt;/code&gt; boundary around the component, the nearest boundary is the page itself, which would turn the whole page into client-side rendering and quietly throw away the static HTML you were about to ship. Instead of letting that happen silently, the build fails and asks you to say where the boundary should be.&lt;/p&gt;
&lt;p&gt;Dev mode renders every page on demand, so it never has to make that decision, which is why the error only shows up when you build.&lt;/p&gt;
&lt;h3 id=&quot;why-it-hits-every-page-at-once&quot;&gt;Why It Hits Every Page at Once&lt;/h3&gt;
&lt;p&gt;I put the component in &lt;code&gt;layout.tsx&lt;/code&gt; on purpose. A shared layout wraps every page, so one unguarded &lt;code&gt;useSearchParams()&lt;/code&gt; in a navbar breaks the build for &lt;code&gt;/&lt;/code&gt;, &lt;code&gt;/about&lt;/code&gt;, &lt;code&gt;/pricing&lt;/code&gt; and every other static route at the same time.&lt;/p&gt;
&lt;p&gt;That is also why the error names a page you never edited. The problem lives in a shared component.&lt;/p&gt;
&lt;h3 id=&quot;fix-1-wrap-the-component-in-suspense&quot;&gt;Fix 1: Wrap the Component in Suspense&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-tsx&quot;&gt;// app/layout.tsx
import { Suspense } from 'react';
import { SearchBox } from '@/components/SearchBox';

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    &amp;lt;html lang=&quot;en&quot;&amp;gt;
      &amp;lt;body&amp;gt;
        &amp;lt;nav&amp;gt;
          &amp;lt;Suspense fallback={&amp;lt;input disabled placeholder=&quot;Search...&quot; /&amp;gt;}&amp;gt;
            &amp;lt;SearchBox /&amp;gt;
          &amp;lt;/Suspense&amp;gt;
        &amp;lt;/nav&amp;gt;
        {children}
      &amp;lt;/body&amp;gt;
    &amp;lt;/html&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now only the search box is rendered in the browser. Everything else stays static HTML. The fallback is what visitors see until the client takes over, so make it the same size as the real component to avoid the layout jumping when it swaps in.&lt;/p&gt;
&lt;p&gt;This is the fix to reach for first. It keeps your pages static and limits the client-side part to the one component that needs it.&lt;/p&gt;
&lt;h3 id=&quot;fix-2-read-the-params-on-the-server-and-pass-them-down&quot;&gt;Fix 2: Read the Params on the Server and Pass Them Down&lt;/h3&gt;
&lt;p&gt;If the value is only needed on one page, skip the hook entirely. Pages receive &lt;code&gt;searchParams&lt;/code&gt; as a prop:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-tsx&quot;&gt;// app/search/page.tsx
export default async function SearchPage({
  searchParams,
}: {
  searchParams: Promise&amp;lt;{ q?: string }&amp;gt;;
}) {
  const { q } = await searchParams;
  return &amp;lt;SearchResults query={q ?? ''} /&amp;gt;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In Next.js 15, &lt;code&gt;searchParams&lt;/code&gt; is a Promise, so it has to be awaited. Reading it marks that page as dynamic, so it renders per request instead of at build time. For a real search results page that is exactly what you want.&lt;/p&gt;
&lt;h3 id=&quot;fix-3-force-the-route-to-be-dynamic&quot;&gt;Fix 3: Force the Route to Be Dynamic&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-tsx&quot;&gt;export const dynamic = 'force-dynamic';
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This also makes the error disappear, but it does so by giving up static rendering for the route. Use it when the page genuinely depends on the request, not as a way to silence the build. On a marketing page it trades speed for nothing.&lt;/p&gt;
&lt;h3 id=&quot;which-fix-when&quot;&gt;Which Fix When&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Situation &lt;/th&gt;&lt;th&gt;Fix&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Small interactive component reads the URL (navbar search, filters, tabs) &lt;/td&gt;&lt;td&gt;Suspense around that component&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;An entire page depends on the query string &lt;/td&gt;&lt;td&gt;Read &lt;code&gt;searchParams&lt;/code&gt; in the page&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;The page really is per-request &lt;/td&gt;&lt;td&gt;&lt;code&gt;force-dynamic&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&quot;a-detail-worth-knowing-about-the-fallback&quot;&gt;A Detail Worth Knowing About the Fallback&lt;/h3&gt;
&lt;p&gt;Whatever sits inside the Suspense boundary is client-rendered, so it will not be in the initial HTML. For a search input that does not matter. For content you want indexed, keep it outside the boundary. A fallback that does not match the final size also adds layout shift, which counts against your Core Web Vitals. I cover what those metrics measure in &lt;a rel=&quot;nofollow&quot; href=&quot;https://pixelanas.com/blog/core-web-vitals-explained&quot;&gt;this plain-language guide&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;the-rule-1&quot;&gt;The Rule&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;A client component that reads request-time data needs a Suspense boundary, so Next.js knows how much of the page to make dynamic.&lt;/strong&gt; Put the boundary as close to the component as you can, and the rest of the page stays static.&lt;/p&gt;
&lt;p&gt;I wrap every URL-driven component this way across my &lt;a rel=&quot;nofollow&quot; href=&quot;https://pixelanas.com&quot;&gt;Next.js templates&lt;/a&gt;, so the production build never depends on where a navbar or filter bar ends up in the layout.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Get the templates:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://pixelanas.gumroad.com&quot;&gt;https://pixelanas.gumroad.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Search your project for &lt;code&gt;useSearchParams&lt;/code&gt; and check that every use sits inside a &lt;code&gt;Suspense&lt;/code&gt; boundary, especially anything imported by &lt;code&gt;layout.tsx&lt;/code&gt;. If you have hit a different build-only error, drop it in the comments.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Anas, full-stack Next.js developer building SaaS products and premium templates. X: &lt;a rel=&quot;nofollow&quot; href=&quot;https://x.com/ASheikh69751&quot;&gt;@ASheikh69751&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/31610/fix-usesearchparams-should-be-wrapped-in-suspense-boundary-and-why-it-only-breaks-at-build</guid>
<pubDate>Sun, 18 Oct 2026 12:23:34 +0000</pubDate>
</item>
<item>
<title>Free upcoming accessibility education events in May</title>
<link>https://coderlegion.com/16836/free-upcoming-accessibility-education-events-in-may</link>
<description>&lt;h3 id=&quot;funka-foundation-accessible-name-make-it-or-break-it-&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://stiftelsenfunka.org/whats-up/free-friday-webinars/accessible-name-make-it-or-break-it/&quot;&gt;Funka Foundation: Accessible name – make it or break it&lt;/a&gt; &lt;/h3&gt;
&lt;p&gt;Friday, May 8, 13.30-14.00 CEST&lt;/p&gt;
&lt;p&gt;Every button, link, and image on your interface must have an accessible name. Get it right and assistive technology users can find it, understand it, and activate it. Get it wrong and you have locked them out completely.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;trusted-tester-study-group-8-sensory-characteristics-and-contrast-tables&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://gdg.community.dev/events/details/google-gdg-vienna-presents-dhs-trusted-tester-study-group-8-sensory-characteristics-and-contrast-tables/&quot;&gt;Trusted Tester Study Group 8: Sensory Characteristics and Contrast + Tables&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Friday May 15, 4:00 – 5:00 PM (GMT+2)&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;accessible-does-not-equal-equitable-real-human-experience-vs-compliance&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://us06web.zoom.us/webinar/register/WN_Lx91kTk9TtqvMmhdLS_dGQ&quot;&gt;Accessible does not equal Equitable: Real Human Experience vs Compliance&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Thursday, 20 May | 10 AM AEST&lt;/p&gt;
&lt;p&gt;In this webinar to celebrate Global Accessibility Awareness Day (GAAD), we explore the uncomfortable truth that a product can be fully compliant and still fail the people it’s meant to support. Drawing on real user experiences, we’ll expose the hidden friction that standards don’t capture, from cognitive overload to interaction fatigue and loss of confidence.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;all-the-questions-you-wanted-to-ask-during-gaad---but-didn-t-get-the-chance&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.eventbrite.co.uk/e/digital-accessibility-experts-live-tickets-111949261254&quot;&gt;All the questions you wanted to ask during GAAD - but didn’t get the chance&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Thursday 28th May 4pm UK-time&lt;/p&gt;
&lt;p&gt;Global Accessibility Awareness Day (GAAD) on Thursday 21st May is always energising. But once the week is over, the momentum can fade. The questions people meant to ask never get asked. The practical “what do we actually do now?” conversations don’t happen.&lt;/p&gt;
&lt;p&gt;So the week after GAAD Hassell Inclusion is hosting an open Q&amp;amp;A session with many seasoned accessibility experts, so you can ask the questions you need to make accessibility for 2026 not just for GAAD.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/16836/free-upcoming-accessibility-education-events-in-may</guid>
<pubDate>Wed, 06 May 2026 07:56:35 +0000</pubDate>
</item>
<item>
<title>Upcoming Accessibility Events in March 2026</title>
<link>https://coderlegion.com/12172/upcoming-accessibility-events-in-march-2026</link>
<description>&lt;h3 id=&quot;trusted-tester-study-group&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://gdg.community.dev/gdg-vienna/&quot;&gt;Trusted Tester Study Group&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Together with the Google Developer Group Vienna, I am hosting a study group for the Trusted Tester certification. Watch the previous session recordings &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/NzBo3sU0ki8?si=iMGiEJuSGJiMSTs0&quot;&gt;on YouTube&lt;/a&gt;. The dates and topics this month are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Session 2: Auto-Playing and Auto-Updating Content + Flashing&lt;br&gt;
Friday 6 March, 4:00 – 5:00 PM (GMT+1)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Session 3: Keyboard Access and Focus&lt;br&gt;
Thursday 12 March, 6:00 – 7:00 PM (GMT+1)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Session 4: Forms&lt;br&gt;
Friday 20 March, 4:00 – 5:00 PM (GMT+1)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;digital-accessibility-experts-live-help-accessibility-is-going-in-the-wrong-direction-where-i-work-what-can-i-do-about-it-&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.eventbrite.co.uk/e/digital-accessibility-experts-live-tickets-1980705813407?utm-campaign=social&amp;amp;utm-content=attendeeshare&amp;amp;utm-medium=discovery&amp;amp;utm-term=listing&amp;amp;utm-source=cp&amp;amp;aff=ebdsshcopyurl&quot;&gt;Digital Accessibility Experts Live: Help! Accessibility is going in the wrong direction where I work. What can I do about it?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Thursday 26th March 4 PM UK-time&lt;/p&gt;
&lt;p&gt;The global accessibility field grew in 2025. But many established accessibility initiatives in organisations also came under threat from the DEI backlash and economic budget cutting. 2026 is likely to be similar. So what can you do if your work comes under threat by decisions from your stakeholders?&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;accessibleeu-latvia---people-living-with-dementia-accessibility-solutions-amp-innovations-international-experience&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://accessible-eu-centre.ec.europa.eu/content-corner/events_en&quot;&gt;AccessibleEU Latvia - People Living with Dementia. Accessibility, Solutions &amp;amp; Innovations. International Experience&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Thursday 5 March 2026, 10:00 - 15:30 (EET)&lt;/p&gt;
&lt;p&gt;This AccessibleEU event organised in collaboration with the Latvia Alzheimer’s Association and the Association of Disabled Persons and their Friends ‘Apeirons’, aims to raise awareness among society, including policymakers, service providers, and professionals, about how to better support people with dementia and other cognitive disorders.&lt;/p&gt;
&lt;p&gt;Broadly defined accessibility plays a crucial role in enhancing the quality of life for these individuals - encompassing access to services, information, the built environment, and transportation.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;vienna-game-dev-meetup-no-diversity-no-games---how-inclusion-is-no-longer-optional&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.meetup.com/vienna-game-dev-meetup/events/313384044/?utm_medium=referral&amp;amp;utm_campaign=share-btn_savedevents_share_modal&amp;amp;utm_source=link&amp;amp;utm_version=v2&quot;&gt;Vienna Game Dev Meetup: No Diversity, No Games - How inclusion is no longer optional&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Tuesday, Mar 3 · 6:30 PM to 9:30 PM CET Das Packhaus: Marxergasse 24, 1030 Wien, Österreich&lt;/p&gt;
&lt;p&gt;The game industry has more talent, bigger budgets, and more powerful technology than ever before. Yet we’re stuck in sequels, safe bets, and recycled ideas. For decades, innovation was driven by hardware and graphics. That era is slowing down. Higher fidelity alone no longer creates novelty. Jack Gutmann argues that the next frontier of originality is perspective. Homogeneous teams create blind spots, predictable design, and cultural echo chambers, a form of creative inbreeding.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;vienna-women-techmakers-conference-break-the-pattern-&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://womentechmakers.at/conference/2026&quot;&gt;Vienna: Women Techmakers Conference “Break the Pattern”&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Saturday 14 March, 9:00 - 15:00 TUtheSky (Getreidemarkt 9, 1060 Vienna)&lt;/p&gt;
&lt;p&gt;Women Techmakers Vienna invites you to our International Women’s Day 2026 conference, themed “Break The Pattern.” Expect stories of non-traditional paths into tech and the moments women stepped up beyond their role to drive real change at work—improving processes, quality, leadership, and team culture. Come for practical takeaways, honest lessons, and new connections.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/12172/upcoming-accessibility-events-in-march-2026</guid>
<pubDate>Wed, 25 Feb 2026 09:30:15 +0000</pubDate>
</item>
<item>
<title>Accessibility Education Events in February 2026</title>
<link>https://coderlegion.com/11685/accessibility-education-events-in-february-2026</link>
<description>&lt;h3 id=&quot;a11y-tokyo-meetup-accessibility-and-internationaization&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.meetup.com/a11ytokyo/events/313272227/?utm_version=v2&quot;&gt;A11y Tokyo Meetup: Accessibility and Internationaization&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Tuesday, Feb 17 · 11:30 AM to 1:00 PM CET&lt;/p&gt;
&lt;p&gt;How does accessibility and internationalisation fit together?&lt;/p&gt;
&lt;p&gt;Why does one need the other, how do they relate, what does this all mean in real life and what can we do in practice? The talk is about how internationalisation and accessibility belong together and how considering internationalisation can improve products in general and provide a good access point to create more accessible products.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;rbi-amp-sebi-digital-accessibility-mandates-why-2026-is-a-compliance-inflection-point-for-india-s-financial-services&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://accessibility.deque.com/rbi-sebi-digital-a11y-mandates&quot;&gt;RBI &amp;amp; SEBI Digital Accessibility Mandates: Why 2026 Is a Compliance Inflection Point for India’s Financial Services&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Wednesday, 18 February | 12:00 - 1:00 PM (IST)&lt;/p&gt;
&lt;p&gt;As RBI and SEBI place stronger emphasis on inclusive and accessible digital experiences, many banks, NBFCs, fintechs, and market participants are asking the same questions: Which guidelines apply to us? Where are the real risks? And how do we move forward without disrupting business priorities?&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;zero-project-conference-2026&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/zeroprojectorg&quot;&gt;Zero Project Conference 2026&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Wednesday 18th to Friday 20th&lt;/p&gt;
&lt;p&gt;Live content from #ZeroCon26 will be streamed in an accessible manner via the conference platform and the Zero Project's YouTube channel. Session recordings will be made available after the conference.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;axe-con-2026&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.deque.com/axe-con/schedule/&quot;&gt;Axe-Con 2026&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Tuesday, February 24, through Wednesday, February 25, 2026&lt;/p&gt;
&lt;p&gt;Topics of focus will include accessibility in development, accessibility in design, organizational success with accessibility, and a wildcard track. Talks at Axe-con will include case studies from enterprise companies leading in large-scale accessibility efforts, as well as best practices and updates from technology leaders around the world.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;document-accessibility-in-2026&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.eventbrite.co.uk/e/digital-accessibility-experts-live-registration-111949261254&quot;&gt;Document Accessibility in 2026&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Thursday 26 February 4pm UK-time&lt;/p&gt;
&lt;p&gt;Building on previous webinars from 2024 - Creating Accessible Documents – this webinar continues with Hassell Inclusion’s scoped model, by exploring what’s new, what’s changed, and what to prioritise in 2026 in the world of document accessibility.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/11685/accessibility-education-events-in-february-2026</guid>
<pubDate>Sun, 15 Feb 2026 12:05:30 +0000</pubDate>
</item>
<item>
<title>Your Tutorials Are Lying to You. (Here's Why You Still Can't Build Anything Meaningful)</title>
<link>https://coderlegion.com/7495/your-tutorials-are-lying-to-you-heres-why-you-still-cant-build-anything-meaningful</link>
<description>&lt;p&gt;Alright, CODERLEGION, let's have a frank discussion. I'm an 8-year frontend engineer, primarily immersed in Angular, and I'm sharing my journey and lessons to genuinely inspire you. Today's hard truth:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You're likely stuck in Tutorial Hell, and it's sabotaging your growth.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You're grinding through courses on every hot framework – Angular, React, Vue – but your GitHub is filled with clones, not original portfolio pieces. You feel knowledgeable, but you lack the confidence to tackle a real-world problem.&lt;/p&gt;
&lt;p&gt;Here's why: &lt;strong&gt;Tutorials are fundamentally not designed to forge engineers.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;They are engineered to &lt;em&gt;eliminate friction&lt;/em&gt;. But friction is the crucible in which a true engineer is formed.&lt;/p&gt;
&lt;p&gt;Tutorials conveniently bypass the &lt;em&gt;real&lt;/em&gt; challenges:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unseen Bugs:&lt;/strong&gt; Nothing truly breaks in a tutorial. The instructor's code is pristine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ambiguous Requirements:&lt;/strong&gt; You're never given a vague feature request and forced to distill it into actionable steps.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Raw Setup:&lt;/strong&gt; The &lt;code&gt;ng new&lt;/code&gt; or &lt;code&gt;create-react-app&lt;/code&gt; command magically configures everything for you, shielding you from build tools, configurations, and environment variables.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reading Dense Docs:&lt;/strong&gt; You're rarely compelled to parse through extensive API documentation to find what you need.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You're acquiring &lt;em&gt;syntax&lt;/em&gt;, but you're fundamentally missing &lt;em&gt;strategy&lt;/em&gt;.&lt;/p&gt;
&lt;h4 id=&quot;the-ugly-project-that-will-catalyze-your-transformation&quot;&gt;The &quot;Ugly&quot; Project That Will Catalyze Your Transformation&lt;/h4&gt;
&lt;p&gt;My unwavering advice: Build something. I don't care if it's visually unappealing (remember our last discussion on CSS?). The point is to &lt;strong&gt;build it &lt;em&gt;yourself&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Your Mission:&lt;/strong&gt;&lt;br&gt;
Create a simple web application that interacts with a free, public API.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Maybe fetch and display character data from the &lt;a rel=&quot;nofollow&quot; href=&quot;https://rickandmortyapi.com/documentation/#rest&quot;&gt;Rick and Morty API&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Perhaps a simple app that fetches cat facts from the &lt;a rel=&quot;nofollow&quot; href=&quot;https://catfact.ninja/&quot;&gt;Cat Facts API&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Or display random jokes from the &lt;a rel=&quot;nofollow&quot; href=&quot;https://jokeapi.dev/&quot;&gt;JokeAPI&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Bare Minimum:&lt;/strong&gt; A button. Click it. Fetch data. Display the raw JSON (or a single parsed piece of it) on the page.&lt;/p&gt;
&lt;p&gt;In this seemingly trivial project, you will be &lt;em&gt;forced&lt;/em&gt; to conquer critical, real-world development challenges:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Making HTTP Requests:&lt;/strong&gt; Mastering &lt;code&gt;fetch()&lt;/code&gt; (or &lt;code&gt;HttpClient&lt;/code&gt; in Angular) and understanding &lt;code&gt;Promises&lt;/code&gt; and &lt;code&gt;async/await&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API Documentation Literacy:&lt;/strong&gt; Learning to read and interpret how an API works.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Error Handling:&lt;/strong&gt; Encountering CORS issues, network errors, and gracefully managing them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Parsing:&lt;/strong&gt; Extracting meaningful information from raw JSON responses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Browser DevTools Mastery:&lt;/strong&gt; Debugging network requests, inspecting responses, and understanding the console.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Stop being a passive consumer. Start being an active creator. The frustration you'll inevitably face is the signal that genuine, deep learning is occurring. Push through it. The confident, capable developer you aspire to be is on the other side of that struggle.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/7495/your-tutorials-are-lying-to-you-heres-why-you-still-cant-build-anything-meaningful</guid>
<pubDate>Tue, 18 Nov 2025 19:48:34 +0000</pubDate>
</item>
<item>
<title>The Folder Structure No One Teaches You (But Every Developer Needs)</title>
<link>https://coderlegion.com/7453/the-folder-structure-no-one-teaches-you-but-every-developer-needs</link>
<description>&lt;p&gt;Every developer has opened a messy project and immediately wanted to cry.&lt;br&gt;
Maybe the routes folder had configs, the utils folder had business logic, and the components folder was full of files named test-final-new.js.&lt;/p&gt;
&lt;p&gt;But here’s the secret: folder structure isn’t magic it’s just a series of small decisions that nobody teaches, yet every project depends on.&lt;/p&gt;
&lt;p&gt;In this post, you’ll learn how to design a clean folder structure that grows with your project, using simple mental models and real-world examples.&lt;/p&gt;
&lt;h3 id=&quot;why-folder-structure-matters&quot;&gt;&lt;strong&gt;Why Folder Structure Matters&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;A clean folder structure isn’t about being “organized.”&lt;br&gt;
It directly impacts how productive you are.&lt;/p&gt;
&lt;p&gt;Good structure helps you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prevent code rot — your project doesn’t slowly decay into chaos.&lt;/li&gt;
&lt;li&gt;Onboard faster — new developers instantly know where things live.&lt;/li&gt;
&lt;li&gt;Debug faster — find issues without hunting across five folders.&lt;/li&gt;
&lt;li&gt;Refactor safely — changes happen in predictable places.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;You don’t need a perfect structure just a consistent one.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;step-1-start-with-the-core-questions&quot;&gt;&lt;strong&gt;Step 1: Start With the Core Questions&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Before you create any folders, ask yourself:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What does this project do?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A simple website? A microservice? A mobile app?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What will grow over time?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;APIs? Components? Modules?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What repeats?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Shared logic, hooks, helpers, constants.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What is isolated?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Auth, billing, user management, dashboards.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What should be plug-and-play?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Reusable utilities, UI components, services.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Your folder structure should reflect the shape of your project, not someone else’s.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;step-2-the-three-layer-model&quot;&gt;&lt;strong&gt;Step 2: The Three-Layer Model&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;This is the simplest mental model you can apply to almost any project:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/core       → Business logic
/features   → Product modules
/shared     → Reusable utilities
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Why this model works:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;core = the brain&lt;/li&gt;
&lt;li&gt;features = the different “areas” of your app&lt;/li&gt;
&lt;li&gt;shared = the toolbox&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;This scales beautifully for frontend, backend, and even microservices.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;step-3-real-examples&quot;&gt;&lt;strong&gt;Step 3: Real Examples&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Let’s apply this to real projects developers actually build.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example 1: React Project&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A clean, scalable folder structure:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/src
  /components     → Reusable UI pieces
  /hooks          → Custom React hooks
  /pages          → Route-level pages
  /contexts       → Global state (Auth, Theme, User)
  /lib            → API clients, config, external services
  /assets         → Images, icons, fonts
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Why this works:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Components stay reusable&lt;/li&gt;
&lt;li&gt;Pages stay focused&lt;/li&gt;
&lt;li&gt;Hooks remain discoverable&lt;/li&gt;
&lt;li&gt;Global logic lives in contexts&lt;/li&gt;
&lt;li&gt;Assets stay out of your code files&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Example 2: Small Express API&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A lightweight backend structure:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/src
  /routes         → Route definitions
  /controllers    → Request logic
  /services       → Business logic
  /models         → Database schemas
  /utils          → Shared helpers (validators, formatters)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Why this works:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTTP logic stays separate from business logic&lt;/li&gt;
&lt;li&gt;Services stay reusable across controllers&lt;/li&gt;
&lt;li&gt;Models remain clean and consistent &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Final Thought&lt;/p&gt;
&lt;p&gt;You don’t need the perfect folder structure, you need one that reflects your project todayand doesn’t slow you down tomorrow.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Start simple.&lt;/li&gt;
&lt;li&gt;Stay consistent.&lt;/li&gt;
&lt;li&gt;Refactor when it hurts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Your future self (and your teammates) will thank you.&lt;/em&gt;&lt;/p&gt;
</description>
<category>React</category>
<guid isPermaLink="true">https://coderlegion.com/7453/the-folder-structure-no-one-teaches-you-but-every-developer-needs</guid>
<pubDate>Mon, 17 Nov 2025 15:02:47 +0000</pubDate>
</item>
<item>
<title>Upcoming Accessibility Education Events in November 2025</title>
<link>https://coderlegion.com/7039/upcoming-accessibility-education-events-in-november-2025</link>
<description>&lt;h3 id=&quot;the-state-of-accessibility-in-wordpress&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://wpcampus-org.zoom.us/webinar/register/8517600114996/WN_QD246GTVQ6WakJHwd4RMSQ#/registration&quot;&gt;The State of Accessibility in WordPress&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Thursday, November 6, starting 04:00 PM CET&lt;/p&gt;
&lt;p&gt;Join the WPCampus community on Thursday, November 6 at 10 a.m. Eastern (UTC -5) for a focused two-hour event exploring the current and future state of accessibility in WordPress through the lens of higher education.&lt;/p&gt;
&lt;p&gt;They bring together accessibility leaders, developers, and governance practitioners for a series of sessions that connect insight to action: understanding where accessibility in WordPress stands today, how to build stronger governance structures, and what new tools are emerging to make accessibility testing more seamless and integrated.&lt;/p&gt;
&lt;p&gt;Visit &lt;a rel=&quot;nofollow&quot; href=&quot;https://wpcampus.org/events/&quot;&gt;WPCampus.org/events&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h3 id=&quot;getting-tables-right-clear-accessible-and-effective&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://stiftelsenfunka.org/whats-up/free-friday-webinars/getting-tables-right-clear-accessible-and-effective/&quot;&gt;Getting tables right: Clear, accessible, and effective&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Friday, November 7, from 1:30 PM to 2 PM CET&lt;/p&gt;
&lt;p&gt;After the popular webinar on charts, Funka Foundation will now focus on tables. How do they work for people with different user needs? What are the main things to pay attention to? What are the main challenges? Join for an overview from the user perspective and some practical tips.&lt;/p&gt;
&lt;h3 id=&quot;world-usability-day-2025-emerging-technologies-and-human-experience-livestream&quot;&gt;World Usability Day 2025: &lt;a rel=&quot;nofollow&quot; href=&quot;https://wud.accessibilityfirst.at/&quot;&gt;Emerging Technologies and Human Experience Livestream&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Thursday, November 13, 6 PM to 8:30 PM CET&lt;/p&gt;
&lt;p&gt;Talks and panel discussion on accessibility considerations through augmented reality, mobile app development, AI as assistive tech, and alternative interface design.&lt;/p&gt;
&lt;p&gt;All events listed on &lt;a rel=&quot;nofollow&quot; href=&quot;https://worldusabilityday.org/#upcoming-events&quot;&gt;WorldUsabilityDay.org&lt;/a&gt;&lt;/p&gt;
</description>
<category>Augmented Reality</category>
<guid isPermaLink="true">https://coderlegion.com/7039/upcoming-accessibility-education-events-in-november-2025</guid>
<pubDate>Wed, 05 Nov 2025 07:42:02 +0000</pubDate>
</item>
<item>
<title>Your summary of upcoming accessibility education events in October 2025</title>
<link>https://coderlegion.com/5835/your-summary-of-upcoming-accessibility-education-events-in-october-2025</link>
<description>&lt;h3 id=&quot;wordpress-accessibility-meetup&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://us02web.zoom.us/webinar/register/5917550928532/WN_pFsYqJqrTJyG5lvYe8xdog#/registration&quot;&gt;WordPress Accessibility Meetup&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Thursday, October 2 at 10 AM Central&lt;/p&gt;
&lt;p&gt;It can be a struggle to convince your client to put in the effort and also conform to any regulation, like Section 508, the EU Accessibility Act, or otherwise. Drawing from her own experience with &quot;difficult&quot; clients and some basic psychology, Annelies Verhelst will provide you with compelling arguments and advice on how to make a business case.&lt;/p&gt;
&lt;h3 id=&quot;funka-foundation-friday-webinar-cybersecurity-accessibility-true&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://us06web.zoom.us/webinar/register/WN_0GwWshzNSOyJsXYMUmtP0w#/registration&quot;&gt;Funka Foundation Friday Webinar: Cybersecurity + Accessibility = True&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Friday, 3 October, 13.30-14.00 CEST&lt;/p&gt;
&lt;p&gt;Cybersecurity and accessibility are both critical for resilient digital infrastructures. This webinar explains how accessibility requirements are integrated with modern cybersecurity measures. Together, they form robust and inclusive standards that support the Cyber Resilience Act.&lt;/p&gt;
&lt;h3 id=&quot;wagtail-space&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://wagtail.org/wagtail-space-2025/&quot;&gt;Wagtail Space&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Wednesday, October 8th - Friday, October 10th&lt;/p&gt;
&lt;p&gt;Come join educators, publishing professionals, developers, open source enthusiasts, and leaders from organizations around the globe for three days of talks and networking. &lt;/p&gt;
&lt;h3 id=&quot;wordpress-accessibility-day&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://2025.wpaccessibility.day/schedule/&quot;&gt;WordPress Accessibility Day&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Wednesday, October 15th - Thursday, October 16th&lt;/p&gt;
&lt;p&gt;WordPress Accessibility Day is a 24-hour global event dedicated to promoting and learning website accessibility best practices for WordPress websites.&lt;/p&gt;
</description>
<category>Networking</category>
<guid isPermaLink="true">https://coderlegion.com/5835/your-summary-of-upcoming-accessibility-education-events-in-october-2025</guid>
<pubDate>Wed, 01 Oct 2025 11:52:09 +0000</pubDate>
</item>
<item>
<title>This is your event summary for upcoming opportunities in accessibility education in September 2025</title>
<link>https://coderlegion.com/5235/this-your-event-summary-upcoming-opportunities-accessibility-education-september-2025</link>
<description>&lt;h3 id=&quot;webaim-conference&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://conference.webaim.org/&quot;&gt;WebAIM Conference&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;September 16-17, from 12:15 PM– 5 PM (US Eastern Time)&lt;/p&gt;
&lt;p&gt;The Web Accessibility in Mind Conference is presented by WebAIM in partnership with Pope Tech. This virtual conference will provide conference participants with content that will help them mature their practice in digital accessibility. Our goals include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide a diverse range of perspectives from a diverse group of&lt;br&gt;
speakers.&lt;/li&gt;
&lt;li&gt;Share solutions to accessibility challenges.&lt;/li&gt;
&lt;li&gt;Give advice and guidance that helps our participants to actively&lt;br&gt;
contribute to providing more accessible digital spaces.&lt;/li&gt;
&lt;li&gt;Bring together a cross section of public and private sector&lt;br&gt;
technology professionals from organizations large and small.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;google-dev-group-vienna-ama-ask-us-anything-about-accessibility&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://gdg.community.dev/events/details/google-gdg-vienna-presents-ama-ask-us-anything-about-accessibility-2025-09-18/&quot;&gt;Google Dev Group Vienna AMA: Ask Us Anything about Accessibility&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Thursday, September 18, 5:00 – 6:30 PM (GMT+2)&lt;/p&gt;
&lt;p&gt;This session is your chance to ask all your burning questions about accessibility! Whether you're struggling with WCAG guidelines, unsure about best practices, or curious about the latest accessibility tools and techniques, we'll be here to provide answers and share insights. Panelists have backgrounds in software development, product design, UX research, QA engineering, product operations, and every single one brings deep expertise in accessibility.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;inclusive-design-24&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://inclusivedesign24.org/2025/schedule/&quot;&gt;Inclusive Design 24&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Thursday, September 25, all day livestream on &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/inclusivedesign24&quot;&gt;YouTube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Inclusive Design 24 (#id24) is a free 24-hour online event for the global community. It celebrates inclusive design and shares knowledge and ideas from analogue to digital, from design to development, from planners to practitioners, and everything and everyone in between.&lt;/p&gt;
</description>
<category>Mentorship</category>
<guid isPermaLink="true">https://coderlegion.com/5235/this-your-event-summary-upcoming-opportunities-accessibility-education-september-2025</guid>
<pubDate>Mon, 08 Sep 2025 19:46:08 +0000</pubDate>
</item>
<item>
<title>How I Process things?</title>
<link>https://coderlegion.com/5107/how-i-process-things</link>
<description>&lt;h3 id=&quot;intro-&quot;&gt;Intro.&lt;/h3&gt;
&lt;p&gt;&amp;gt;&lt;em&gt;As this is my very first post here, this might be a good start point to begin with?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It's about of what over the years took me to of where I'm now with my coding skills and that is this.&lt;/p&gt;
&lt;h4 id=&quot;1-having-an-idea-&quot;&gt;1. Having an idea.&lt;/h4&gt;
&lt;p&gt;That is where it begins with &quot;like a feature for my github page!&quot;, then I begin to gather the needed info of how to create that feature.&lt;/p&gt;
&lt;h4 id=&quot;2-figuring-out-of-how-to-do-it-&quot;&gt;2. Figuring out of how to do it.&lt;/h4&gt;
&lt;p&gt;Figuring out of how to get my idea realised, trying to understand the concept and if needed lookup some examples or following a tut.&lt;/p&gt;
&lt;h4 id=&quot;3-start-coding-&quot;&gt;3. Start Coding.&lt;/h4&gt;
&lt;p&gt;Finally and the best way to get forward, I open the editor and start coding.&lt;br&gt;
Sure and depending on the complexity, making mistakes and doing things completely wrong.&lt;/p&gt;
&lt;p&gt;Then learn from that and put persistance in place until I get it right.&lt;/p&gt;
&lt;p&gt;My credo always is this:&lt;/p&gt;
&lt;p&gt;&amp;gt;&lt;em&gt;While and as long as the pc doesn't smoke, it is all okay to make mistakes&lt;/em&gt; ???? &lt;em&gt;!&lt;/em&gt;&lt;/p&gt;
&lt;h4 id=&quot;4-getting-it-right-&quot;&gt;4. Getting It Right.&lt;/h4&gt;
&lt;p&gt;When I get it right, I move on and up to the next challence!&lt;/p&gt;
&lt;h4 id=&quot;in-a-nutshell-&quot;&gt;In a nutshell.&lt;/h4&gt;
&lt;p&gt;Yes for me it's about being busy with it; learning, making mistakes, solving them and proceed to the next challence!&lt;/p&gt;
&lt;h4 id=&quot;what-i-don-t-do-&quot;&gt;What I don't do!&lt;/h4&gt;
&lt;p&gt;As I work with many concepts, there is no way that I remember them all and I don't even try it!&lt;/p&gt;
&lt;p&gt;There is no need for too, because there is MDN where I can find 99% of what I want too know!&lt;/p&gt;
&lt;h3 id=&quot;what-i-also-learned-is-this-&quot;&gt;What I also learned is this.&lt;/h3&gt;
&lt;p&gt;There are moments on the road that I don't make any progress. When that occurs, I learned that having a break or looking the other way can do wonders. It helps to get a fresh new look on where I was working on!&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;It happens that I solve things in seconds, where I previously spent&lt;br&gt;
hours on!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;trying-things-out-&quot;&gt;Trying things out.&lt;/h3&gt;
&lt;p&gt;Trying things out, that is also what I do from time to time. Looking with a sharp eye to what I've created and or I can improve it, making it more KISS!&lt;/p&gt;
&lt;p&gt;&amp;gt;Yes, my goal is always to &lt;strong&gt;K&lt;/strong&gt;eep &lt;strong&gt;I&lt;/strong&gt;t &lt;strong&gt;S&lt;/strong&gt;hort and &lt;strong&gt;S&lt;/strong&gt;imple!&lt;/p&gt;
</description>
<category>Java</category>
<guid isPermaLink="true">https://coderlegion.com/5107/how-i-process-things</guid>
<pubDate>Sun, 31 Aug 2025 11:49:47 +0000</pubDate>
</item>
</channel>
</rss>