Search
1000 results for “im_a_GDeveloper”
-
The 3 React Upgrades SPFx Devs Are Ignoring (And Why Your Web Parts Are Leaking Performance)
1,402 words, 7 minutes read time.
Let’s cut the fluff: if your SPFx web parts feel sluggish, your state management is spaghetti, or your page crashes under moderate load, it’s because you’re not playing with React the way it’s meant to be played in 2026. The latest version of SPFx ships with React 18 support, but most devs treat it like yesterday’s framework, dragging legacy habits into modern code. I’ve seen it countless times: web parts patched with workarounds, effects firing endlessly, unoptimized re-renders eating CPU cycles, and junior devs praying that no one notices. The hard truth? If you can’t adapt to React’s new features, your code is dying on the vine, and so is your professional credibility.
This isn’t a gentle nudge. I’m here to break down the three React upgrades SPFx developers ignore at their own peril, why they matter technically, and how they mirror discipline—or the lack thereof—in your professional and personal life. First, we tackle the core of modern React: Concurrent Rendering and Automatic Batching.
Concurrent Rendering and Automatic Batching – Your Web Parts’ Backbone
When React 18 dropped concurrent rendering and automatic batching, it wasn’t a luxury—it was a lifeline. Most SPFx devs never adjust their components for this. They cling to class components with
componentDidMounthacks or use hooks incorrectly, leaving effects firing multiple times, state updates queuing chaotically, and memory leaks piling up. In SPFx, where your web part is a node on the page with other parts loading simultaneously, this isn’t minor—it’s the difference between a smooth user experience and a browser meltdown.I’ve refactored dozens of enterprise SPFx solutions. If your
useEffectcalls aren’t guarded, or you don’t understand how React batches state updates automatically now, you’re wasting render cycles and bleeding performance. Imagine deploying a web part that triggers three API calls per keystroke in a search box because you didn’t wrap state changes in proper batching logic. That’s a professional facepalm waiting to happen.This is also about integrity. Your components are the kernel of your web part. If they panic, the whole page goes down. Every unguarded effect, every missed cleanup is like leaving a socket exposed: it’s dangerous, messy, and shows laziness. Learning concurrent rendering and embracing automatic batching isn’t optional; it’s the same principle you apply in life when you keep promises, manage your commitments, and clean up after yourself. Half measures don’t cut it in code or character.
From a pure technical perspective, understand that concurrent rendering allows React to interrupt long-running renders, prioritizing urgent updates and keeping the UI responsive. Automatic batching merges multiple state updates into a single render, reducing unnecessary DOM recalculations. In SPFx web parts, where you might be calling the SharePoint REST API or Microsoft Graph, this translates into fewer wasted renders, less flicker, and a page that doesn’t tank when multiple web parts fire simultaneously. It’s subtle, but anyone ignoring this is coding in yesterday’s world.
The takeaway is simple: refactor your legacy components, embrace hooks fully, and make React 18 work for you, not against you. Stop treating batching as magic and understand the lifecycle implications. Every clean render, every optimized state transition, is a reflection of the discipline you either bring or fail to bring to your work.
Suspense, Lazy Loading, and Code Splitting – Stop Shipping Monoliths
If you’re still bundling every component into a single SPFx web part, congratulations—you’re shipping a monolith nobody wants to wait for. React 18’s Suspense, combined with lazy loading, is your ticket to scalable, maintainable, and performant web parts. Yet most devs ignore it. They either don’t understand it or they fear breaking things, so they cling to the “just load everything upfront” mindset. That’s cowardice, plain and simple.
Suspense lets React pause rendering until a component or data is ready. Lazy loading defers non-critical components, shaving precious milliseconds off initial load time. In SPFx, where your web part might pull data from multiple lists, libraries, or Microsoft Graph endpoints, ignoring this is a performance crime. I’ve watched junior developers bake everything into
bundle.js, resulting in 3MB downloads for a single web part. Users hate that. Management hates that. And your reputation? Tanking.Implementing Suspense properly isn’t just technical. It forces discipline in planning component structure, dependencies, and render order. Every lazy-loaded component you ship cleanly mirrors your ability to compartmentalize and manage complexity in real life. A man who leaves tasks half-done, who tries to juggle everything without order, is coding like he lives: chaotic, inefficient, and fragile. You want clean SPFx web parts? Start thinking like a disciplined architect.
Technically, wrapping your web parts with
Suspenseand splitting components usingReact.lazy()reduces initial payload and allows React to prioritize urgent renders. Combined with proper error boundaries, you’re not just optimizing performance—you’re creating a resilient system. Lazy-loading non-critical components is like building load-bearing walls before the decorative trim: prioritize stability, then polish. Any SPFx dev ignoring this is playing checkers in a chess game.Strict Mode, DevTools, and Type Safety – Expose Your Weak Links
React 18’s Strict Mode is more than a debug feature—it’s a truth serum for sloppy code. When enabled, it intentionally double-invokes certain functions and effects to highlight side effects, memory leaks, and unsafe lifecycles. Most SPFx developers disable it immediately because it “spams the console.” That’s the coward’s move. You’re afraid to face your mistakes.
I run Strict Mode on every SPFx project. Every memory leak caught early saves headaches later. Every unclean effect prevented saves CPU cycles and user frustration. Pair that with TypeScript’s type enforcement and React DevTools profiling, and you’re not just coding—you’re auditing, refactoring, and hardening your web parts. Anything less is negligent.
The life lesson here is brutal but simple: discipline exposes weakness. If you’re not testing, profiling, and pushing your code to reveal flaws, you’re hiding from your own incompetence. Your character is the kernel; your habits are the state. If you panic under load, everything around you suffers. Apply Strict Mode and type safety to React in SPFx, and you build a muscle: resilience, foresight, and accountability.
Technically, the combination of Strict Mode and TypeScript ensures that your SPFx web parts are robust against async pitfalls, improper effect cleanup, and improper prop usage. Every refactor becomes a proof point that you can maintain complex systems with minimal technical debt. If you ignore it, you’re shipping spaghetti and calling it gourmet.
Conclusion: No-Excuses Mastery – Ship Like a Pro or Ship Like a Junior
Here’s the brutal truth: React 18 in SPFx is a weapon. Ignore concurrent rendering, batching, Suspense, lazy loading, Strict Mode, or TypeScript, and you’re not a developer—you’re a liability. You can’t pretend old habits will carry you; they won’t. Your web parts crash, your users suffer, and your reputation bleeds like memory leaks in an unoptimized component.
Refactor. Optimize. Audit. Stop shipping half-baked web parts. Embrace concurrent rendering to stabilize your core, implement Suspense and lazy loading to manage complexity, and enforce strict checks and type safety to expose weaknesses before they hit production. Every module you clean, every effect you guard, every render you optimize reflects the man you are—or refuse to be.
No more excuses. Ship like a professional, or get left behind. Your SPFx web parts are a reflection of your discipline, attention to detail, and mastery of modern frameworks. Treat them with respect. Treat your craft with respect. And for anyone serious about leveling up, subscribe, comment, or reach out—but only if you’re ready to put in the work. Half measures are for hobbyists.
Call to Action
If this post sparked your creativity, don’t just scroll past. Join the community of makers and tinkerers—people turning ideas into reality with 3D printing. Subscribe for more 3D printing guides and projects, drop a comment sharing what you’re printing, or reach out and tell me about your latest project. Let’s build together.D. Bryan King
Sources
- React Official Documentation
- SPFx Web Part Overview
- Concurrent UI Patterns in React
- React Suspense API
- React.lazy Documentation
- React Hooks Introduction
- SPFx Hello World Guide
- React StrictMode
- TypeScript Handbook
- Optimizing Performance in React
- SPFx Web Part Lifecycle
Disclaimer:
The views and opinions expressed in this post are solely those of the author. The information provided is based on personal research, experience, and understanding of the subject matter at the time of writing. Readers should consult relevant experts or authorities for specific guidance related to their unique situations.
Related Posts
Rate this:
#automaticBatching #componentOptimization #concurrentRendering #effectCleanup #lazyLoading #lazyLoadedComponents #modernReact #modernWebDevelopment #React18 #React18Features #React18Hooks #React18InSPFx #ReactArchitecture #reactBestPractices #ReactCodeHygiene #ReactCoding #ReactComponentDesign #ReactConcurrency #ReactDebugging #ReactDevTools #ReactErrorBoundaries #ReactHooks #ReactLazy #ReactLearning #ReactMemoryLeaks #ReactOptimizationTechniques #ReactPerformance #ReactProfiler #ReactRefactor #ReactStateManagement #ReactStrictMode #ReactSuspenseAPI #ReactTips #ReactTraining #ReactUpdates #resilientWebParts #scalableSPFx #SharePointDevelopment #SharePointFramework #SharePointOptimization #SharePointPerformance #SharePointTips #SPFx #SPFxBestPractices #SPFxCoding #SPFxDeveloperGuide #SPFxDevelopment #SPFxLifecycle #SPFxLifecycleManagement #SPFxPerformance #SPFxTips #SPFxTutorials #SPFxWebParts #StrictMode #Suspense #TypeScript #TypeScriptSPFx #webPartArchitecture #webPartOptimization #webPartPerformance -
I've been employed as a developer by 4 companies that sold software.
In ALL, I discovered at least one potentially-company-ending #security flaw.
I also led #incident responses to active exploits in 3/4 that successfully contained breeches without catastrophic impacts.
I want to believe this is all because I'm very good at my job.
What I actually believe is that the bar for security knowledge & critical thinking is on the ground and I trip over it frequently by talking to people outside dev.
-
Taimi: An LGBTQ+ Dating and Chat App
Taimi became my go-to dating app, but it did not last.
Photo by James A. Molnar on UnsplashAll dating apps suck. All of them. Without exception. So, yes, Taimi sucks too. However, they don’t all suck to the same extent, and thus Taimi, for a brief period of time, became my preferred dating app, dethroning Feeld. Alas, this was not to last.
Let’s go over my demographics. They are relevant as they color my experience on the dating apps. I’m nonbinary, pansexual, polyamorous, autistic. I’m also into BDSM. Please do not make the mistake of thinking that any of these identities implies another. There are plenty of pansexual folks who are not also polyamorous, to take just one example.
In the Google Play Store, Taimi is labeled as a LGBTQ+ Dating and Chat app. True to this label, most of the people on the app are indeed queer. However, you can also find a few cishet folks on the app too. Contrarily to Feeld, Taimi is not specifically geared towards kinky folks. At the end of the day, the difference does not matter much. There are kinky people on Taimi, just not wall-to-wall like on Feeld.
Now, let’s get into the mess of an app that Taimi is.
How It Works… Haha! As If…
I’d like to explain how it works, but any explanation on my part would be pointless. See, the Taimi developers like to use their users as lab rats. Every week, some old features disappear, and some new features appear. Or perhaps I should call these features anti-features, because a lot of them stink badly.
Here’s an example of such an anti-feature. The app presents you with a set of potential connections. You decide which parameters the candidates for connection must have: gender, age, distance, etc. For months, when you ran out of new candidates in your set, the GUI would explicitly suggest that you alter your search parameters to get more matches.
Now, it “helpfully” changes those parameters for you. You don’t do long-distance relationships? Screw that. Now you do. You don’t want to date anyone older than a certain age, or younger than a certain age? Screw that. Now you do.
At first, the app would tell you that it changed the parameters. I complained about this, and now the app changes these parameters without telling you. This is proof positive that Taimi listens to their clients. (This last line was said sarcastically.)
Another anti-feature is that the app now, from time to time, presents you with a slate of people to act on. You can pass on them, or you can all like them at once. However, you cannot look at their profile. Do they live nearby? Are they kinky? Are they compatible with you? Screw you! You cannot know.
There are more anti-features I could talk about, but I do not wish to talk about more of these. I think the anti-features I listed above give you a taste.
Annoyances and Bugs
The bio
Taimi restricts your biography to 500 characters. That’s rather pitiful. Feeld allows 1500 characters, and I find Feeld’s limit rather restrictive. I am of the opinion that such length restrictions smack of ageism. Young folks don’t have much of a life history, but us older folks do. These restrictions stink. If someone wants to infodump about their own life, let them. Maybe someone else will like it.
In addition to the restricted bio size, Taimi deleted my bio twice without warning. This is quite annoying. I regularly run into people who have no bio, but if the app is the one deleting it, I cannot blame them.
Travel
Taimi updates your location when you travel, and does not have the notion of a “home base.” Therefore, it presents the same problem as Feeld. If someone is traveling, and there is no note in their profile about this, you can waste your time with them if one of you is not into long-distance relationships.
I’ve had this problem happen at least twice. One of the person with whom I had started an Instant Chat came back saying that they were just passing through. In another case, I had initiated an Instant Chat with someone. They looked at my message but did not reply, disconnect, or block me. I checked their profile back and found that they were now several states away from me.
Just like with the case of Feeld, from the perspective of the developer, there is no reason to fix this.
Admirers
Their “Admirers” tab is laughable. I found in there someone who had admired me four times, and yet had this in their profile:
I’m fun easy going […] No poly situation. No hookups. CIS gendered men and women only please. Straight men only.
Yeah, I bet that you are “fun” and “easy going.” This person is a good example of the problem with the “bisexual” label. They identified as bisexual, which for them excludes trans folks. I don’t want to keep explaining that my definition does not exclude any gender, so I call myself pansexual.
So, this person, who had admired me four times, would, according to their own profile, not want to be with me because:
- I’m polyamorous.
- I am trans because I transitioned from male to nonbinary.
- I’m not straight.
Then there was this woman around my age who had admired me three times. I read her profile, only to find that she’s not into kink or polyamory.
Similarly, a lesbian had looked at my profile four times, according to Taimi. I’m a male-presenting enby and thus am generally incompatible with lesbians. Finally, I did start an Instant Chat with someone who I might have been compatible with, and which Taimi claimed hat look at my profile three times. They rejected me as soon as they saw my message.
In conclusion, the “Admirers” tab is mostly useless. I’m not going to hazard a guess as to why exactly.
The Ability to Instant Chat
As I mentioned above, Taimi allows you to instantly chat with someone. They do not have to like you back to initiate the possibility of chatting. As soon as you send them a message with instant chat, they can reply.
Now, the ability to instant chat is a limited resource. When I started my trial, I did not pay for a while, but I still was getting once instant chat per week. Then I paid, and I was getting three instant chats per week, but I let my subscription lapse, and now I no longer have any instant chat.
As great as this ability would seem, I’ve had no response whatsoever to the instant chats I’ve sent. By this, I mean that my message was not even read. In one case, I got an instant block, but this is it. So the instant chat feature only seems to be designed to generate revenue for the dating app.
Conclusion
Taimi is a mess of a dating app. They keep changing the features of the app, no doubt in an attempt to maximize their revenue. However, I find this approach off-putting, and it does not make me want to spend any more money on the app.
#AutisticWriters #Dating #DatingApp #lgbtq #OnlineDating #queer #Taimi #YourAutisticLife
-
[Help with brainstorming]
I'm definitely not a professional developer, but I'd still like to use LLM's such as ChatGPT, Claude and the like to develop a design for my blog based on the Kirby CMS. 😊
Vibe coding is what I mean in this context. However, as this is completely new to me, the question arises as to where and, above all, how I should start. 🤔
Does anyone have any ideas about this or has already done it themselves in the past? 🙄
I'm not concerned with the question of "how useful" this process might be, because that's a topic in itself. 😅😉
I would be very grateful for any tips or instructions. Thank you very much for your help and perhaps sharing this post with a boost in the Fediverse. 👍
#Developer #Brainstorming #Blog #CMS #ChatGPT #Claude #Design #Help #Kirby #LLM
-
If you're looking for a passionate developer 🥑, I'm looking for a new challenge. Preferably in the #Java space, but not necessarily. Open for all ideas.
-
I’m deeply impressed by this job post on the Diversify Tech job board.
Flightcontrol is looking for a #DeveloperAdvocate and sounds like a sincerely awesome bunch of humans!
-
I just received another positive feedback from a #developer I have been bugging for years and who has now started implementing #linuxsupport (no ETA as of now). 🙂
I'm talking about Acon Digital, creators of the Acoustica #audioeditor and the Restoration Suite #plugin (s), among others.
To share my excitement, you can take a look at their lineup here:
https://acondigital.com/productsAnd have a look at the up-to-date support request tracking list here:
https://linuxaudio.dev/linux-support-request-tracking -
Hello, World! This is my #introduction post. I'm me, you're you (at least I hope so), and I'm glad to be here with you.
I talk about politics, #infosec, bad jokes, memes, and the terrible things we're expected to just accept in the name of capitalism and making the rich richer. Black Lives Matter, trans rights are human rights, sex work is work. SWERFs, TERFs, Nazis, and their apologists need not apply.
I'm an infosec generalist, working on securing both back-end infra and client devices. #ZeroTrust, #2FactorAuthentication, #certificates (both TLS and SSH), are major focus areas for me.
I'm also a reasonable #software #developer (just don't ask me to pass a software engineering interview loop) and a pretty good #Linux and #OpenBSD sysadmin. I also know my way around #database systems, preferably #PostgreSQL or #MySQL.
I like to think I'm reasonably competent at what I do. My employer has agreed for over 15 years at this point, for whatever that's worth.
What would I say it is I do here? When I'm not guarding my stapler, I like to read fantasy novels and I play #GenshinImpact and #HonkaiStarRail. I'm also making my way through #TearsOfTheKingdom slowly. No multi-player games for me, not even tabletop anymore, but I might watch if you're streaming.
-
The more I think about it, the more I’m confident that it’ll be possible to test a #RealityOS application directly from an iPhone ARKit context. The platform would be far more successful for developers to onboard on if they don’t necessary have to invest 3k to start building things. At least as long as we have a developer account around 🙃 #iOSdev #Apple
-
The more I think about it, the more I’m confident that it’ll be possible to test a #RealityOS application directly from an iPhone ARKit context. The platform would be far more successful for developers to onboard on if they don’t necessary have to invest 3k to start building things. At least as long as we have a developer account around 🙃 #iOSdev #Apple
-
The more I think about it, the more I’m confident that it’ll be possible to test a #RealityOS application directly from an iPhone ARKit context. The platform would be far more successful for developers to onboard on if they don’t necessary have to invest 3k to start building things. At least as long as we have a developer account around 🙃 #iOSdev #Apple
-
The more I think about it, the more I’m confident that it’ll be possible to test a #RealityOS application directly from an iPhone ARKit context. The platform would be far more successful for developers to onboard on if they don’t necessary have to invest 3k to start building things. At least as long as we have a developer account around 🙃 #iOSdev #Apple
-
The more I think about it, the more I’m confident that it’ll be possible to test a #RealityOS application directly from an iPhone ARKit context. The platform would be far more successful for developers to onboard on if they don’t necessary have to invest 3k to start building things. At least as long as we have a developer account around 🙃 #iOSdev #Apple
-
CW: SFW! Just a lengthy post about an excellent, reverse-engineering piece of software for computer users that I recommended to software developers.
Let me start with that I'm NOT A SHILL, I'm simply stating my own preferences for a program that I have come to very much enjoy in the past few weeks/months, despite the fact that it has been developed by a tyrannically corrupt, capitalistic-minded government (my words and not theirs).
I've recently made #Ghidra a serious part of my regularly used development toolkit, particularly when it comes to coding with C/C++ despite the fact that this particular piece of software has been developed by the NSA themselves in the United States.
The potential security concerns are simply outweighed by the immense amount of useful, reverse engineering features that #Ghidra provides to the average software developer, without having to invest a small mortgage into something alternative like #IDAPro, which would've been the more traditional choice.
So yeah! I think anyone who is serious about developing software, particularly if it's with code that #compiles natively to machine code, that they take up learning and/or trying out Ghidra!
The list of features is too large to list but my favorite would have to be the version tracking provided, so you can easily make comparisons between different versions of software at a glance, whilst reverse-engineered, and see what a close-sourced developer has been up to in their time. Or simply see for yourself what a change in a LOC has accomplished for you!
I haven't even mentioned the best part and that is the fact that the program features an #ouroboros #Dragon eating its own tail while breathing #binary #code as its breath weapon! Just have a look at the attachment, it really does look as cool as it sounds.
#ReverseEngineering #ReverseEngineered #Programming #Software
-
AWS Machine Learning – Harness the power of MCP servers with Amazon Bedrock Agents
Harness the power of MCP servers with Amazon Bedrock Agents
I’ve been digging into this new AWS blog post about Model Context Protocol (MCP) servers and their integration with Amazon Bedrock Agents, and I have to say, I’m pretty excited about what this means for those of us building with AI.
What the heck is MCP anyway?
MCP (Model Context Protocol) is Anthropic’s open protocol for connecting large language models to basically any data source or tool. Think of it as a standard way for AI models to talk to everything from databases to APIs without needing custom code for every single connection. AWS has now integrated this with Amazon Bedrock Agents.
However, in the past, connecting these agents to diverse enterprise systems has created development bottlenecks, with each integration requiring custom code and ongoing maintenance—a standardization challenge that slows the delivery of contextual AI assistance across an organization’s digital ecosystem. This is a problem that you can solve by using Model Context Protocol (MCP), which provides a standardized way for LLMs to connect to data sources and tools.
I’m always looking for ways to simplify infrastructure. I don’t want to write endless custom integrations that I’ll have to maintain forever. MCP promises to solve exactly this problem, which means I can focus more on what I want to build and less on the plumbing.
An ecosystem in the making
What really caught my attention was this bit:
Today, MCP is providing agents standard access to an expanding list of accessible tools that you can use to accomplish a variety of tasks. In time, MCP can promote better discoverability of agents and tools through marketplaces, enabling agents to share context and have common workspaces for better interaction, and scale agent interoperability across the industry.
This is where things get interesting! It’s not just about making individual connections easier—it’s about creating an entire ecosystem of interoperable tools. Are MCPs like APIs?
The right architecture for the job
The post explains that MCP uses a client-server architecture.
Whether you’re connecting to external systems or internal data stores or tools, you can now use MCP to interface with all of them in the same way. The client-server architecture of MCP enables your agent to access new capabilities as the MCP server updates without requiring any changes to the application code.
Ok, I like the separation of concerns. I can update my data sources without touching my application logic, and vice versa.
Real problems, real solutions
The example AWS gives is all about understanding cloud spending:
Imagine asking questions like “Help me understand my Bedrock spend over the last few weeks” or “What were my EC2 costs last month across regions and instance types?” and getting a human-readable analysis of the data instead of raw numbers on a dashboard. The system interprets your intent and delivers precisely what you need—whether that’s detailed breakdowns, trend analyses, visualizations, or cost-saving recommendations.
I like this. In my work, I am often dealing with complex AWS bills. There’s a whole world of innovation around simplifying IT spend (AWS and beyond).
Simple setup (I hope!)
The blog post claims the setup process is straightforward:
You’re now ready to create an agent that can invoke these MCP servers to provide insights into your AWS spend. You can do this by running the python main.py command.
I think I’m gonna try this walkthrough sometime soon. It looks easy enough, and I have not yet played with Agents enough to fully understand what is going on, so this will be a good way to explore.
Future possibilities
The post lists some additional ideas:
A multi-data source agent that retrieves data from different data sources such as Amazon Bedrock Knowledge Bases, Sqlite, or even your local filesystem.
A developer productivity assistant agent that integrates with Slack and GitHub MCP servers.
A machine learning experiment tracking agent that integrates with the Opik MCP server from Comet ML for managing, visualizing, and tracking machine learning experiments directly within development environments.
It’s going to be a fun year exploring all the potential of MCPs and Amazon Bedrock. Let’s go!
-
Hello fediverse! I'm looking for a remote job as Game Developer or 3D software developer!
I currently work with Unreal Engine 5 and C++ as a Senior Developer. I'm also experienced with Unity and C# as well as custom engines built with C++ and SDL2.
I have an Associate's Degree in Game Development.You can see my portfolio at https://mateuslacerda.dev
🔁
#gamedev #unreal #unreal5 #unity #unity3d #RemoteWork #FediHire #GetFediHired
-
I'm excited to announce that my upcoming book, The DevSecOps Playbook: Delivering Continuous Security, is now available for pre-order on Amazon!
Whether you're a security professional, a developer, or a business leader, this book will give you the tools you need to adopt DevSecOps and deliver secure software at speed.
Pre-order your copy today and be among the first to get your hands on this essential resource!
https://a.co/d/c6UA1m4 -
I'm excited to announce that my upcoming book, The DevSecOps Playbook: Delivering Continuous Security, is now available for pre-order on Amazon!
Whether you're a security professional, a developer, or a business leader, this book will give you the tools you need to adopt DevSecOps and deliver secure software at speed.
Pre-order your copy today and be among the first to get your hands on this essential resource!
https://a.co/d/c6UA1m4 -
I'm excited to announce that my upcoming book, The DevSecOps Playbook: Delivering Continuous Security, is now available for pre-order on Amazon!
Whether you're a security professional, a developer, or a business leader, this book will give you the tools you need to adopt DevSecOps and deliver secure software at speed.
Pre-order your copy today and be among the first to get your hands on this essential resource!
https://a.co/d/c6UA1m4 -
I'm excited to announce that my upcoming book, The DevSecOps Playbook: Delivering Continuous Security, is now available for pre-order on Amazon!
Whether you're a security professional, a developer, or a business leader, this book will give you the tools you need to adopt DevSecOps and deliver secure software at speed.
Pre-order your copy today and be among the first to get your hands on this essential resource!
https://a.co/d/c6UA1m4 -
I'm excited to announce that my upcoming book, The DevSecOps Playbook: Delivering Continuous Security, is now available for pre-order on Amazon!
Whether you're a security professional, a developer, or a business leader, this book will give you the tools you need to adopt DevSecOps and deliver secure software at speed.
Pre-order your copy today and be among the first to get your hands on this essential resource!
https://a.co/d/c6UA1m4 -
Hi. I'm a scientist and programmer based in Basel, Switzerland. I'm a long-time advocate of #OpenSource and #OpenScience and am the primary developer of the #RDKit.
-
Hello Fosstodon,
Greetings from #Vienna, #Austria.
I'm a #DataScientist working on #SpatialDataScience at the #AIT. I serve on the #QGIS and #MobilityDB PSCs and am the lead developer of @movingpandas, a #Python library for #MovementDataAnalysis.
-
On my blog, I described some tips and tricks to create videos and/or podcasts to share your work as a developer, and the tools I'm using.
https://webtechie.be/post/2023-03-17-podcast-editing/
#podcast #editing #blackmagicdesign #davinciresolve #speededitor #zoom #livetrak #rodemics #atem #atemmini
-
On my blog, I described some tips and tricks to create videos and/or podcasts to share your work as a developer, and the tools I'm using.
https://webtechie.be/post/2023-03-17-podcast-editing/
#podcast #editing #blackmagicdesign #davinciresolve #speededitor #zoom #livetrak #rodemics #atem #atemmini
-
On my blog, I described some tips and tricks to create videos and/or podcasts to share your work as a developer, and the tools I'm using.
https://webtechie.be/post/2023-03-17-podcast-editing/
#podcast #editing #blackmagicdesign #davinciresolve #speededitor #zoom #livetrak #rodemics #atem #atemmini
-
On my blog, I described some tips and tricks to create videos and/or podcasts to share your work as a developer, and the tools I'm using.
https://webtechie.be/post/2023-03-17-podcast-editing/
#podcast #editing #blackmagicdesign #davinciresolve #speededitor #zoom #livetrak #rodemics #atem #atemmini
-
On my blog, I described some tips and tricks to create videos and/or podcasts to share your work as a developer, and the tools I'm using.
https://webtechie.be/post/2023-03-17-podcast-editing/
#podcast #editing #blackmagicdesign #davinciresolve #speededitor #zoom #livetrak #rodemics #atem #atemmini
-
Why is the Universal Credit website so bad?
I am professionally embarrassed for whoever created the Universal Credit Website (UCW). In this post, I will explore why the website is so bad and what should be done to fix it.
I’m writing this in the hope that someone within the government with the power to do something reads this and implements at least some of the changes that the site is so desperately in need of. (The same reason I analysed the Boots website). There is a summary of changes needed at the end of the article.
Legal disclaimer: I’ve used screenshots of the website. This is legal because (1) fair use and (2) OGL.
A brief intro to Universal Credit
Universal Credit is the UK’s highly criticised unified benefits system for those out of work or currently unable to work. In theory, it was also an income support for those just starting out in self-employment. It was the brainchild of the political right (the Tories). It has an unbelievable number of shortcomings. Many hope that Labour will refine or replace it but I’m not holding my breath on that one.
Claimants of Universal Credit (UC) must make all contact through the Universal Credit Website. Are you old and have never used a computer? Too bad.
You’d think that such a key instrument of the Department of Work and Pensions (DWP) would be fit for purpose and well designed. You’d be wrong to think that.
The DWP are still migrating everyone who claims any sort of assistance to UC. This, I think, is a terrible idea. Not only because UC is a mess but also because the website barely works.
Dangers of the Universal Credit Website journal’s lack of app
The DWP has not (as far as I know) made an app for UC users. So guess what the scammers made. Go on, guess, I can wait.
Yep:
People are being warned about a scam involving a fake Universal Credit app and text messages.
The app is called ‘Universal Credit UK’.
The Department for Work and Pensions is investigating, and is encouraging people not to use the app or respond to any suspicious text messages.
People should use only the DWP Universal Credit website, and if you are unsure how to claim, the Citizens Advice Help To Claim service can offer support on 0800 144 8 444.
Anyone who has given information to the scam should report it to Action Fraud on 0300 123 2040.
Warning over fake Universal Credit app and text messages, CAB Hull and East Riding
I’m going to come back to this topic towards the end where I get technical about how to fix the UCW.
Shortcomings of the Universal Credit Website’s User Interface
There is so much wrong with the UI of the UCW that it is hard to know where to start. It is clear that the site has been created for the benefit of the UC’s management and agents without any consideration for the people it is supposed to serve. This is a common failure by businesses that are all set to fail – they create things for their needs and not the customers’ needs. You’ll see some clear examples of this soon enough.
It was reported that about one-third (32%) of benefit claimants being migrated to Universal Credit failed to make a valid claim.
Statistics released this week by the DWP show that 32% of all claimants sent a universal credit (UC) migration notice up to the end of February 2024 failed to make a successful claim and had their legacy benefits terminated.
In total, a shocking 284,660 individuals did not make a valid claim and had their benefits stopped.
I strongly believe that a large part of the problem is the shockingly bad Universal Credit Website (along with the fact that UC is badly implemented as a whole).
The Universal Credit Website is a terrible CRM
This website that all Universal Credit claimants must use to communicate with the DWP is essentially a CRM (Customer Relationship Manager). CRM software is at the heart of most successful businesses. The UC one is possibly the worst CRM I have ever witnessed.
You could have slapped up an instance of WordPress running a free CRM plugin and gotten something better.
I’m going to show you many of the ways in which the UCW Journal fails at being a simple CRM thing. In short, the design, implementation, and customer interface is a giant steaming turd. I can find, at a push, one nice thing to say about it.
Misleading landing pages
If your session times out and you sign back in, this is what you see.
It looks for all the world like you have to recreate your account. It is only when you more closely examine the page that you find the link to sign in to the UCW. Like, wait a minute Scoobie, didn’t we just sign in to that?
This is either an example of incompetent design or deliberate arse-hole design. Either way, it can only serve to confuse people leading, I have no doubt, to cancelled accounts or sanctions. There is no excuse for this complete failure.
Unclear priority elements
This is what you might see once logged in for real. (I’ve redacted any specific or personal information).
Can you tell just by looking at this what the most important section of the site is? The part you must pay special attention to in order to keep your claim live?
If you said, “Journal” then you are already ahead of the curve. That link top right in a grey box is the thing that matters most. Never mind that grey is UI shorthand for unimportant or disabled.
Not to worry, there are eight boxes lower down. One of which also takes you there. Maybe it is just me but my automatic ad-blindness had me ignoring all of that advert-looking crap until I started writing this article. The UCW “Journal” is a sort of half-arsed CRM (customer relationship manager). As a CRM the Universal Credit Journal fails so hard that I’ve given it its own subheading. A lot of this post will talk about how hard the journal system fails.
The Universal Credit Journal language is all wrong
There is a way to use language such that a task that is needed and a task that has been completed are easy to tell apart. Universal Credit’s designers clearly wanted to have nothing to do with these good design principles.
Someone needs to go back to school and learn that English has tenses (past, present, and future)
Take a look at this and tell me if the two blue links are tasks pending or tasks completed.
If you said tasks completed, you would be right. If you said tasks pending I completely understand. That’s because in English “Report a change” is an order or a thing to do while “Reported a change” is something that happened in the past.
In technical terms, the tenses of the entries are incorrect. I’m a native English speaker and long-time technical user who expected bad UI and even I was unsure. Now, you could blame this on my dyslexia and you may be right to do so. However, if I (a talented geek and native speaker) struggled with the incorrect tenses used here how much more would non-geeks and English learners struggle?
How hard would it be to change “Tell” to “You told” and “Report” to “You reported”? Or, if feeling lazy Prepend “Completed:” to the linked entries? It is only now that I noticed the first one ends with “completed” (the second one does not). If I didn’t see it, who else didn’t?
Send is not the right word here
When I ask for comments on my blog I do not say “send me your comments”, I say “leave me your comments”. That’s because “send” implies transmission not interaction. So, why-oh-why does the reply link say “send reply”? I’m not emailing you, I’m leaving a comment.
Needless priority given to dates
Let’s look at that Journal thing again and tell how important those dates and times are:
The date and author of the entry are what is known as metadata. That is, data about the data. The only key element here is the entry itself. Yet the entries get about half the space as the rest is eaten up by metadata which is treated as equally important.
It looks worse on mobile.
Vital calls to action are unlinked
Let me quickly introduce you to a business term – CTA or Call To Action. A CTA is the thing that you want the person to do in response to what they have read. My CTA is usually, please leave me comments because I love comments.
In this example, the CTA is to carry out a “to-do list” action. Failure to do so means loss of money.
The link, however, is for leaving a reply. Without scrolling back up to see the rest of the UI, can you tell me how to do a “to-do”?
Those of us used to dealing with shite websites could probably find our way to the top and find the other greyed-out link (grey means unimportant remember). Click that and then scroll through any pending items and find the one that means you get paid. I guess the design principle here is: If you want this money, you had better work for it.
On social media, when they want you to fill out your profile, they will show you a CTA with a link to the place where you do the thing. This is because they know that you link vital actions rather than forcing users to go searching for them.
Universal Credit leaves its users searching. No wonder it was reported last year that 900,000 Univeral Credit cases were closed by the DWP
The reading order is potentially confusing
Take a look at this journal entry and see how quickly you can work out if the user needs to go to an appointment or not.
This is where the user is expected to regularly check for important updates.
I’m saying that this UC Journal has a wildly inappropriate reading order. The first thing you see as you scroll down is an appointment has been cancelled. Oh, you might think, did I have an appointment? There was, you learn, an appointment made the day before.
There is, as far as I have been able to learn, no way to connect one journal entry with another.
Universal Credit is not Twitter, FFS!
For no reason that I can ascertain, replies have an arbitrary limit.
If I have several pages of information to share, should I end each section with “1 of 6”, “2/6”, “3/6”, etc.? All that would do is make the textual content hard to follow because the DWP UC “Journal” is not threaded nor is it object-grouped. It’s just a wall of text in reverse chronological order.
The Universal Credit website is buggy as hell
Then there is this shit.
When you click in to “send reply” the whole page flips out. Would you like to see that in a small hand-held viewport?
I hope you like scrolling.
This is not even a new problem. People were complaining about the UI back in 2017
Application online is not user freindly and is quite a messy website. Gov id verification are complicated and have system failures and required me to phone the Gov id verify contractor for technical support. Universal credit website need to be simplified and made user freindly. The goverment id verify contractors will boil yourr blood by asking you to fill in your personell details at least three times, its mad.
Written evidence from Miss Amina Khatun (UCR0073), committees.parliament.uk, October 2017
Yes, that quote is part of the official parliamentary record. Legally speaking, the DWP “knows” there is a problem. I mean, come on, surely they have gotten the message by now, right?
You cannot attach evidentiary documentation
Have a report from a doctor that may be relevant to your UC case worker? Shall I tell you how you can show it to them? Go on, guess.
Did you guess, attach it to a journal entry? Oh, you sweet summer child, no, the journal cannot take attachments. If you want them to see the document, you had better print it off and get a face-to-face in-person interview where they will not make any record of the document at all.
As I have already said, the DWP UCW is an incredibly poor CRM.
Not that I didn’t try (and found more bugs)
I tried to add medical information to the Universal Credit website. I, quite wrongly, guessed that “change of health info” was the right path. It was not. The account now has a pending “to-do” (complete the change of health thing even though there is no change to report).
Bug: It is impossible to cancel an incorrectly started task.
The Universal Website was created for the DWP’s requirements, not your needs
The purpose of the site is to make users jump through the hoops that the DWP (Department of Work and Pensions in case you forgot who those clowns are) demands. As I hope I have shown, they make no effort at all to assist you in this. If you cannot use their CRM, too bad, I guess.
I can think of only two reasons to implement the UCW like this:
- Gross incomitance
- Actual malice
With the DWP those two are hard to tell apart.
The Universal Credit Website is unfit to be the only point of contact; especially for older people
There is so much more I could complain about from an end-user perspective but I hope this brief overview of the UCW’s failings gets my point across.
I’m a technology guy. My profession is making things like this. I struggled to use the system. How the heck would my dad cope? He can barely use his (non-smart) mobile phone and needs help to read his text messages.
In May 2021, Helen Undy, Chief Executive of Money and Mental Health said, “People who need help with Universal Credit are being #SetUpToFail”. Here’s the link if you don’t believe me.
In the last five years, it looks like very little has changed.
I therefore put it to you that the Universal Credit Website is unfit to be the only point of contact; especially for older people and those with limited computer literacy.
The Universal Credit Website HTML and (lack of) web standards
This is the part of the post where I start to get a bit technical as I answer the question I asked at the start – Why is the Universal Credit website so bad?
I’ve already covered the weak and broken UI design approach. In this section, we are going to talk about web standards.
The journal looks the way it does because, for some unknown reason, someone decided to use HTML tables for layout. It is a web standard that tables should be used only for tabular data.
This is semantic, not tabluar data
Whatever junior dev wrote this may have used tables because the data came from a database table and they did not know any better. However, this is not tabular data. Let me give you all the reasons why this is not tabular.
- The journal entry is content and the rest is metadata for context.
- You did not intend for us to sort by date or author
- There is nothing to take a sum, average, or other calculation from
- Some of these have subforms (send reply) that break tabulation
- It would look nicer if the metadata were stacked on smaller screen sizes
- The table imparts no additional data to screenreaders
- CSS grid is faster, harder to break, and easier to make responsive
Tables for layout are dumb
This is what the experts say about using tables for layout:
It was common in the early days of the web to use tables as a layout device. Before the advent of modern standards-based browsers, this was the easiest way to make sure that page elements were arranged properly on the screen.
This design pattern is now considered very bad. It is bad for the user experience, bad for SEO, and bad for developers who have to maintain pages.
You should not use table-based layout under any circumstances.
HTML Tables: Find Out When To Use Them (And When To Avoid), Adam Wood, html.com
Here’s another that explains why HTML table layout is bad for end users:
1) Tables shouldn’t be used for page layouts because they are:
- Slow to render as the browser needs to download most – if not all – of the table to render it properly
- They require more HTML than non-table layouts which means slower loading and rendering, as well as an increased bandwidth usage
- They can be a nightmare to maintain as they can quickly get complex
- They can break text copying
- They negatively affect screen readers and may make your content inaccessible to some users
- They are not as flexible as using proper semantic markup
- They were never intended to be used for page layouts
- Making tables into a responsive layout is very difficult to control
2) Use a table for tabular data. That’s what tables are for.
Let’s break down a few of these:
Tables negatively affect screen readers and may make your content inaccessible to some users
A good chunk of the users of the Universal Credit website will have long-term disabilities. Those who rely on screen readers are likely to face a nasty mess as they try to use the website.
This is likely in breach of the UK’s Disability Discrimination Act 1995 and the Equality Act 2010. I am not a lawyer but activist groups might want to look into this.
Tables are not as flexible as using proper semantic markup
This is why the site looks god-awful on mobile. Using any one of the many flexible standards could make the journal resize in a useful and pleasing way on smaller screens. As I have said, the date and author are metadata and have no business taking the prominence they have been given. As the journal entry is the salient thing, the journal is NOT TABULAR DATA.
The nineteen-nineties called – they want their web design back.
Tables are a nightmare to maintain as they can quickly get complex
This is why the reply thing is broken. It has the wrong number of table divisions which breaks readability and looks bloody stupid on a government website.
Tables are slow and use excessive data
This is a website for people who have limited spending money. Why then, choose a markup that burns data faster than needed, loads slowly, and is frustrating to use with disability support software?
Tables are for data only – not journal entries with sub-forms
I put it to you and the DWP that using tables in the UCW at all was a failure in design, planning, and implementation. Replace the tables with nice semantic div tags, some CSS flex-box, auto margins, and responsive design. The metadata should stack under or over the entry on smaller screens.
This is beginner-level flexible and accessible design stuff. Not to mention the DWP is, in my opinion, failing to uphold the laws about accessibility made by the institution (the government) that they work as part of.
I’m not going to teach the DWP how to do this properly. They should know that if you pay peanuts you get monkeys.
The weird thing is the DWP do it right elsewhere
On the UCW home page (even though it defaults to to-do) the supplementary navigation items are responsive and stack appropriately on smaller screens.
If you can do it on the home page, why not on the Journal too?
The Universal Credit CRM is missing a few things
I’ve said quite clearly that the UCW is a terrible CRM example but it can be fixed. We just need to add a few features.
No tables, darling
I covered this enough, I think.
Threading or object grouping
The journal is currently a list of unconnected text things. You can do better than this.
As it stands UC journal users must scroll back down the page and take a guess from context alone what the entry refers to. How much easier would this be if things were grouped with or threaded under related content?
When you reply to something in the UC Journal, your reply is added to the top without any indication of what you replied to. The same is true of the replies from the UC person responding to you. This renders the entire journal almost impossible to use to keep track of a conversation thread.
Modern email clients solved the threaded discussion issue a long time ago. Replies are grouped with the email they are replying to. Thus the conversation thread can be followed. We do this in forums, and in comments, and on social media. Topic threading is not even remotely new.
That’s not even the only way to do things. There is also object grouping. An object can be a task, a record, a question, a ticket, or whatever. All content generated is assigned to an object. For example, if I open a ticket with my ISP about an issue I am having, we can both see what the issue topic is and the history of the conversation along with any actions taken.
On a blog, the post is the object and the comments, replies, and mentions are listed under it. Thus we know what the response was responding to. Forums do that too.
Look how easy this conversation is to follow (no tables used):
I cannot grep this logfile (where’s the flippin’ search option?)
The Universal Credit Journal system reads a lot like a poorly implemented log file. That’s how we store debug information when doing things like testing (which should have caught the deformed page on reply bug before it went live).
Grep is a command line utility for searching text-based log files. I’m using it as a nerdy way to signal to my fellow developers that the UC Journal needs a bloody search box.
Attachments as standard
A good CRM has attachments as standard. Even log entries are attachments. How this works is every entry is a small text field. It only needs to be large enough to summarise what the entry is about. If there is a lot to say, this is stored as a text attachment with metadata indicating that it is a native note (or whatever). That metadata should have some sort of document type indicator so the CRM knows if it is an image, a PDF, or note, or whatever.
Email solved this issue years and years ago with Multipurpose Internet Mail Extensions or MIME types.
HTML solved this with content-type headers like this:
Content-Type: text/html; charset=UTF-8Content-Type: multipart/form-data; boundary=something
Other departments (especially those giving out grants) do this already. Maybe ask another department to lend you their developer for an afternoon and copy their homework.
Even if you only allow uploads upon request, using an attachment feature would allow agents to add helpful and informative media to a journal. Attachments would also allow long entries to take up as much space as a short one until clicked.
Make questions their own content type
User questions should not be an unspecialised text entry. They should be of type “question” with metadata showing who has handled the question or the agent responsible for the question. The reply should be of type linked-entry so the user can find the question and the answer together in their journal.
This would speed up handling questions as stock answer libraries can be grown so standard answers to common questions can be given in just a few clicks.
You could separate technical support questions from UC advisor-type questions. It is likely you could separate out more question types with enough use case data.
You might even want to make the question a knowledge base search that the user must check to see if said article solves their question before they ask it.
This is pretty much a standard thing in even basic CRM systems. UC needs this too.
Auto-link tasks
It should be impossible for the system to add a vital task (do this or lose money) without making the task a link to the place where said tusk must be undertaken.
Autolink your CTA’s please DWP. You do it for appointments (even if you do wrap a link around a pre-tag for no good reason. That’s not what pre-tags are for but that’s another story.)
Stop misusing HTML tags
Actually, no. This is important. Some tags have very specific meanings.
The
pre-tagsuggests that the text is preformatted. Usually, this is for code and other times when whitespace (space, tab, etc) must be preserved in the rendering. Screenreaders will struggle to deal with your weird HTML tag abuse. Which may (NAL) be in breach of disability laws.The
pre-tagincreases what is already a broken and inconsistent way that HTML handles white space characters (tab, new line, space, etc.). The pre-tag semantically insists that the white space is all significant even though a “bug” in the pre-tag implementation means empty lines at the start and end are collapsed or ignored. Either way, the DWP should not have client-critical architecture that depends on a mistake that could be fixed at some future point.Here is a long article explaining just how crazy HTML whitespace gets. DWP’s dev’s please read it and understand it. If that is too hard, here is an expert reading the article and explaining it. The video is almost an hour long.
https://www.youtube.com/watch?v=qF7iXBk1s5o
There’s no need for abusing tags in this way. It is asking for bugs and possible accessibility problems. After all, every space (meaningful or not) has just been declared meaningful in a way that can only be fully understood by also reading the site’s CSS. Use a div-tag and a monospaced font if you must but leave
pre-tagfor white space preserving data.Why I think the DWP uses pre
After some poking around, I think I have worked out why the dev used the
pre-tag. It’s a terrible reason and shows they don’t actually know what they are doing.Block-level elements (which they want for styling reasons) break the table by force-resize (a lesser-known Jedi power) by making the link box element expand to take up as much space as it wants. Rather than CSS styling it to wrap, they depend on the
text-wrap-mode: wrapas thepre-tag‘s default behaviour rather than setting that value in the CSS for the block. They would not have had this problem had they not used tables for layout.If this is the case, the developer who was hired to make this website lacked anything approaching modern web design understanding and possesses barely functional development skills. I was able to identify all of these faults without even seeing the code. If I get my hands on the code, I expect unreadable spaghetti programming.
Show/Hide metadata
When reading log files (which is what the journal resembles) it is often helpful to use a tool to hide verbose information. In this case, date, time, and author should be elements the user can minify or hide. This would aid reading comprehension.
Show/Hide completed
Cancelled appointments, stuff the user or agent marks as complete, and old “you did the thing” journal entries should be something clients (users) can opt to hide. That makes getting to the critical and actionable entries so much easier.
Inbox Zero is a thing. Embrace it.
Critical actions should not be hidden in a log file
Critical activities that have yet to be completed should be more prominent. There are a number of good ways to do this.
Style to highlight: Add a “critical” class to the containing element of the journal entry that has the critical instruction. Use CSS to style it with a colour indicating urgency. Traditionally, this is red.
Dynamic banner notices: Use some JavaScript to parse the journal for classes marked critical and add a banner to the top of the page to strongly notify the user that a critical action is needed. It is only critical if not doing it costs money or risks sanctions. Everything else is at best urgent.
Critical messages set to app global: Put the critical information on all pages until undertaken.
Land the user on the page: Make the first page the user sees when logging in, the page where the critical action must be done.
Marked-up appointments to work with calendar apps
I’m not asking that you allow people to add Google Calander or other task management systems as guest apps but could you at least mark up appointments with h-event or hCalendar microformats?
Given the aim of UC is to support people, making things like appointments and to-do lists something they can export to their productivity software would make the UCW much more helpful.
If that’s too much hard work, an “add to Google Calendar” button would be something. If you are doing that anyway, why not go the whole way and make export appointment a fully working feature?
Show the next appointment prominently
Talking of appointments, like the critical actions, the client’s next appointment should be displayed prominently or at least have the option to do so. Top of the page or a toaster notification when they log in.
Push notifications?
Users should have the option to enable push notifications. These are little pop-ups that appear to tell you there’s a new message to read. Most phone apps do this and some news websites do too.
While I strongly suggest push notifications MUST be opt-in, they could prove highly useful for users of the UCW. You could further expand this to remind about appointments and urgent critical tasks that are running out of time.
You want people to use your atrocious website regularly, right? So why not prompt them to come back when something new needs their attention?
Why is this not a basic app?
The DWP need to have there (soon to be improved I hope) UCW as an app. At the very least as a dedicated one-site browser which can be knocked up in a few hours.
A dedicated UC app could provide an additional layer of protection (not only from scammers) by making the app a two-factor auth code generator. This is slightly more secure than texting a code as a text can be intercepted and is not encrypted. This, of course, depends on the devs knowing what they are doing – something I doubt from the
tableandpre tagabuse on display.An app would ensure users get push notifications on their smartphones.
An official app would make scams harder to pull off.
The problem at the moment is the incorrect use of whitespace affecting markup. Apps for Apple and Android are quite likely to handle whitespace differently. You’re already borking things with pre-tags and tables. Thankfully, a few hours of reading up on CSS and adaptive design should fix those errors.
Don’t gamify just yet
I was going to suggest you have a points-based system to indicate completeness and progress. We call this gamification and it can help encourage users to be a little more active.
However, you cannot even roll out a simple CRM so I do not trust you to gamify it.
A wild guess (contains mild politics)
I have no evidence (thus this is a wild guess) but I would not be surprised if this site was not commissioned under a “cash for mates” program during the Tory administration. I would not be shocked to learn that someone got a lot of tax-payer money in their pocket and then hired an intern to knock out the system In an afternoon.
This would explain the way the UCW does not follow standard government website standards as well as why exactly I found so many instances of mistakes I would expect from a complete beginner.
Summary of fixes needed on the Universal Credit website
In this section, I use industry-standard language and so: Bug indicates something that is wrong, broken, or in error and so are critical items. Enhancement indicates something that can be enhanced and so are urgent items. Feature Request is a thing the site is not doing but probably should and should be addressed at the next development meeting (assuming you have those). I’ve also added action points for the managers to do at start of business of the next working day.
- Bug: Deformed page on reply
- Bug: The Journal HTML may breach the law – reevaluate concerning accessibility standards
- Bug: The journal is not responsive but should be (for smaller screen sizes)
- Bug: It is impossible to cancel an incorrectly started task.
- Bug: Using
pre-tagsfor word wrap is an error use CSS - Bug: Switch tables to responsive divs – should fix most bugs
- Bug: Some key tasks do not auto-link. Consistently auto-link required tasks
- [new] Bug: Markdown weirdness
- Enhancement: Use semantically meaningful tags
- Enhancement: use syntactically appropriate language
- Enhancement: Make critical messages more prominent
- Enhancement: Add toggle hidden for metadata
- Enhancement: Add toggle hidden for expired, cancelled, or old entries
- Enhancement: Add microformats to make data more useful
- Feature Request: Search feature
- Feature Request: Threading, ticketing, or task-object grouping
- Feature Request: An attachment system
- Feature Request: Add a question entry type with a linked answer
- Feature Request: Enable clients to add appointments to personal calendar apps
- Feature Request: Optional push notifications
- Feature Request: Make a dedicated app
- Action point: Hire a domain-expert systems analyst who will confirm everything on this list.
- Action point: Read the analyst’s report and action it ASAP.
Alternatively, dear DWP managers, put together a budget to hire me and a small team I will select – we will fix it for you; budget for ongoing development as the UCW could be so much more than it is. You got this expert analysis from me for free which is already a massive saving. Make the most of it.
Over to you, dear readers
I think I have covered every fault with, and improvement needed for, the DWP’s Universal Credit Website. Is there anything I have missed? Are there more bugs to report? Would you like an enhancement I’ve not mentioned or hate one I have suggested?
I want to know your thoughts. Don’t send me a comment, leave me one. Or a reply via federation, or a WebMention via whatever content publisher you use. I really like comments so please leave me some.
Your replies will not be shoved inside a table and no
pre-tagswill be harmed. -
Hello, everyone
I'm a Senior Full Stack Developer with 8+ years of experience delivering scalable, high-performance web applications across startups and global companies. I specialize in JavaScript, TypeScript, Python, React, Next.js, Angular, Vue, Node.js, Django, and FastAPI.
Please check my past work here:
https://alilee.vercel.appLet’s build something amazing together.
#forhire #remote #wfh #fullstack #frontend #seeking #job #contract #opportunity #backend #webdev #freelance #javascript