<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Eka Putri</title>
    <description>The latest articles on DEV Community by Eka Putri (@ekaputri_game).</description>
    <link>https://dev.to/ekaputri_game</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4205631%2F9ea47a84-166f-4631-9368-7bee9cdacef2.png</url>
      <title>DEV Community: Eka Putri</title>
      <link>https://dev.to/ekaputri_game</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ekaputri_game"/>
    <language>en</language>
    <item>
      <title>When the Canvas Goes Black: WebGL Context Loss on Cheap Android Phones</title>
      <dc:creator>Eka Putri</dc:creator>
      <pubDate>Fri, 13 Nov 2026 23:01:55 +0000</pubDate>
      <link>https://dev.to/ekaputri_game/when-the-canvas-goes-black-webgl-context-loss-on-cheap-android-phones-1b3n</link>
      <guid>https://dev.to/ekaputri_game/when-the-canvas-goes-black-webgl-context-loss-on-cheap-android-phones-1b3n</guid>
      <description>&lt;p&gt;A friend handed me an old Android phone last week with a web game frozen on a black rectangle. The HUD still updated — score, timer, a pause button — but the play field was gone and the console said nothing. A reload fixed it for four minutes.&lt;/p&gt;

&lt;p&gt;That is what WebGL context loss looks like from outside. The driver decides it needs the memory back, the browser drops the context, and every &lt;code&gt;gl&lt;/code&gt; call afterwards returns &lt;code&gt;INVALID_OPERATION&lt;/code&gt; while the canvas holds its last frame or goes blank. On a 3 GB phone with a dozen tabs open it is routine.&lt;/p&gt;

&lt;p&gt;Only the WebGL layer dies, which is the giveaway: a DOM overlay keeps repainting, so the bug reads as a rendering glitch rather than a lost context. I listen for it by name now, and &lt;code&gt;preventDefault()&lt;/code&gt; is the line that makes a restore possible at all.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="n"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'webglcontextlost'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;preventDefault&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nf"&gt;pauseRound&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'webglcontextrestored'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nf"&gt;rebuildTextures&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Forcing the drop takes patience: start the round, then open six heavy pages and let memory pressure build. A catalog such as &lt;a href="https://d06web.online" rel="noopener noreferrer"&gt;d06&lt;/a&gt; helps because several builds sit side by side, so canvases rotate without reloading the phone, and &lt;a href="https://zk7web.online" rel="noopener noreferrer"&gt;h5.zk7&lt;/a&gt; works as a second surface since it allocates its own and gives up first.&lt;/p&gt;

&lt;p&gt;Single-page releases are the lighter version of the same test. &lt;a href="https://8180slot.online" rel="noopener noreferrer"&gt;8180&lt;/a&gt; leaves little behind when a tab closes, while &lt;a href="https://aa62.online" rel="noopener noreferrer"&gt;aa62&lt;/a&gt; only fails once a second canvas of the same build is open. One surface per page is survivable; three is not.&lt;/p&gt;

&lt;p&gt;What changed was the recovery path, not the phone's speed: builds such as &lt;a href="https://ayuwinweb.online" rel="noopener noreferrer"&gt;ayuwin&lt;/a&gt; came back with a rebuilt texture cache instead of a full reload, so the round resumed where it stopped and players noticed only a two-second freeze.&lt;/p&gt;

</description>
      <category>android</category>
      <category>gaming</category>
      <category>webdev</category>
      <category>mobile</category>
    </item>
    <item>
      <title>The First Tap Never Counts: Touch Latency in Mobile Web Games</title>
      <dc:creator>Eka Putri</dc:creator>
      <pubDate>Wed, 11 Nov 2026 23:56:06 +0000</pubDate>
      <link>https://dev.to/ekaputri_game/the-first-tap-never-counts-touch-latency-in-mobile-web-games-1be4</link>
      <guid>https://dev.to/ekaputri_game/the-first-tap-never-counts-touch-latency-in-mobile-web-games-1be4</guid>
      <description>&lt;p&gt;I logged every tap that did nothing for a week. On a mid-range Android phone the pattern was embarrassingly consistent: the first tap on a freshly loaded H5 game page produced no response at all, the second one hit the button I was aiming at. Put the timestamps side by side and the cause stops being mysterious.&lt;/p&gt;

&lt;p&gt;The browser is not slow, it is waiting. After a page settles, a touch can still be read as the opening half of a double-tap gesture, so the engine holds the event for a few hundred milliseconds to see whether a second finger arrives. On a long article nobody notices. On a game where you tap a moving target, the page feels asleep.&lt;/p&gt;

&lt;p&gt;The cheap fix is one CSS line: &lt;code&gt;touch-action: manipulation&lt;/code&gt; on the tap surface, which tells the engine that zoom-on-double-tap is not wanted here. I test it against two deliberately different shells — the light entry at &lt;a href="https://gowinslot.online" rel="noopener noreferrer"&gt;gowin&lt;/a&gt; and the H5 route at &lt;a href="https://ri188.online" rel="noopener noreferrer"&gt;h5.ri188&lt;/a&gt; — because a thin page hides the delay while a heavier one keeps it visible under first paint.&lt;/p&gt;

&lt;p&gt;Two more things matter as much. Tap targets below 48 px turn into misses as soon as the thumb rolls, and any canvas redraw under a resting finger will swallow the next tap entirely. A browsable demo at &lt;a href="https://rpvip2.online" rel="noopener noreferrer"&gt;rpvip2&lt;/a&gt; and a packaged &lt;a href="https://svip5web.online" rel="noopener noreferrer"&gt;svip5 apk&lt;/a&gt; both load quickly enough to show this plainly: latency is rarely the network, it is scheduling.&lt;/p&gt;

&lt;p&gt;Keep the tap surface still, declare the gesture, and measure with a real thumb instead of DevTools touch emulation. The last shell in my notes, &lt;a href="https://hokiwinweb.online" rel="noopener noreferrer"&gt;hokiwin&lt;/a&gt;, is a useful reminder of the boring version: one tap, one response, no ceremony.&lt;/p&gt;

</description>
      <category>android</category>
      <category>gaming</category>
      <category>webdev</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Why a Mobile Web Game Goes Silent After a Phone Call</title>
      <dc:creator>Eka Putri</dc:creator>
      <pubDate>Wed, 11 Nov 2026 00:03:45 +0000</pubDate>
      <link>https://dev.to/ekaputri_game/why-a-mobile-web-game-goes-silent-after-a-phone-call-2452</link>
      <guid>https://dev.to/ekaputri_game/why-a-mobile-web-game-goes-silent-after-a-phone-call-2452</guid>
      <description>&lt;p&gt;Halfway through a round my phone rang. I took the call on speaker, hung up, and the game was still running — canvas moving, counter climbing, taps registering — with no sound at all. Nothing on the screen said muted.&lt;/p&gt;

&lt;p&gt;That silence is not random. Android hands audio focus to the dialer, and the browser tab is not guaranteed to get it back. A plain &lt;code&gt;&amp;lt;audio&amp;gt;&lt;/code&gt; element stays paused. A WebAudio context drops to &lt;code&gt;suspended&lt;/code&gt;. Or the tab keeps decoding while the system keeps it muted until something asks for focus again. From the outside all three look identical, and all three look like a broken game.&lt;/p&gt;

&lt;p&gt;Two entries I opened to compare the symptom handle it differently. &lt;a href="https://lobbyweb.online" rel="noopener noreferrer"&gt;lobby apk&lt;/a&gt; comes back with its sound icon flipped to off, so at least the state is visible. &lt;a href="https://rpvip3.online" rel="noopener noreferrer"&gt;h5.rpvip3&lt;/a&gt; looks alive but stays quiet until you reload the page, and nothing on screen tells you why.&lt;/p&gt;

&lt;p&gt;The three that behave better all recover on the first touch. &lt;a href="https://day777.online" rel="noopener noreferrer"&gt;day777&lt;/a&gt; picks the audio up as soon as I tap the table. &lt;a href="https://ina777.online" rel="noopener noreferrer"&gt;ina777 apk&lt;/a&gt; needs one deliberate tap near the controls, then keeps sound for the rest of the session. &lt;a href="https://7svip.online" rel="noopener noreferrer"&gt;7svip&lt;/a&gt; just restarts the current track, which is crude and never leaves me guessing.&lt;/p&gt;

&lt;p&gt;The fix is two small listeners: watch &lt;code&gt;statechange&lt;/code&gt; on the audio context, and resume from a real &lt;code&gt;pointerdown&lt;/code&gt; once the tab is visible again. Test it with an actual call, not DevTools emulation — the interruption comes from the system, and the emulator never takes that path.&lt;/p&gt;

</description>
      <category>android</category>
      <category>gaming</category>
      <category>webdev</category>
      <category>mobile</category>
    </item>
    <item>
      <title>What Happens to a Web Game When You Switch Apps Mid-Round</title>
      <dc:creator>Eka Putri</dc:creator>
      <pubDate>Tue, 10 Nov 2026 10:47:04 +0000</pubDate>
      <link>https://dev.to/ekaputri_game/what-happens-to-a-web-game-when-you-switch-apps-mid-round-2116</link>
      <guid>https://dev.to/ekaputri_game/what-happens-to-a-web-game-when-you-switch-apps-mid-round-2116</guid>
      <description>&lt;p&gt;I spent a morning switching away from a running H5 game and timing how long it takes to feel usable again. Not to farm a score, but to see whether the page survives being backgrounded on a phone with 3 GB of RAM and a dozen other tabs.&lt;/p&gt;

&lt;p&gt;Three things break, in this order. Timers slow down: mobile Chrome clamps &lt;code&gt;setTimeout&lt;/code&gt; in a hidden tab to roughly once a minute. Then the animation loop stops, so the state the code believes in drifts away from the frame the player last saw. Finally, if the tab stays hidden long enough, the page can be discarded and reloaded from cache.&lt;/p&gt;

&lt;p&gt;The last case is the one players notice. A round that looked paused restarts, and whatever lived only in memory is gone. &lt;a href="https://555zk.online" rel="noopener noreferrer"&gt;555zk&lt;/a&gt; comes back on the screen I left, which is what I want from a page I reopen by habit. &lt;a href="https://luckyrp.online" rel="noopener noreferrer"&gt;luckyrp&lt;/a&gt; pauses instead of letting its clock run on, so nothing is lost while I am answering a message in another app.&lt;/p&gt;

&lt;p&gt;Storage is the other half. &lt;a href="https://qtgame.online" rel="noopener noreferrer"&gt;qtgame apk&lt;/a&gt; has kept its saved state through three forced closes, so progress does not depend on the tab staying alive. &lt;a href="https://8qr.online" rel="noopener noreferrer"&gt;8qr apk&lt;/a&gt; is slower to resume but consistent, and &lt;a href="https://rr777web.online" rel="noopener noreferrer"&gt;rr777&lt;/a&gt; reloads rather than resuming, a fair trade when the reload is quick.&lt;/p&gt;

&lt;p&gt;The fix is small. Listen for &lt;code&gt;visibilitychange&lt;/code&gt;, write the round state to storage before the tab hides, and rebuild from that state on &lt;code&gt;pageshow&lt;/code&gt; instead of assuming the DOM is still there. Test it by backgrounding the tab for two minutes, not two seconds.&lt;/p&gt;

&lt;p&gt;None of this is about winning anything. It is about not losing a round to a phone call. If you build for mobile, switch apps mid-session and watch what comes back.&lt;/p&gt;

</description>
      <category>android</category>
      <category>gaming</category>
      <category>webdev</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Rotating the Phone Mid-Round: What Actually Breaks</title>
      <dc:creator>Eka Putri</dc:creator>
      <pubDate>Sun, 08 Nov 2026 22:37:19 +0000</pubDate>
      <link>https://dev.to/ekaputri_game/rotating-the-phone-mid-round-what-actually-breaks-3ia3</link>
      <guid>https://dev.to/ekaputri_game/rotating-the-phone-mid-round-what-actually-breaks-3ia3</guid>
      <description>&lt;p&gt;I rotate the phone on purpose now. Not for the accelerometer — to see whether an H5 page survives an orientation change mid-session. Of eleven pages I tried last week, nine fell back to a start screen or drew a canvas about half the width of the new viewport.&lt;/p&gt;

&lt;p&gt;The pattern is almost always the same. The page listens for &lt;code&gt;resize&lt;/code&gt;, recalculates its layout, then keeps the coordinates it cached before the rotation. Buttons move on screen; the hit areas do not. On two pages a tap zone landed under the browser toolbar, so every second tap opened the address bar instead of the game.&lt;/p&gt;

&lt;p&gt;A short list of entries I re-check after every phone update doubles as my rotation test. &lt;a href="https://c8vip.online" rel="noopener noreferrer"&gt;c8vip&lt;/a&gt; redraws cleanly and keeps its state, so it is my baseline before I blame my own page. &lt;a href="https://idagameweb.online" rel="noopener noreferrer"&gt;idagame&lt;/a&gt; handles a lock-screen resume as well as a rotation, a stronger test than it sounds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rpvip4.online" rel="noopener noreferrer"&gt;h5 rpvip4 win&lt;/a&gt; is where I watch how fast a page issues its first frame after the viewport changes. &lt;a href="https://iw777.online" rel="noopener noreferrer"&gt;iw777&lt;/a&gt; shows the old aspect ratio for about a second before it settles, visible but harmless.&lt;/p&gt;

&lt;p&gt;Audio is a separate problem. &lt;a href="https://rpvip5web.online" rel="noopener noreferrer"&gt;rpvip5&lt;/a&gt; is the only entry on my list that keeps its audio context alive through the change; most pages suspend it and never resume, so the game looks fine and stays silent.&lt;/p&gt;

&lt;p&gt;The fix is cheap. Re-read &lt;code&gt;innerWidth&lt;/code&gt; and &lt;code&gt;innerHeight&lt;/code&gt; in the orientation handler, and treat the canvas as a new surface instead of a resized one.&lt;/p&gt;

&lt;p&gt;None of the above is a scoring result — it is rendering behaviour. What I want is boring: no lost round, no dead tap zone, no reload. If you build for mobile, rotate within a minute of the first load and watch the gap.&lt;/p&gt;

</description>
      <category>android</category>
      <category>gaming</category>
      <category>webdev</category>
      <category>mobile</category>
    </item>
    <item>
      <title>One Page, Three Browsers, One Phone</title>
      <dc:creator>Eka Putri</dc:creator>
      <pubDate>Fri, 06 Nov 2026 23:43:30 +0000</pubDate>
      <link>https://dev.to/ekaputri_game/one-page-three-browsers-one-phone-1j0h</link>
      <guid>https://dev.to/ekaputri_game/one-page-three-browsers-one-phone-1j0h</guid>
      <description>&lt;p&gt;Same phone, same Wi-Fi, same page, three browsers. I had been blaming games for stutter that only ever appeared in one of them.&lt;/p&gt;

&lt;p&gt;Chrome is my baseline, since it is what most people will open a link in. Firefox on the same mid-range Android renders the identical lobby about a second slower but keeps its audio context alive across tab switches, which Chrome on this device does not. The third is the WebView inside a chat app, the path a lot of people actually take, and it is the one that surprised me: no address bar, no shared cache, and a hard cap on how much memory the page is allowed to touch.&lt;/p&gt;

&lt;p&gt;I run three saved entries through all of them. &lt;a href="https://big11web.online" rel="noopener noreferrer"&gt;h5.big11&lt;/a&gt; is the lightest and behaves identically everywhere, which makes it a fair control. &lt;a href="https://juara666.online" rel="noopener noreferrer"&gt;juara666&lt;/a&gt; draws its menu differently in the WebView, same layout but one row taller, and that single row is a fix I would never have found in Chrome. &lt;a href="https://gf777web.online" rel="noopener noreferrer"&gt;gf777&lt;/a&gt; is the only one that asked for fullscreen properly in all three; the other two needed a second tap after the screen rotated.&lt;/p&gt;

&lt;p&gt;Two more sit in the same folder for the same reason. &lt;a href="https://an777.online" rel="noopener noreferrer"&gt;an777 slot&lt;/a&gt; reloads once on rotation inside the WebView but not in Chrome, and the build I installed as &lt;a href="https://svip9web.online" rel="noopener noreferrer"&gt;svip9 apk&lt;/a&gt; ships its own browser shell, which turns a three-column test into a fourth I did not plan for.&lt;/p&gt;

&lt;p&gt;Three browsers, one afternoon, no profiler. A page that works everywhere is rarer than it should be, and the differences tell you who tested on a real phone and who did not.&lt;/p&gt;

</description>
      <category>android</category>
      <category>gaming</category>
      <category>webdev</category>
      <category>mobile</category>
    </item>
    <item>
      <title>The Second Load Tells You More Than the First</title>
      <dc:creator>Eka Putri</dc:creator>
      <pubDate>Fri, 06 Nov 2026 00:11:19 +0000</pubDate>
      <link>https://dev.to/ekaputri_game/the-second-load-tells-you-more-than-the-first-51d2</link>
      <guid>https://dev.to/ekaputri_game/the-second-load-tells-you-more-than-the-first-51d2</guid>
      <description>&lt;p&gt;I clear nothing between runs. I open a page, play for two minutes, close the tab, wait thirty seconds, and open it again. The first load tells me how heavy the bundle is, the second whether anyone thought about the phone holding it.&lt;/p&gt;

&lt;p&gt;On a mid-range Android the gap is easy to feel. A page that re-parses three megabytes of script on every visit makes me watch the same spinner twice. A page that hands its images and fonts to the browser cache opens almost instantly the second time, and that difference has nothing to do with my connection.&lt;/p&gt;

&lt;p&gt;The clearest example in my notes is &lt;a href="https://luxury88web.online" rel="noopener noreferrer"&gt;luxury88&lt;/a&gt;, where the second open lands on the same menu with the artwork already decoded and the wait from the first visit is simply gone. &lt;a href="https://sm605web.online" rel="noopener noreferrer"&gt;sm605&lt;/a&gt; behaves the same way for its shell but re-fetches round assets each time, so the lobby is instant while the first tap still costs a beat. I keep &lt;a href="https://9399.online" rel="noopener noreferrer"&gt;9399&lt;/a&gt; around as the opposite case: two opens, two nearly identical waits, which is what a missing cache header looks like from the outside.&lt;/p&gt;

&lt;p&gt;Two more sit in the same folder. &lt;a href="https://f08a.online" rel="noopener noreferrer"&gt;f08&lt;/a&gt; caches well then spends the saved time on a longer logo animation, a trade that works only the first time. The entry I saved as &lt;a href="https://3126web.online" rel="noopener noreferrer"&gt;3126 com&lt;/a&gt; is my check for whether audio survives a reload; it kept its muted state across both runs.&lt;/p&gt;

&lt;p&gt;None of this needs a profiler. Two opens, thirty seconds apart, one thumb on the tab bar. If the second load is not faster than the first, the page is charging every visitor for something the browser was willing to fix for free.&lt;/p&gt;

</description>
      <category>android</category>
      <category>gaming</category>
      <category>webdev</category>
      <category>mobile</category>
    </item>
    <item>
      <title>What a Dropped Connection Reveals About a Mobile Web Game</title>
      <dc:creator>Eka Putri</dc:creator>
      <pubDate>Thu, 05 Nov 2026 02:15:52 +0000</pubDate>
      <link>https://dev.to/ekaputri_game/what-a-dropped-connection-reveals-about-a-mobile-web-game-109n</link>
      <guid>https://dev.to/ekaputri_game/what-a-dropped-connection-reveals-about-a-mobile-web-game-109n</guid>
      <description>&lt;p&gt;Airplane mode is the cheapest stress test I know. Ten minutes into a session I switch the radio off for fifteen seconds, switch it back on, and watch the tab. No lab, no profiler — a two-year-old phone and a stopwatch.&lt;/p&gt;

&lt;p&gt;What matters is not whether the page reconnects. It is what survives. A few come back exactly where they stopped, some silently reload to their start screen, and one class just spins until I kill the tab and start over.&lt;/p&gt;

&lt;p&gt;I run that loop on the same short list. &lt;a href="https://e88web.online" rel="noopener noreferrer"&gt;e88&lt;/a&gt; goes first, because its lobby repaints quickly and I can tell a genuine reconnect from a cached screenshot. The build I open second is &lt;a href="https://rvip1.online" rel="noopener noreferrer"&gt;rvip1 apk&lt;/a&gt;, which takes longer to rejoin and gives me a cleaner reading of how a client queues taps while the socket is down. A &lt;a href="https://thorweb.online" rel="noopener noreferrer"&gt;demo slot pragmatic thor&lt;/a&gt; page sits third in my notes; its round is short enough that a fifteen-second gap is obvious at once, so I use it as the harsh case rather than the normal one.&lt;/p&gt;

&lt;p&gt;Two more entries round out the morning. &lt;a href="https://mz356.online" rel="noopener noreferrer"&gt;mz356&lt;/a&gt; recovers without losing the menu position, which I did not expect from something that felt heavier than the others. I finish on &lt;a href="https://33zk-slot.online" rel="noopener noreferrer"&gt;h5 33zk&lt;/a&gt;, where the reconnect banner appears fast but the audio stays muted until I tap the screen once.&lt;/p&gt;

&lt;p&gt;None of these results are dramatic, and I am not measuring anything clever. But a page that loses your session after a tunnel is a page people close, and I would rather find that out on my own couch than on a commute, holding the phone at arm's length while the train fills up.&lt;/p&gt;

</description>
      <category>android</category>
      <category>gaming</category>
      <category>webdev</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Keeping a Short List of H5 Game Entries on a Cheap Android Phone</title>
      <dc:creator>Eka Putri</dc:creator>
      <pubDate>Wed, 04 Nov 2026 14:02:03 +0000</pubDate>
      <link>https://dev.to/ekaputri_game/keeping-a-short-list-of-h5-game-entries-on-a-cheap-android-phone-1pbg</link>
      <guid>https://dev.to/ekaputri_game/keeping-a-short-list-of-h5-game-entries-on-a-cheap-android-phone-1pbg</guid>
      <description>&lt;p&gt;Most of my browser testing happens on a phone that cost less than dinner for four. The hardware is not the point. The point is that a page which loads happily on my laptop often falls apart on 3 GB of RAM and a mid-range chip, and I would rather find that out myself than hear about it later.&lt;/p&gt;

&lt;p&gt;So I keep a short list of H5 game entry points and open each one the same way: a fresh tab, cache cleared, airplane mode toggled off to force a new radio connection, then a stopwatch. Five entries is enough. Any more and I stop paying attention.&lt;/p&gt;

&lt;p&gt;The first page I open is usually &lt;a href="https://st789.online" rel="noopener noreferrer"&gt;st789 apk&lt;/a&gt;, because the landing screen is light enough to arrive on a weak connection and makes a fair control case. Next is &lt;a href="https://okwinweb.online" rel="noopener noreferrer"&gt;okwin&lt;/a&gt;, where I mostly watch how long the tab keeps the CPU awake after the menu has painted. &lt;a href="https://dan777.online" rel="noopener noreferrer"&gt;dan777&lt;/a&gt; gets opened third, and it is the one that reminds me to rotate the phone mid-load, since losing state on rotation is still the most common failure I see.&lt;/p&gt;

&lt;p&gt;The fourth entry is &lt;a href="https://taruh777.online" rel="noopener noreferrer"&gt;h5.taruh777&lt;/a&gt;, which I treat as the small-screen test: if a game needs horizontal scrolling on a 5.5-inch display, that goes in the notes immediately. Last comes &lt;a href="https://askasinoweb.online" rel="noopener noreferrer"&gt;askasino apk&lt;/a&gt;, and by that point I am mostly checking whether the back button behaves, because a page that traps navigation is worse than a slow one.&lt;/p&gt;

&lt;p&gt;None of this is sophisticated. It is a stopwatch, a notebook, and the same five addresses every week. But when a page that used to open in four seconds takes eleven, I notice, and I can usually name the change that caused it.&lt;/p&gt;

</description>
      <category>android</category>
      <category>gaming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Cheap Phone in the Drawer Is the Real Test Device</title>
      <dc:creator>Eka Putri</dc:creator>
      <pubDate>Tue, 03 Nov 2026 10:45:21 +0000</pubDate>
      <link>https://dev.to/ekaputri_game/the-cheap-phone-in-the-drawer-is-the-real-test-device-53nb</link>
      <guid>https://dev.to/ekaputri_game/the-cheap-phone-in-the-drawer-is-the-real-test-device-53nb</guid>
      <description>&lt;p&gt;The fragmentation numbers this week were not surprising, only blunt: Android 11 still powers about ten times as many devices as Android 17. That reads like a cleaning-up problem. For anyone shipping software it is a testing constraint.&lt;/p&gt;

&lt;p&gt;I keep one old mid-range phone from 2021 next to the current one, and the old device is the honest reviewer. It throttles earlier, it has less memory to hide sloppy allocations, and its GPU driver never saw the last three release notes.&lt;/p&gt;

&lt;p&gt;So the takeaway is unglamorous. Before touching a minimum SDK, open the crash reports sorted by OS version and match the test matrix to the telemetry instead of to a launch announcement.&lt;/p&gt;

&lt;p&gt;Two devices on the desk cost less than one angry review.&lt;/p&gt;

</description>
      <category>android</category>
      <category>mobile</category>
      <category>testing</category>
    </item>
    <item>
      <title>An AI Lab Published Science Results. Here Is What I Checked First</title>
      <dc:creator>Eka Putri</dc:creator>
      <pubDate>Sat, 31 Oct 2026 22:41:29 +0000</pubDate>
      <link>https://dev.to/ekaputri_game/an-ai-lab-published-science-results-here-is-what-i-checked-first-2blg</link>
      <guid>https://dev.to/ekaputri_game/an-ai-lab-published-science-results-here-is-what-i-checked-first-2blg</guid>
      <description>&lt;p&gt;Everyone in my feed read the announcement as a scoreboard: three results, one in maths, one in computer science, one in physics, plus a new arrangement for working with academic labs. I read it twice, then did what I normally do with a release note — I went looking for what is reproducible and what is only claimed.&lt;/p&gt;

&lt;p&gt;Two things stood out for me.&lt;/p&gt;

&lt;p&gt;First, the interesting part is not the headline result. It is the workflow around it. If a model can propose a candidate, the expensive work moves to verification: who runs the check, on what hardware, and how long until a second team repeats it. I have watched the same shift in code review now that tools generate patches. The bottleneck stops being "can we produce an answer" and becomes "can we trust the answer cheaply enough to ship."&lt;/p&gt;

&lt;p&gt;Second, the academic partnership may matter more than the three papers, if it turns out to be real. Shared compute and shared authorship sound generous. They also mean one lab's priorities quietly become the research agenda of everyone who depends on that compute. Worth watching which fields get picked first and which are left waiting.&lt;/p&gt;

&lt;p&gt;None of this makes the results fake. It just means the question for people who build things is boring and practical: what evidence would change my mind, and is that evidence reachable by someone outside the lab?&lt;/p&gt;

&lt;p&gt;That last part is the one I will keep checking in six months.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>career</category>
    </item>
    <item>
      <title>The Measurement I Kept Skipping</title>
      <dc:creator>Eka Putri</dc:creator>
      <pubDate>Sat, 31 Oct 2026 15:30:14 +0000</pubDate>
      <link>https://dev.to/ekaputri_game/the-measurement-i-kept-skipping-4nbd</link>
      <guid>https://dev.to/ekaputri_game/the-measurement-i-kept-skipping-4nbd</guid>
      <description>&lt;p&gt;For months my test notes had a gap I could not see: I always measured the device at the moment it looked most interesting. Right after a heavy scene, right after a long export, right after the thing that made me want to write something down.&lt;/p&gt;

&lt;p&gt;That instinct is exactly backwards. A reading taken at the peak tells you what the cooling system does under a spike. A reading taken ten minutes after the peak tells you what the device is actually like to hold.&lt;/p&gt;

&lt;p&gt;I switched to a fixed mark — twelve minutes after each scene ends, no exceptions — and the notes stopped being dramatic. They also stopped contradicting each other. Two sessions that used to read as "hot" and "fine" now read as 41 and 38, which is a difference I can explain rather than a mood I have to describe.&lt;/p&gt;

&lt;p&gt;The same move fixed battery notes. Instead of "drains fast", I write the percentage at the same two marks every session. One percent every eight minutes is ordinary. One percent every four minutes in the second half is a pattern, and in my case it was never the chip: it was the screen staying at full brightness on a page that never idled.&lt;/p&gt;

&lt;p&gt;None of this is clever. It is the least clever thing in my notebook. But it is the only part that survived contact with a second week of testing.&lt;/p&gt;

&lt;p&gt;If you are starting a log like this, pick the fixed mark before you start. Any mark will do. The discipline of the mark is the whole instrument.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>hardware</category>
      <category>notes</category>
    </item>
  </channel>
</rss>
