SearchSearch for a chapter, module, exercise, challenge, page, or profile
What's new on
Latest release
v0.35.0
A workspace that survives browser zoom
A quick holiday note
❯I am technically on holiday right now, and work will pick up properly when I am back. Apparently I still cannot leave the laptop closed when one small UI thing annoys me. This time it was that strange corner of CSS where somebody presses Cmd+plus a few times and the browser decides their laptop is now a phone.
The workspace behaves itself now
❯@velloxide sent a wonderfully patient report about the subject panel taking too much space from the editor. They were right. You can now collapse it with a visible button, reopen it just as quickly, and Grademe folds it away automatically when the window gets tight. The subject and test panel are still draggable too, in case nobody had noticed.
❯The full phone layout is now reserved for genuinely narrow windows, so square-ish monitors and browser zoom should no longer turn a desktop into a phone by accident. Font size and line spacing are now adjustable from Settings or directly inside the editor. You can also hold Cmd or Ctrl and scroll to resize the text.
The homepage finally shows Grademe
❯The landing page now opens with a real Grademe workspace, real exercises and real test results instead of several paragraphs trying to explain what the product does. It is an early draft and it will grow over time, but showing the thing felt more useful than writing another sentence about the thing.
The honest stopwatch
❯Nobody reported this one. Seeing 312 ms after waiting noticeably longer made Grademe look like it was lying, even though that number only covered compiling and running the tests. The timing at the top right now includes the trip there and back too. Open it for the full breakdown, and tell me if it feels too busy.
Maintenance
❯Grademe's web framework and server runtime are now on their latest versions, along with a handful of smaller maintenance updates. If anything feels strange after the move, Beta Feedback is there for exactly that.
❯Until now, Grademe borrowed your photo from Google or GitHub. That spared a solo developer from moderating whatever somebody might call a reasonable avatar at 2 a.m. It is also why Grademe has never really allowed user-published content.
The endpoint that was apparently there all along
❯A few days ago, we discovered the OpenAI Moderation endpoint. Apparently the documentation had been patiently waiting for us to notice. Its free omni-moderation-latest model can check images for unsafe content.
❯Your browser crops and compresses the photo to a 512 × 512 WebP. The backend validates and reviews it, then stores it only if approved. Faking a browser response cannot bypass the check.
❯You get five updates per rolling 24 hours: enough room to fight with the crop without eating our moderation allowance. If you need a sixth before tomorrow, I have questions.
What happens to the photo
❯OpenAI receives the cropped photo only to check whether it is safe to publish. This is covered in the Privacy Policy and Terms. Your custom photo will no longer be replaced at sign-in, and you can restore the Google or GitHub original anytime.
❯It is a small release, but Grademe's first real piece of user-published content. The moderation path now opens the door to more. So yes: small release, long changelog. This one deserved it. Expect some lorem ipsum. Please keep it reasonably dressed.
❯Grading is more stable when things get busy. If a submission needs to wait, you can now see that straight away.
❯When a grading request fails unexpectedly, the feedback is clearer and we can spot and fix the issue sooner.
❯Thanks to @ntiako and @agouchag, C exercise briefs now show the headers they need. Returning NULL no longer feels like a forbidden move.
❯chat_relay now accepts the signal handling it needs.
❯Terminal sessions now stay responsive more consistently while your files are saved and synced.
❯Following a grader outage during heavy traffic, we changed how submissions are handled so grading stays fast and reliable when activity spikes.
❯We also fixed the random delays that could make a quick exercise take several seconds or time out.
Grademe is public.
The doors are open
❯Grademe is public. No more waitlist. Exercises, challenges, the Learn path and public profiles can now be read without an account. Send someone an exercise you liked and it opens right there, no sign-in wall.
❯You still need an account to run code or save progress. The grader, Daily Challenge, challenges, streaks and leaderboard all write to your account.
❯We are still in beta. Opening the doors does not change that.
❯Invite codes are retired. They did their job during the closed beta. The dialog, Compete seat counter and weekly invite panel are gone. Who invited whom stays as a record of who carried the beta.
Public, on your terms
❯Your profile is a public page, so Settings now has a switch to keep it out of search engines. It is on by default and off in one click. It only affects search engines, so a link you send someone still works exactly the same.
❯Share an exercise or a profile and it gets a preview card made for that page.
❯We put limits on how often a few things can be called, profile search and the grader among them. Normal use should never come close. If yours does, Beta Feedback is the fastest way to tell us and we will raise it.
A new way in
❯New accounts go through a short setup instead of the old waitlist form: pick your handle, tell us whether you are in a coding school, aiming for one, or learning on your own.
❯The last step is the part we cared most about. Before you start, Grademe says plainly what is public about you (your handle, your avatar, your bio, what you have passed) and what we will never publish or ask for. No small print, no scrolling to find it.
A proper start for challenges
❯Back in June, @minuss wrote that clicking a challenge started the countdown "brutally", with nothing warning them the click was the commitment. There was a confirmation dialog, but only on some routes and not others, which was arguably worse than none. Those inconsistent dialogs are gone. A challenge has its own page: what it is, how long you get, how many people have cleared it, your own past runs, and one button that starts the clock.
❯That page is public too, so a challenge link you share shows the challenge instead of asking who you are.
❯The countdown used to hang off a URL change, which made it stutter and occasionally misfire. It lives on the new page now. The page empties, the number counts down, the run begins.
Make it yours
❯Settings is a real page instead of a dialog, with everything in one place.
❯There is a Motion setting. It follows your machine by default, and you can force it to Full or Reduced if you would rather decide yourself.
❯You can also take over the cursor. Turn off the hand that appears over clickable things if it never sat right with you, or replace the arrow entirely with one of six drawings. That last one was pure fun to build and it is worth a look.
❯And after far too long, we settled on a typeface for the site.
Also fixed
❯@abalayda made a file just to see how it worked, then found no way to remove it short of rm in the terminal, which they said felt hacky. It was. You can delete and rename files from the editor now.
❯The putchar exercise deliberately asked for a return value different from the real putchar. That was in the brief, not a Grademe mistake. Still, quite a few of you wrote the standard version. @selass caught it first, @rsuagua hit the same wall on test 7 three weeks later, and @guib flagged it again today. Rather than turn that mismatch into a trap, we removed the test. Both versions pass now.
❯@void asked for a way to reach the next exercise without going back to the dashboard first. Every exercise now lists the others in its module, right under the brief.
❯Opening somebody else's solution had a pause before their code appeared. It is instant now, with a loader for the moment that still needs one.
❯The Compete calendar sat at the very bottom of the page behind a stretch of empty space. It moved up, right after today's leaderboard.
❯Plus a run of smaller fixes and polish across the app.
Upvotes on solutions, and a proper Vim mode
Upvotes are here
❯You can now upvote the peer solutions you think are worth reading. Plenty of you asked for this, and @gustavo put the reason best: sorting by time tells you who was fastest, not who wrote something you should learn from. The solutions panel itself only exists because @spike suggested it back in June, so this felt like the honest next step.
❯One thing had to be sorted out first. Grademe has always shown the latest solution a person submitted for an exercise, which means a solution sitting on 10 upvotes would lose all of them the moment its author redid the exercise. That would have been a pretty rough deal. So the rule changed: the solution shown for you is either your most upvoted attempt or your most recent one. Votes stay where you earned them.
❯A Most upvoted sort shows up once somebody has actually voted on that exercise. Before the first vote it would just be an arbitrary order wearing a ranking costume. Upvotes work on Daily Challenge solutions too, past days included.
Vim, closer to the real thing
❯@karoo was disappointed by how incomplete Vim mode was, and they were right. So we brought in a friend who lives in Vim to rebuild the thing properly. Command-line mode works now: :w saves your draft, :e moves between the files of an exercise, and :%s/old/new/g runs a substitute across the buffer. Search with / and ? works, and there is a mode indicator at the bottom of the editor showing NORMAL, INSERT or VISUAL.
❯:q, :wq and :x will answer politely that there is nothing to quit. None of the write commands run your tests either, because a submission costs you an attempt and that should stay a decision rather than muscle memory. Thanks also to @xenzi for pushing on motions, and @romka2 who asked for Vim mode in the first place.
New Daily Challenges
❯The Daily Challenge is planned out well ahead now, with no gaps. Writing them, we kept hitting the same split in your feedback: some of you want them harder, others like having a quick warm-up on the way to real practice. The daily is timed, so a hard one mostly turns into a speed run, which is fun for a much smaller crowd.
❯So the new batch goes wide instead. It rotates across ten kinds of problem, including 2D grids, bit manipulation and two-pointer work, none of which had ever shown up in a daily. Most stay on the easier side with a few medium ones mixed in, and they keep pulling their subject from something happening in tech, so you pick up a little context along with the exercise.
Also new
❯We used to send your email and username along with product events. It was genuinely useful: you reported something broken, and we could pull up your own session and see what happened instead of guessing. It would also have earned us one of those consent banners, and the only cookies we have any interest in around here are the edible ones. So the whole thing got rebuilt. No cookies, no profile, no email, no username. PostHog, who do the counting for us, can tell us that somebody opened an exercise and nothing whatsoever about who that somebody was. You will not see a consent banner on Grademe.
❯The catch is that we can no longer look you up when you write in, so feedback reports carry a screenshot now. Drop an image into Beta Feedback and it comes through with your message, which beats describing a layout glitch in words.
❯Nobody enjoys reading terms of service. So the Terms, Privacy Policy and Legal Notice each open with a short version now, in plain language, saying what the document actually does. There is also a Copy as prompt button on each one: it copies the whole text with an instruction already attached, so you can hand it to whatever AI you like and have it explain what you agreed to. We would rather you read them that way than not at all. We have nothing to hide in there.
❯The sign-in screen marks which method you used last time. Handy when you come back after a long break with no memory of how you got in.
❯The challenge list shows which of your friends already passed each challenge, and so do the challenge and exercise confirmation dialogs.
Fixed
❯is_power_of_2 accepted a solution that never checked for powers of two. Good catch from @jam: the value 2 was tested nowhere, and every case expecting a yes happened to be divisible by 4, so n % 4 == 0 walked straight through all eight tests. The suite has twelve cases now. A dozen already-published solutions only passed because of that hole, so they no longer show up when you browse other people's code.
❯snake_fmt no longer allows malloc, free or realloc. @crystalivel noticed the exercise can be finished without a single one of them, so the allowed list was pointing people somewhere they never needed to go. It is write only now.
❯Redoing an exercise and passing it again showed your first attempt in the panel instead of the code you had just submitted. Reported by @46_wolf, and by @sxqz6_ a month earlier with the same description.
❯Two from our power user @void. On the Learn C graph, the module card always opened on the left and covered the very module you had just clicked, so it now picks the side that leaves your selection visible. And when reading somebody else's solution across several files, the file tabs did nothing, which made a multi-file solution unreadable past the first file. Both are fixed.
❯Thanks to @adam4-ux, we fixed a surprisingly effective empty-file strategy for C exercises that ask you to recreate a standard library function. The linker could resolve the missing symbol from the system C library, but the grader now requires your own implementation.
❯NUL bytes now show correctly in execution traces, so invisible output no longer disappears when you inspect a failed test.
Learn is finally here!
We skipped 0.29
❯Okay. This changelog got far too big for a release ending in 9. We have been building it for weeks, and every time we thought we had reached the end of the list, there was another whole piece of Grademe that had changed. So we skipped 0.29. Welcome to 0.30.0, easily the biggest thing we have shipped since the beta opened.
You have been seeing the path all along
❯You may have seen the "Practice path" card on the dashboard, or heard us mention modules, then reasonably wondered what either of those things actually meant. Until now, the answer was mostly hidden in our heads. Since the start, every C exercise has belonged somewhere: pointers build on earlier work, strings have a place, and memory leaks should arrive after you have met allocation. That route is finally visible. Learn C is here.
❯Learn starts with your first program and ends with processes and signals. In between are 7 chapters and 28 modules on code structure, text, memory, your own types, the machine model, and the system. Every chapter is complete from day one, with a clear required route, optional practice, XP, and a reason for every exercise being where it is.
❯Learning C is rarely about one exercise going wrong. It is about spotting the pattern behind it. Learn now shows what you have completed, what is still ahead, and which exercises are worth reinforcing when a pass was a little too close for comfort. The dashboard's new Continue learning action points straight to the next exercise or checkpoint instead of handing you a vague card and wishing you good luck.
There is a map now
❯Learn C has a full interactive graph. Every chapter, module, prerequisite, and checkpoint lives on one map, so you can follow the lines and see what opens next. Drag it around, zoom in, zoom out, hit Fit when you have gone too far into the pointer section. It works on smaller screens too, because a map of C should not require a second monitor.
❯The graph shows your completed modules, current work, ready checkpoints, and blocked paths. Profiles got it too: yours now shows your current module, chapter progress, XP, exercises, and checkpoints. Open someone else's profile and you can explore their Learn C path in read-only mode, without asking them to explain their relationship with malloc.
Checkpoints are here
❯Exercises teach a concept one piece at a time. A checkpoint arrives at the end of a chapter and asks whether the whole chapter still makes sense without the guide rails. There are seven at launch, from C foundations through code structure, text handling, memory safety, types and data structures, the machine model, then processes and signals.
❯Unlock a checkpoint by completing the required work or reaching the chapter XP target. It is timed, a pass validates the chapter across your dashboard, profile, and graph, and a failed attempt has no cooldown. Review the gap, go back to the module, then take another shot. Checkpoints have their own results too, separate from your regular challenge record.
We filled in the missing C
❯Learn needed enough exercises to make every module feel whole. A nice graph with blank spaces in the middle would have been a very expensive way to say "coming soon". This release adds 62 new C exercises, from compiler diagnostics and integer edge cases to recursion, arrays, bounded strings, memory ownership, custom types, sorting, parsing, streams, and processes.
❯The C path now contains 183 exercises: 142 required and 41 optional. Those additions also bring Grademe's permanent exercise catalog to exactly 200 exercises. Daily Challenges sit outside that count, because apparently 200 was not already enough work for everyone.
Five new C challenges
❯The new modules gave us enough material to grow the challenge catalog too. There are five new timed C challenges: Grids & Simulation, Pointers & Memory, C Language Core, Data Structures, and Sort & Search. They turn the skills from the path into longer sessions, whether that means navigating a grid, managing memory, modelling data, walking linked structures, or proving that your sort is actually a sort.
❯Challenge recommendations now look for unfinished work first, then something worth retrying, then a new challenge. Challenge and checkpoint results have been rebuilt into proper reports too: score, passing threshold, levels, time, submissions, each attempt, and a JSON download if you want to keep the whole record.
The rest of Grademe caught up
❯The dashboard now puts your current module, path XP, chapter progress, checkpoints, and next action together. Search knows about Learn C, its graph, every chapter, and every module. On mobile, the navigation has been reshaped around the new path so it stays usable when there is more to explore.
❯We also went through the whole product to make Learn feel like it belongs there. The dashboard, modules, graph, profiles, exercises, and challenges now share the same progress language and visual rhythm. It stops feeling like six unrelated pages having a meeting.
Things we fixed while making all of this
❯A wrong C answer could sometimes turn into a generic grader failure instead of showing the failed test, but only for a few awkward output cases. That is fixed. A wrong answer now stays a useful result you can read and act on.
❯The final systems exercise has a clearer name now: chat_relay. It is still the same non-blocking TCP broadcast server, it just no longer looks like it was named during a caffeine shortage.
❯And yes, we used to write the M in Grademe as an uppercase letter. We consulted the leaders of technology. Their ruling was immediate and unanimous: Grademe has one capital letter, and it is at the beginning. We have accepted the decision.
A bigger beta starts tonight
❯Thank you to everyone who has been here early, sent feedback, tried strange things, and kept using Grademe while we were quietly building a rather large new floor underneath it. Tonight, we are inviting the 250 people still waiting by email and emptying the waitlist completely. Things may get a little louder around here.
❯One small thing before we go: the chapters are ready now. You can probably guess what could start appearing inside them next. We will leave that there for the moment. If you have ideas about how Learn should grow, Beta Feedback is open. Happy coding, and go make the compiler complain about something interesting.
Growing pains and better results
The bill is getting real 💸
❯Grademe is growing much faster than I expected. More than 200 people joined in just nine days, and more than 1,000 have signed up altogether. Amazing news, slightly less amazing for the bill.
❯A big part of this release is a complete rebuild of how Grademe caches and refreshes your progress data. XP, streaks, exercise progress, and challenge results should now stay up to date without a manual refresh. It also removes a lot of repeated work, which lowers the running cost and gives us more room to let people in.
Test results that make sense
❯@spike pointed out how confusing a failed test can be when spaces or line endings are invisible and both outputs look identical. That report turned into Inspect: you can now reveal every hidden character, move through each mismatch, and copy either output or the test command.
❯@spike also caught longest-palindrome accepting ababba, so that case and another false positive now fail properly. Test titles also stay aligned with the order they actually run in, with correctness checks first and memory checks at the end.
From your feedback
❯Vim mode is here. Pick it in Settings → Editing mode and Grademe remembers it. Mouse controls still work, and Ctrl/Cmd+Enter still runs the tests. @romka2 asked for it on Saturday night. It was in the app by Sunday morning.
❯Daily Challenge solution browsing no longer gets stuck on the previous person's code when you switch quickly between entries or revisit a shared link. Past leaderboards now open the right archived solutions too. Thanks @aesir for the exact reproduction.
❯A few smaller things landed too: clearer exercise statuses and actions, catalog totals that only count exercises you can actually open, remembered language filters, lighter dashboard icons, and profile links that keep working after a username change. In challenges, the level you just submitted also stays visible until you choose Next level.
Polish, driven by your feedback
❯Completed challenges no longer bounce back into a ghost In progress session after the final level. The remarkably detailed report from @oeljihad helped us reproduce and fix it.
❯That report also made something obvious: Grademe needed a proper way to thank people who go out of their way to help. That is where profile badges came from. Every early member gets Beta tester, while confirmed reports that seriously help us debug can earn Bug Whisperer. @oeljihad and @velloxide are the first two.
❯We fixed a case where legitimate work could be misread by the daily authenticity check. Thanks @404, @aybenoma, and @razovius for the reports. This system is still in beta, so please send Beta Feedback if it gets your work wrong. Every report helps us understand the edge cases and make it better.
❯Valgrind-backed final tests now run correctly, including snake-fmt. We also tightened the graders for int-to-str-base, feb_days, and arg-count. Good catches from @404, @adam4-ux, @ahodor, @owssama, and @spike.
❯args_rev now shows the right line breaks in its examples, thanks @reilles. Ctrl+S and Cmd+S also save your exercise draft instead of opening the browser's Save Page dialog, reported by @tom.
❯The visualizer stays available on tablets, phones held sideways, and narrow desktop windows. Thanks @sytan and @void. Beta Feedback now closes with a proper confirmation, and flagged daily solutions explain how to request a review.
❯Thanks to @razovius and @aybenoma for reporting false "Authenticity not verified" results on code they wrote themselves. Daily Challenge now keeps the result when the authenticity check cannot reach a reliable decision, so legitimate solutions keep their XP and leaderboard place.
❯The authenticity check is still in beta. If another legitimate solution is marked as "Authenticity not verified," open Beta feedback and tell us what happened.
GitHub cards and cooler profiles
❯I added a tiny thing that's honestly pretty cool: your Grademe profile can now live in your GitHub README as a card. Add it once and it updates itself whenever your profile changes, on GitHub or anywhere else.
❯Profiles can have their own background now too. Pick your favorite and everyone who visits gets to see it, including on your GitHub card.
❯Thanks to @mavautie for reporting this: finishing the last exercise in a challenge no longer starts a new attempt from zero. Your completed score was safe, but the sudden restart made it look like your progress had disappeared.
Introducing: the Visualizer
The Visualizer
❯This is the big one. The Visualizer takes your C, runs it, and lets you walk through it one line at a time while everything updates in front of you. Variables, the call stack, where your pointers actually point, memory getting allocated and freed. You know that gap between "it compiled" and "why is this segfaulting" where you'd normally just spray printf everywhere? Now you get to watch it happen instead.
❯The part we're proudest of. When a test fails on an exercise, that failed test now has a "Visualize this test" button. One click and it opens with the exact inputs the grader used, already replaying, so you step forward to the precise moment it goes wrong. No more staring at "expected X, got Y" trying to guess where your logic took a wrong turn. You literally watch it take the turn.
❯There's a Visualizer tab in the sidebar too, all on its own. Paste any C, give it your arguments and standard input, and step through it. Great for hunting a pointer bug, or just settling an argument about what some code really does. Whatever you write there saves itself, so you can close the tab, go touch grass, and it'll still be there when you come back.
❯Small print: it wants a real screen, so it's desktop only for now. And it's C only. Maybe more languages later, let's first see if this one survives contact with all of you.
Real talk
❯This thing took us forever. Longer than anything else we've built for Grademe, and we threw away and rebuilt the stepping and the memory view more times than we'd like to admit before it finally felt right. We're stupidly happy it's out today.
❯It's brand new and it does a lot, so some corners are probably still cursed. If something looks wrong, breaks, or just confuses you, hit us with Beta Feedback. And if you think it's cool, tell us too, we've been waiting weeks to watch people actually use this. Go break it.
❯Big thanks to @spike, who reported a "reverse_bits" exercise failing with an "unused parameter" error on code that clearly used it. That led us to a worse bug hiding underneath: a correct solution could pass, then a second later get quietly reset and re-graded against the blank starter, so you would see a compile error on code you never wrote. Fixed.
❯Reopen an exercise you already solved and you now keep your own solution (read-only) plus everyone else's solutions, instead of the editor wiping itself back to a blank starter. Starting over is a deliberate "Reset to retry" click.
❯No more split-second flicker on load: the main button and the right panel wait until they know what to show, so you never catch "Run tests" flipping to "Back to compete", or the tests flashing before the solutions.
❯The 7-day leaderboard no longer counts an exercise twice if you solve it, reset, and solve it again.
Faster grading, and room for more of you
Faster grading
❯Grademe is getting busy, and honestly that's the good kind of problem. So the headline this time is speed: I rebuilt a big chunk of how grading works behind the scenes, and exercises and exams now come back a lot faster. Less staring at a spinner, more actually solving.
❯The reason this matters goes past speed. The machines that grade your code are the expensive part of running Grademe, and the site is free, so that bill is also the real reason there's a waitlist at all. Faster grading means each machine can handle more of you at once. The list has gotten long, I'm letting a solid batch in this Monday, and I wanted everything ready before opening the door wider.
A leaderboard you can actually climb
❯The leaderboard now defaults to the last 7 days. When you're new, the all-time board is basically a wall: the people on top have been grinding for weeks, catching them feels impossible, and it stops being motivating. A rolling 7-day board fixes that. A strong week puts you right up there no matter when you joined.
❯The all-time board isn't going anywhere. Flip to it any time with the toggle. And your own rank now always shows, even when you're sitting outside the top.
Clearer progress
❯Exam progress bars are now split into one segment per level, with a small marker where passing begins. One glance and you can see how many levels an exam has and where you stopped.
❯Each Daily Challenge now shows the XP it's worth up front, so you know what's on the line before you start.
Fixed
❯A stubborn one, finally cornered. If your browser was auto-translating the site (Google Translate and friends), pages could glitch out or reload on you, mostly around the dashboard. @velloxide flagged this ages ago with a scarily precise repro and screenshots, and it took me forever to trace it back to in-browser translation. There's a fix in now. It's a temporary guard, and it leads straight into something further down.
❯Coming back to an exercise or exam from another page could show a stale status, still "new" when you'd already started it. It updates properly now.
❯Plenty of small UI touch-ups across the dashboard, workspace and catalog.
What's next
❯That translation bug taught me something: real translation is coming. Not today, but it's firmly on the list. Translating every exercise, every screen, every dashboard cleanly, without ever touching the code of course, across several languages, is a genuinely big job. It'll land in the languages people here actually use: French, Arabic, Portuguese, Spanish, and more...
❯I'm about to head off for a bit, but I'll still be on Grademe almost every day. The next month is polish, not big new features: making what's already here feel right. There's one larger thing I'm saving for around August or September, and I'll let it stay a surprise. The summer goal is to open Grademe to everyone with no waitlist. I just have to be sure I can host all of you without the grading bill going to the moon, which is exactly why all that speed work up top matters.
On your feedback
❯A quick word on Beta Feedback: I get a lot of it, and I read every single one. They land on my phone the second you send them, so none slip by. I've mostly stopped replying and I'm sorry about that, it's honestly the only way to keep up right now. Real bugs and anything broken get handled first (nothing scary so far, a few small ones on my list), and every feature idea goes on the roadmap, which might mean next week or three months out. So please keep them coming. Don't expect a reply, but know that it's read.
❯Good luck out there, and I'll see you on the leaderboard.
Introduce Daily Challenge
New
❯You can now play the Daily Challenge from Compete: one new hidden C puzzle drops every midnight, built around a real bug or strange moment in computing history. The first pool includes the NASA Mars Climate Orbiter unit mix-up, Pac-Man's level 256 kill screen, Heartbleed, Ariane 5, the Zune leap-year freeze, Shellshock, Log4Shell, and a few other "how did this ship?" classics.
❯Dailies are meant to be quick. The first ones are very simple on purpose, and they get harder as the week goes on (the difficulty is shown before you start). Solve it cleanly, solve it fast, then compare how everyone else handled the same tiny disaster.
❯Each day now has its own leaderboard with time, rank, first-solve and shortest-solution markers, plus a weekly Daily Points board. Points come from your final daily rank: 20 for first place, then down to a floor of 3 for any counted solve.
❯After you solve, you can open other people's daily solutions from the board. If someone keeps solution sharing off, they still appear in the ranking, but their code stays private.
❯Profiles now show Daily stats: current and best Daily streak, solved count, best finish, fastest solve, weekly points and rank. Streaks also get up to 2 automatic freezes per month, so missing a couple of days does not instantly ruin the run.
Fair play
❯Daily solves now go through an authenticity check. A counted daily gives XP based on its difficulty (8, 12 or 16 XP in the current pool), but if a solve cannot be verified as written on Grademe, it still validates and keeps your streak, while earning no XP, no Daily Points and no leaderboard spot.
❯This is the first beta of the whole Daily system. Some things may move, and yes, a few corners might still be cursed. Please send Beta Feedback as soon as something feels broken, unfair or unclear. I really want to see how everyone plays it.
Fixed
❯The 404 page now makes the joke clearer, because a fake segfault is funnier when people know the site has not actually exploded.
❯The iPhone app icon now uses the right Grademe icon when you add the site to your home screen.
❯Profile avatars now get a green ring when you follow that person.
❯A bunch of small design fixes landed around the dashboard, workspace, profiles and shared solution lists.
❯You can now close any terminal tab, not just the one you opened last. Thanks to @minuss for the report.
❯Fixed a terminal issue where paging through past commands with the up and down arrows could leave behind leftover characters from a longer command. Also from @minuss.
❯Grading holds up more reliably if your connection drops in the middle of a run.
See how other people solved it
New
❯After you pass an exercise, you can now see how other people solved it. This is exercises only, not challenges. @spike suggested it (I'd been chewing on the same idea), and that's what pushed me to finally build it. You don't get everything, it's a capped set: people you follow come up first, then the solutions closest to yours, plus a few that go about it a completely different way. Great for spotting an approach you'd never have tried yourself.
❯Sharing your own solutions is on by default. The point is to learn from each other, same spirit as profiles already showing everyone's activity. If you'd rather keep your code to yourself, there's a toggle in Settings. Switch it off and you stop sharing, and you stop seeing others too.
❯This one took a while, for a reason worth explaining: some exercise statements have changed since people first solved them. So every shared solution is checked against the statement it was actually written for. You won't see one that wouldn't pass the exercise as it stands today.
Privacy
❯The first time you open Grademe (or until you dismiss it) there's a short note laying out what's private and what isn't.
❯The Terms are always one click away, and they really do explain what we collect and what we don't. While we're here: we don't sell your data, we don't train any AI on it, and there are no ads. Not our thing :)
Improved
❯Once you pass, the editor switches to read-only so you can read through other solutions without clobbering your own work, and the terminal disappears since you're done with it.
❯Reopening an exercise you already finished now drops you straight into a fresh retry instead of your old answer.
Fixed
❯A handful of small bugs and UI inconsistencies. Your status, XP and the main button now always agree, instead of occasionally showing different things.
❯A grader reliability fix: finishing an exercise could, in rare cases, leave grading in a rough state over time. Solid again now.
Your profile picture refreshes when you log back in
❯Before, we only copied your profile picture once, when you first created your account, so it stayed frozen after that. Now we sync it again when you log out and back in (max once every 24 hours), so if you changed your picture on GitHub or Google, just log out and log back in and it updates here. Thanks to @velloxide for the tip.
Activity grid shading and a scroll fix
Improved
❯The activity grid on your profile now shades each day by how much you actually got done. The more exercises you clear in a day, the darker the square. Before, every active day looked the same whether you did one exercise or fifteen. Thanks @justshobee for the suggestion.
Bug fixes
❯We fixed the legal pages (terms and privacy) being frozen and impossible to scroll when you opened them from inside the app. You had to do a full refresh to read them. They scroll normally now.
Polish, driven by your feedback
New
❯When you finish an exercise, a button now offers a next one at a similar difficulty, so you can keep practicing without going back to the dashboard. Thanks @void for the idea.
❯On practice exercises you can now open any test, including the ones that pass, to see the exact input and expected output. Handy for double-checking your logic against the edge cases. Exams are unchanged. Thanks again @void.
❯Followers and following lists are now visible on everyone's profile, not only your own, so you can see who is connected to who. Thanks @justshobee for the suggestion.
❯There is now a live banner that can alert you to an ongoing problem on the grader or the site. The timeout issue @drakula flagged was a real pain these past two days and we had no way to warn you while it was happening. Now we do.
Improved
❯Starting an exam for the first time now shows a short warning that the clock starts right away. A lot of you were opening an exam just to look around and left a failed attempt running. Thanks @minuss for pointing it out.
❯We reworked the learner exams so each level actually ramps up from easy to hard, added a few exercises along the way, and re-rated several exercises whose difficulty was off. Some were marked far harder than they really are and came down, a few went the other way. Thanks @minuss for flagging that the progression felt random.
❯The terminal now shows a scrollbar, so it is clear you can scroll back through earlier output. Thanks @minuss.
❯Dashboard, profile and exercise pages load noticeably faster thanks to better caching.
❯When we thank someone in these notes and they later change their username, the mention used to break and show "profile not found". Now it follows them and always shows their current name.
Bug fixes
❯Fixed exercises that could hang on an infinite loop. For a couple of days, exercises that ask you to write a function were taking 60 seconds to time out instead of 5. Thanks @drakula for catching it.
❯Some of you didn't see the "enter a code" button on the landing page, which made an invite code look unusable. That is fixed now. Thanks @si_.
❯A range of smaller bug fixes and improvements across the platform.
Coming soon
❯We are about to move the site from beta.grademe.fr to grademe.fr, in the next few days. Nothing to do on your side: beta.grademe.fr will simply redirect to grademe.fr.
New test panel, new challenges & new exercises
❯We rebuilt the test panel on the right of the exercise and challenge pages. Every test is its own line now, top to bottom, with the build step first. When one fails it tells you right away what broke, wrong output, a crash, a timeout or a memory error, and the line opens on the spot with the command and the expected next to what you actually got. Names stay hidden until a test fails, so you still have to work it out yourself.
❯We reworked the existing challenges so it's clearer what each one is actually getting you ready for.
❯We also added three new ones. Strings from Scratch and Memory & Pointers each go deep on a single topic, and the headliner, Rebuild the C Standard Library, hands you the whole thing: re-implement libc yourself, function by function.
❯To fill all that, we added 25 new C exercises, a lot of them small standard-library functions to rebuild yourself.
❯A lot of you couldn't tell why an exercise gave no XP, so we made the rules visible. Hover the XP on your profile or the dashboard to see how it works, and when you open an exercise you can still win XP on, it shows in gold with a +. Quick reminder: you only earn an exercise's XP the first time you pass it, whether that is inside a challenge or on its own.
❯We got a lot of feedback this week, thank you for that. Nothing urgent in there, so we'll work through all of it over the next few days :)
Less empty space, more polish
❯We tightened up the profile page. It had too much dead space, so we pulled everything in and used the room for your stats and your streak instead. Thanks @void and @justshobee for flagging it, you were right, there was way too much air in there.
❯You can now add your school to your profile.
❯Your streak shows on your profile now, not just the dashboard.
❯"Review" became "Reinforce", and it finally means something. Before, it would show you exercises no matter what. Now it only surfaces the ones you actually fought with, the kind worth redoing until they really stick.
❯Profiles load faster.
❯A big round of UI and UX polish, basically finishing what we started last release. Everything is a bit cleaner and the look is settling into what we actually want Grademe to be. Still beta, so if something feels off, send it our way.
❯PS: if your Reinforce tab is empty, that's a flex. It means nothing really gave you a hard time.
A fresh look across the app
❯Reformatted the profile and its history, thanks @velloxide for the suggestion! The history on your profile tab is easier to read now, and your runs of the same exercise or exam are grouped together instead of piling up.
❯Lots of UI and UX changes. At Grademe we polish! It's still beta, the design can move at any moment and nothing is locked in, so if you have ideas send them over. And by the way, very few of you have found light mode. Give it a try and tell us what you think (sidebar, click your name).
❯Big improvements on mobile. I still don't really know why I'm polishing mobile, do people actually code on their phone?! Anyway, there's a floating menu now and the top bar gets out of the way, so moving around is clearly easier. Thanks @void for the idea!
❯Fixed a bug that showed "Grader currently unavailable", only inside one challenge and only when your program printed a null byte. Thanks @yuuuri01 for catching it, this one was sneaky, and a few of you ran into it. Sorry about that!
❯PS: have you tried resizing the left and right panels on the exercise and exam pages yet?
The grader is faster than ever
❯@tomas2043 noticed the grader was sometimes timing out, and @spike ran into it too, thanks for flagging it. We shipped a quick fix yesterday to get it moving again, and this release fixes it for good: we found what had been slowing the grader down over the past few days and sorted it out, so grading is snappy again and runs faster than before.
❯Fixed the "ghost cursor" that @drapolas reported: while you were typing, the cursor would sometimes wander off on its own and land at the end of your code. It stays exactly where you put it now. Thanks for the report, and for the name.
Grademe on your phone, plus unlimited invites
❯You can now use Grademe on your phone. If you're brave (or a little unhinged) enough to write C on a touchscreen, the door's open
❯Your invite code is now a single code for life that never runs out. Share it with as many people as you want, and everyone who uses it gets in.
New landing page
❯Buttons and inputs across the app got restyled, with clearer focus outlines so you can tell where you are when you tab through a form.
❯The waitlist button scrambles its text when you hover it. No real reason, it just looked fun.
Feedback
❯I'm putting a lot into making this feel good to use, and I hope you like where it's heading. Got a design idea of your own? Send it through the Beta Feedback tab in the bottom-right corner, I read every one.
❯Picking a username is easier now. The old rules were too strict and blocked a lot of normal names, so some people couldn't settle on a simple one.
Faster app and multiple terminals
❯The whole app is faster now, especially on slower machines. The dashboard fills in card by card as each part is ready instead of waiting for the slowest one and dropping in all at once, and the layout no longer jumps while the page loads. Thanks to @void for flagging the lag.
❯You can now open more than one terminal in the workspace, so you can run your program in one and work in another at the same time. It helps on exam 06, where you need to talk to the server you built. Thanks to @halluicnette for the suggestion.
❯If your browser auto-translates pages, it no longer rewrites the code in the editor or the output in the terminal. Your code stays exactly as you wrote it.
❯We fixed the profile progress bar not moving after you cleared exercises inside an exam. Your completions were always saved, the bar just wasn't catching up to them. Thanks to @void for flagging it.
Invite codes for everyone and the Beta tester badge
❯Everyone now has 5 invite codes, up from 2, and you no longer need to send feedback first to unlock them. Open Invite friends in the sidebar and they're ready to share.
❯Your profile now shows a Beta tester badge. Anyone who joins before the public launch keeps it forever, including the friends you invite.
❯We opened access to a new batch from the waitlist with this release.
New Exam 06 and clearer grading
❯New exam, the chat_relay challenge. You build a TCP chat server in C that takes many clients at once and relays every message between them, all on a single non-blocking loop, and it has to run clean with no memory or socket leaks. It's the toughest exercise on the C track so far, with three hours on the clock and more points than usual.
❯When an exercise limits which functions you're allowed to use, we now check your code for that up front. Call something that isn't on the list and you get a message naming the exact function, instead of a confusing build error.
❯Opening an exercise or exam is smoother. If you already have work saved from an earlier attempt, the editor shows it straight away instead of flashing the starter file first.
Keyboard-first practice and public profiles
❯Open an exercise or exam and the cursor drops straight into the editor. Press Cmd+Enter (Ctrl+Enter) to run the tests.
❯Press Cmd+K anywhere to search and jump to any exercise, exam or page.
❯Put those together and the whole loop is keyboard-driven: Cmd+K to the next exercise, write your code, Cmd+Enter to get graded, move on. The mouse is optional now.
❯Search finds people too. Type a username to open their public profile and see how they're doing.
❯You can follow other people from their profile, and your follower and following counts show up right there.
❯Profiles are public now, so you can add a short bio and a few social links to yours from the edit dialog.
❯Exam achievements on a profile now show in a cleaner, more compact grid.
❯Public profiles with a bio and social links started as an idea from @42ang_vusk. Thanks for the suggestion!
C++ exercises and a new developer exam
❯You can now practice C++ in Grademe. The first C++ exercises are live: a coordinate class to flesh out with operator overloads, an arbitrary-size unsigned integer, and a small set of bag containers built with inheritance and polymorphism.
❯A new developer exam puts C++ and C together in one run. It is the toughest one we have shipped, so go in expecting a fight.
❯Two new C exercises work on grids. One finds and fills the largest open square, the other lets you draw on a board and then runs a small life simulation.
❯Exams now show every language they cover up front, so a mixed C++/C exam is obvious before you start.
New C exercises and Developer Exam 04
❯Five new exercises join the C track, all at the hardest level. pipe_chain and process_stream_open wire commands together through pipes, signal_watchdog runs a function under a timeout, and expr_tree_eval and json_map_parser have you writing parsers by hand.
❯Developer Exam 04 is live. It runs three hours at a 100% pass mark, with two levels built from the new process and parser exercises.
❯Exercises where you write a single function can now be checked for memory leaks, the same as the whole-program ones already were. A leak shows up as its own result with the details, instead of passing quietly.
Python lands on Grademe
New
❯Grademe now speaks Python, not just C. You write your Python solutions in the same workspace you already know, and they get graded the same way.
❯14 new Python exercises to work through, from palindromes and anagrams to base conversion, list rotation and multi-key sorting. They fill out the Python module in the learning path, which started with just an intro exercise.
❯A new Python exam, Developer Exam 03, that runs three hours with a 60% pass mark.
❯The exercise library has a language filter. Show only C, only Python, or both, and it remembers your choice next time you come back.
❯Every in-progress exam shows the time you have left next to the In progress label, like 23m left or 1h3m. It turns up wherever your exams do.
❯Exercises and exams now carry a small language badge, so C and Python are easy to tell apart at a glance.
Improved
❯Exam status colours are consistent across the app now: gold once you pass, the accent colour while one is in progress, with badges and progress bars to match.
Fixed
❯Restarting a finished exam takes you straight to the start countdown now, instead of a "Time's up!" screen you had to click through first.
❯The "Time's up!" screen shows the moment your timer actually runs out during an exam, with a button to your results.
❯An exam only reads Completed once you've finished every level, not as soon as you cross the passing score.
❯We fixed the list-node-count exercise: the example struct it ships with had its fields in a different order than the grader expected, so a correct answer could still fail with the wrong count. It grades correctly now. Thanks to @42ang_vusk for spotting it.
❯Thanks to @42ang_vusk's feedback, we renamed the strlen and strcpy exercises so their prototypes use the standard library names (strlen, strcpy) instead of the my_ prefix, keeping them consistent with the other library exercises.
❯We fixed an issue that could occasionally show the wrong cooldown or exam timer. Thanks to @dakaymak for reporting it.
❯We fixed a performance issue that could make the dashboard slow. Thanks to @sal for reporting it.
New Exam 03, memory checks, and valgrind
New
❯Valgrind is now available in the terminal, so you can debug memory in your own programs.
❯Exercises that allocate memory are now checked for memory safety: a leak or a use of uninitialised memory fails the exercise, with a clear message pointing to the exact file and line. You can no longer pass an exercise that has a memory bug.
❯A new developer exam, Developer Exam 03, plus 13 new C exercises.
Improved
❯The dashboard loads faster and feels smoother.
Python support and a redesigned exercise experience
New
❯Python is here. Our grader has been rebuilt from the ground up to support it, with the first Python exercise available today and many more on the way. Support for additional languages is coming soon.
❯A brand-new exercise experience. The whole flow has been redesigned: problem statements are clearer and easier to read, tests are presented in a cleaner way, and the interface got a fresh new look.
Improved
❯The grader is now far more robust, and its error messages are clearer and easier to understand.
❯Signing in is faster, and the app loads with a smoother experience.
Fixed
❯Exercises that ask you to recreate a function now show the tests run against your code. Previously these stayed hidden.
❯Fixed two exercises that weren't grading correctly.
❯Plus a range of smaller bug fixes and improvements across the platform.
Feedback
❯This release changes a lot, especially the look and feel. Tell us what you love, what feels off, or anything that confuses you. Reach us anytime through the Beta Feedback tab in the bottom-right corner.
Mobile access temporarily disabled
❯We have disabled the mobile version of Grademe for now. If you open the site on a phone, you will see a message asking you to switch to a computer.
gdb support, validation fixes, and a new changelog
❯You can now run gdb directly from the exercise terminal to step through and debug your C programs.
❯We fixed a grading bug that prevented 5 exercises from being marked as validated even when your solution was correct.
❯This changelog page is new. Every shipped change now shows up here so you can see what's evolving without leaving the app.
Reliability and resilience improvements
❯Grademe now works consistently for every user, regardless of which browser extensions you have installed.
❯Exercises and exams start up more reliably, even after long stretches of inactivity. No more being blocked on the first launch of the day.
❯Error messages in the terminal are now cleaner and easier to read when something goes wrong.
First users on board and a smarter waitlist
❯Our first 10 users joined the platform. Welcome to the crew shaping how Grademe grows.
❯Signing up now starts with a short questionnaire about your goals so we can match your starting point to the right learning path.
❯Inviting several friends at once is now possible thanks to batch-generated invite codes.
Clearer compile and grading messages
❯Linker errors now show the exact missing symbol and the file it came from, so failed builds stop being a guessing game.
❯Function exercises now keep your program's output and the grader's output in clearly separated panels, so you can see exactly what your code printed.
❯When grading fails, the messages now carry the full context you need to spot the problem and fix it.
Resizable workspaces and smoother launches
❯The editor and terminal panels in exercises and exams are now resizable. Drag the divider to give your code or your output the room it needs.
❯Picking and launching an exercise from the catalog got a polish pass so the flow feels lighter from the dashboard to your first keystroke.
First public preview of Grademe
❯Welcome to Grademe. You can now work through C exercises and exams inside an integrated editor-and-terminal workspace.
❯The exam catalog is live: browse the available exams, pick one, and jump straight into the workspace to take it.
❯A feedback button sits in the corner of every page so you can report a problem or share an idea without leaving what you're doing.
❯Friends can be invited from the dashboard, opening up access to anyone in your circle.