1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width"> 6 <meta name="keywords" content="ios, developer, swift, mobile development, tutorials, blog"/> 7 <meta name="description" content="Personal site of Filip NÄmeÄek with blog, selected projects, apps and more"/> 8 <meta name="subject" content="Blog about iOS & Swift, Django and some other stuff"> 9 <meta name="language" content="EN"> 10 <meta name="robots" content="index,follow"/> 11 <meta name="author" content="Filip NÄmeÄek"> 12 13 <link rel="alternate" title="RSS - Swift & iOS" href="/blog/feed/rss" type="application/rss+xml"> 14 <link rel="alternate" title="RSS - All" href="/blog/feed/all-rss" type="application/rss+xml"> 15 <link rel="alternate" title="RSS - Django" href="/blog/feed/django" type="application/rss+xml"> 16 17 <title> 18 19Blog | Filip NÄmeÄek 20 21 </title> 22 23 24 <link rel="stylesheet" type="text/css" href="/static/css/styles.690df6c3cdb1.css"> 25 26 27 28 <link rel="shortcut icon" type="image/png" href="/static/favicon.1533c9bfcf8d.ico"/> 29 30 31 32 33 34 35 <meta property="og:title" content="Filip NÄmeÄek | Personal site"> 36 <meta property="og:image" 37 content="https://nemecek.be/static/images/filip-nemecek-blog-personal-site-header.e826a3915b85.png"> 38 39 <meta name="description" 40 content="Personal site of Filip NÄmeÄek with blog, selected projects, apps and more"> 41 42 <meta property="og:description" 43 content="Personal site of Filip NÄmeÄek with blog, selected projects, apps and more"> 44 45 <meta property="og:url" content="https://nemecek.be"> 46 47 <meta name="twitter:card" content="summary_large_image"/> 48 <meta name="twitter:site" content="@nemecek_f"/> 49 <meta property="twitter:image" 50 content="https://nemecek.be/static/images/filip-nemecek-blog-personal-site-header.e826a3915b85.png"> 51 <meta name="twitter:title" content="Filip NÄmeÄek | Personal site"/> 52 <meta name="twitter:description" 53 content="Personal site of Filip NÄmeÄek with blog, selected projects, apps and more"/> 54 55 56 <link rel="stylesheet" type="text/css" href="/static/css/homepage.72dc86926f0d.css"> 57 58 59 60 <link rel="stylesheet" type="text/css" href="/static/css/dark_mode.6b69f8fdcf7a.css"> 61</head> 62<body> 63 64 65 66 67<div class="container"> 68 69 70 71 <section> 72 <div class="homepage-main-section"> 73 74 <div style="display: flex" class="homepage-header"> 75 <div class="homepage-photo-container"> 76 <div class="homepage-photo-text" style="opacity: 0;"> 77 <small>Wait! That's too close. I am an introvert..</small> 78 </div> 79 <img src="/static/images/websitePhoto.d60bed24e623.png" alt="My photo" class="homepage-photo"> 80 </div> 81 <div style="max-width: 380px" class="homepage-bio-container"> 82 <h1 style="margin-bottom: 0.3rem; margin-top: 10px">Filip NÄmeÄek</h1> 83 84 85 <p style="margin-top: 10px; margin-bottom: 5px">I am primarily an iOS developer, but I also 86 create stuff with Python 87 & 88 Django. 89 Feel 90 free to <a href="/pages/contact">reach out</a>.</p> 91 92 93 <span class="homepage-bio-links"> 94 <svg style="width: 11px; height: 11px" fill="currentColor" viewBox="0 0 20 20" 95 xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" 96 d="M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z" 97 clip-rule="evenodd"></path></svg> 98 <a rel="me" href="https://iosdev.space/@nemecek_f" target="_blank">Mastodon</a> ⢠99 <a rel="me" href="https://bsky.app/profile/nemecek-filip.bsky.social" target="_blank">Bluesky</a> ⢠100 <a href="https://github.com/nemecek-filip" target="_blank">GitHub</a> ⢠101 <a href="https://indiecatalog.app/developer/1291909818" target="_blank">Apps</a> 102 </span> 103 104 </div> 105 106 </div> 107 108 <div class="search-and-categories"> 109 <div class="mb-md"> 110 <form method="get" action="/search/" id="search-form"> 111 <input type="search" name="query" placeholder="Search blog posts, pages..." id="search-input" 112 class="textbox" required> 113 <input title="Search" value="Go" type="submit" class="button"> 114 115 </form> 116 </div> 117 118 119 <h4 class="categories-header text-secondary" style="margin-top: 15px;">Categories</h4> 120 121 <div class="badges-container categories-container"> 122 123 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 124 <span class="badge" 125 style="background-color:#f35736">Swift & iOS 126 127 (143) 128 129 </span> 130</a> 131 132 <a style="text-decoration: none" class="category-badge-container" href="/blog/django"> 133 <span class="badge" 134 style="background-color:#053321">Django 135 136 (24) 137 138 </span> 139</a> 140 141 <a style="text-decoration: none" class="category-badge-container" href="/blog/impresskit"> 142 <span class="badge" 143 style="background-color:#de2180">ImpressKit 144 145 (16) 146 147 </span> 148</a> 149 150 <a style="text-decoration: none" class="category-badge-container" href="/blog/projects"> 151 <span class="badge" 152 style="background-color:#224087">Projects 153 154 (11) 155 156 </span> 157</a> 158 159 <a style="text-decoration: none" class="category-badge-container" href="/blog/notable"> 160 <span class="badge" 161 >Notable 162 163 (6) 164 165 </span> 166</a> 167 168 <a style="text-decoration: none" class="category-badge-container" href="/blog/apps"> 169 <span class="badge" 170 >Apps 171 172 (5) 173 174 </span> 175</a> 176 177 <a style="text-decoration: none" class="category-badge-container" href="/blog/software"> 178 <span class="badge" 179 >Software 180 181 (2) 182 183 </span> 184</a> 185 186 187 <a style="text-decoration: none" class="category-badge-container" 188 href="/chats/"><span style="background-color: #404FBF" class="badge"><svg 189 style="width: 18px; height: 18px" class="badge-inline-icon" fill="none" stroke="white"
190 viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" 191 stroke-linejoin="round" 192 stroke-width="2" 193 d="M17 8h2a2 2 0 012 2v6a2 2 0 01-2 2h-2v4l-4-4H9a1.994 1.994 0 01-1.414-.586m0 0L11 14h4a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2v4l.586-.586z"></path></svg> 194 iOS Chats (23)</span> 195 </a> 196 197 </div> 198 199 </div> 200 201 </div> 202 203 <div style="clear: both"></div> 204 205 206 </section> 207 208 <section id="projectsSection" class="mt-xlg"> 209 <h2 class="mb-sm">Apps & projects</h2> 210 <section class="projects"> 211 <div class="project-card gamingbuddy"> 212 <h2 class="mt-0 header"><a class="nondecorated-link" target="_blank" 213 href="https://gamingbuddy.eu">GamingBuddy</a></h2> 214 215 <p>App for videogames discovery and tracking. Uses IGDB data and integrates OpenCritic.</p> 216 217 <a class="cta-button" target="_blank" href="https://apps.apple.com/app/game-widgets-get-hyped/id6447783408">App Store</a> 218 </div> 219 220 <div class="project-card switchbuddy"> 221 <h2 class="mt-0 header"><a class="nondecorated-link" target="_blank" 222 href="https://switchbuddy.app">SwitchBuddy</a></h2> 223 224 <p>Companion app for Nintendo Switch (2). Find new games, transfer screenshots from Switch 1 and more.</p> 225 226 <a class="cta-button" target="_blank" href="https://apps.apple.com/app/switchbuddy/id1563251210">App Store</a> 227 </div> 228 229 <div class="project-card impress-kit"> 230 <svg class="project-icon" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"> 231 <path fill-rule="evenodd" 232 d="M12 7a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0V8.414l-4.293 4.293a1 1 0 01-1.414 0L8 10.414l-4.293 4.293a1 1 0 01-1.414-1.414l5-5a1 1 0 011.414 0L11 10.586 14.586 7H12z" 233 clip-rule="evenodd"></path> 234 </svg> 235 236 <div> 237 238 <h2 class="mt-0 header"><a class="nondecorated-link" target="_blank" 239 href="https://nemecek.be/slink/impresskit-project"><span 240 style="color: var(--theme-color)">Impress</span>Kit</a></h2> 241 <p>The solution for all your Press Kit needs.</p> 242 <p>Get more press with nicely-done press kits. Manage press releases.</p> 243 </div> 244 245 246 <a class="cta-button" target="_blank" href="https://nemecek.be/slink/impresskit-project">I want Press Kit</a> 247 </div> 248 249 <div class="project-card ios-feeds"> 250 <div> 251 <h2 class="mt-0 header">iOS Feeds</h2> 252 <p>Keep up with content from iOS Dev community in a single place.</p> 253 <p>Articles, videos, podcasts & more.</p> 254 </div> 255 256 257 <a class="cta-button" target="_blank" href="https://nemecek.be/slink/ios-feeds-project">See community news</a> 258 </div> 259 260 <div class="project-card django-blogs"> 261 <div> 262 <h2 class="mt-0 header">Django Blogs</h2> 263 <p>Directory of Django bloggers.</p> 264 <p>Also used as source for <a target="_blank" href="https://djangofeeds.com">Django Feeds</a>.</p> 265 </div> 266 267 268 <a class="cta-button" target="_blank" href="https://nemecek.be/slink/django-blogs-project">Discover blogs</a> 269 </div> 270</section> 271 </section> 272 273 274 <section class="mt-xlg"> 275 <h2 style="margin-bottom: 10px">Don't miss</h2> 276 <section class="posts"> 277 278 279 <div class="post"> 280 <div class="post-inner"> 281 282 <p class="series-annotation">App promotion</p> 283 284 285 <h2 class="heading"><a href="/blog/214/new-friendly-place-to-share-updates-about-your-indie-apps">New friendly place to share updates about your indie apps</a></h2> 286 287 <p class="annotation text-secondary">Post on reddit without having your posts immediately removed.</p> 288 289 290 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 291 <span class="badge" 292 style="background-color:#f35736">Swift & iOS 293 294 </span> 295</a> 296 297 </div> 298</div> 299 300 <div class="post"> 301 <div class="post-inner"> 302 303 304 <h2 class="heading"><a href="/blog/208/getting-view-size-in-swiftui-without-geometryreader">Getting view size in SwiftUI without GeometryReader</a></h2> 305 306 <p class="annotation text-secondary">We can avoid GeometryReader now! New modifier supports iOS 16+.</p> 307 308 309 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 310 <span class="badge" 311 style="background-color:#f35736">Swift & iOS 312 313 </span> 314</a> 315 316 </div> 317</div> 318 319 <div class="post"> 320 <div class="post-inner"> 321 322 323 <h2 class="heading"><a href="/blog/206/how-to-support-tinted-home-screen-widgets-in-ios-18">
323How to support tinted home screen widgets in iOS 18</a></h2> 324 325 <p class="annotation text-secondary">Marking views to be rendered with colors, handling images and more.</p> 326 327 328 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 329 <span class="badge" 330 style="background-color:#f35736">Swift & iOS 331 332 </span> 333</a> 334 335 </div> 336</div> 337 338 <div class="post"> 339 <div class="post-inner"> 340 341 342 <h2 class="heading"><a href="/blog/205/my-experience-with-the-blinkist-trial-big-boost">My experience with the âBlinkist trialâ: Big boost</a></h2> 343 344 <p class="annotation text-secondary">Quite a lot higher trial start rate with lower conversion percentage.</p> 345 346 347 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 348 <span class="badge" 349 style="background-color:#f35736">Swift & iOS 350 351 </span> 352</a> 353 354 </div> 355</div> 356 357 <div class="post"> 358 <div class="post-inner"> 359 360 361 <h2 class="heading"><a href="/blog/203/impresskit-now-supports-table-of-contents">ImpressKit now supports table of contents</a></h2> 362 363 <p class="annotation text-secondary">I am happy to announce new Markdown-related improvement when creating Press Kits and Press Releases with ImpressKit.</p> 364 365 366 <a style="text-decoration: none" class="category-badge-container" href="/blog/impresskit"> 367 <span class="badge" 368 style="background-color:#de2180">ImpressKit 369 370 </span> 371</a> 372 373 </div> 374</div> 375 376 <div class="post"> 377 <div class="post-inner"> 378 379 380 <h2 class="heading"><a href="/blog/200/finding-games-without-remembering-the-name">Finding games without remembering the name</a></h2> 381 382 <p class="annotation text-secondary">Short intro to experimental projects I did over the weekend.</p> 383 384 385 <a style="text-decoration: none" class="category-badge-container" href="/blog/projects"> 386 <span class="badge" 387 style="background-color:#224087">Projects 388 389 </span> 390</a> 391 392 </div> 393</div> 394 395 <div class="post"> 396 <div class="post-inner"> 397 398 399 <h2 class="heading"><a href="/blog/192/hotfixing-widgets-for-ios-17-containerbackground-padding">Hotfixing widgets for iOS 17: containerBackground + padding</a></h2> 400 401 <p class="annotation text-secondary">How to fix the issue with background and extra padding.</p> 402 403 404 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 405 <span class="badge" 406 style="background-color:#f35736">Swift & iOS 407 408 </span> 409</a> 410 411 </div> 412</div> 413 414 <div class="post"> 415 <div class="post-inner"> 416 417 418 <h2 class="heading"><a href="/blog/191/impresskit-nominated-in-hacking-with-swift-swift-community-awards">ImpressKit nominated in Hacking with Swift: Swift Community Awards</a></h2> 419 420 <p class="annotation text-secondary">"Best Third-Party Service" ð¤¯ð¤¯ð¤¯</p> 421 422 423 <a style="text-decoration: none" class="category-badge-container" href="/blog/impresskit"> 424 <span class="badge" 425 style="background-color:#de2180">ImpressKit 426 427 </span> 428</a> 429 430 </div> 431</div> 432 433 <div class="post"> 434 <div class="post-inner"> 435 436 437 <h2 class="heading"><a href="/blog/189/wip-sharing-data-with-uiactivityviewcontroller-tips-tricks">Sharing data with UIActivityViewController - tips & tricks</a></h2> 438 439 <p class="annotation text-secondary">All the tips and tricks I have discovered so far. Better previews, subtitles. PNG via AirDrop & more.</p> 440 441 442 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 443 <span class="badge" 444 style="background-color:#f35736">Swift & iOS 445 446 </span> 447</a> 448 449 </div> 450</div> 451 452 <div class="post"> 453 <div class="post-inner"> 454 455 456 <h2 class="heading"><a href="/blog/186/the-weirdest-bugcrash-in-widgets">The weirdest bug/crash in widgets?</a></h2> 457 458 <p class="annotation text-secondary">Mysterious crash and ChatGPT to the rescue.</p> 459 460 461 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 462 <span class="badge" 463 style="background-color:#f35736">Swift & iOS 464 465 </span> 466</a> 467 468 </div> 469</div> 470 471 <div class="post"> 472 <div class="post-inner"> 473 474 475 <h2 class="heading"><a href="/blog/171/dynamic-island-and-live-activities-quick-start-tutorial">
475Dynamic Island (and Live Activities): Quick start tutorial</a></h2> 476 477 <p class="annotation text-secondary">All the steps you need to start creating your own Dynamic Island UIs!</p> 478 479 480 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 481 <span class="badge" 482 style="background-color:#f35736">Swift & iOS 483 484 </span> 485</a> 486 487 </div> 488</div> 489 490 <div class="post"> 491 <div class="post-inner"> 492 493 <p class="series-annotation">App promotion</p> 494 495 496 <h2 class="heading"><a href="/blog/129/places-you-can-promote-your-app-for-free">Where to promote your app for free? [2026 update]</a></h2> 497 498 <p class="annotation text-secondary">Without hoping that some journalist will write about it.</p> 499 500 501 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 502 <span class="badge" 503 style="background-color:#f35736">Swift & iOS 504 505 </span> 506</a> 507 508 </div> 509</div> 510 511 <div class="post"> 512 <div class="post-inner"> 513 514 515 <h2 class="heading"><a href="/blog/88/uimenu-comprehensive-guide">UIMenu: Comprehensive guide</a></h2> 516 517 <p class="annotation text-secondary">Learn how to use UIMenu to build modern UI. This tutorial shows basic example, how to add separator, how to work with submenus and more.</p> 518 519 520 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 521 <span class="badge" 522 style="background-color:#f35736">Swift & iOS 523 524 </span> 525</a> 526 527 </div> 528</div> 529 530 531 532</section> 533 </section> 534 535 536 537 538 <section> 539 <h2 class="mt-xlg" style="margin-bottom: 10px">Latest posts</h2> 540 <section class="posts"> 541 542 543 <div class="post"> 544 <div class="post-inner"> 545 546 <p class="series-annotation">App promotion</p> 547 548 549 <h2 class="heading"><a href="/blog/214/new-friendly-place-to-share-updates-about-your-indie-apps">New friendly place to share updates about your indie apps</a></h2> 550 551 <p class="annotation text-secondary">Post on reddit without having your posts immediately removed.</p> 552 553 554 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 555 <span class="badge" 556 style="background-color:#f35736">Swift & iOS 557 558 </span> 559</a> 560 561 </div> 562</div> 563 564 <div class="post"> 565 <div class="post-inner"> 566 567 568 <h2 class="heading"><a href="/blog/213/how-new-game-discovery-works-in-gamingbuddy">How new game discovery works in GamingBuddy</a></h2> 569 570 <p class="annotation text-secondary">GamingBuddy makes it easy to find new games to play if you like to try a variety of titles, but also donât follow video game news daily. In this post, I want to highlight some ways that the app helps.</p> 571 572 573 <a style="text-decoration: none" class="category-badge-container" href="/blog/apps"> 574 <span class="badge" 575 >Apps 576 577 </span> 578</a> 579 580 </div> 581</div> 582 583 <div class="post"> 584 <div class="post-inner"> 585 586 587 <h2 class="heading"><a href="/blog/212/solving-bots-registration-problem-by-reinventing-the-wheel">Solving bots registration problem by âreinventing the wheelâ</a></h2> 588 589 <p class="annotation text-secondary">Creating simple and custom âcaptchaâ that proved surprisingly useful.</p> 590 591 592 <a style="text-decoration: none" class="category-badge-container" href="/blog/django"> 593 <span class="badge" 594 style="background-color:#053321">Django 595 596 </span> 597</a> 598 599 </div> 600</div> 601 602 <div class="post"> 603 <div class="post-inner"> 604 605 606 <h2 class="heading"><a href="/blog/211/gamingbuddy-version-40-testflight-is-available">GamingBuddy version 4.0 TestFlight is available</a></h2> 607 608 <p class="annotation text-secondary">See what's new and how to get it.</p> 609 610 611 <a style="text-decoration: none" class="category-badge-container" href="/blog/apps"> 612 <span class="badge" 613 >Apps 614 615 </span> 616</a> 617 618 </div> 619</div> 620 621 <div class="post"> 622 <div class="post-inner"> 623 624 625 <h2 class="heading"><a href="/blog/210/how-i-almost-lost-my-ring-fit-adventure-save-data">How I almost lost my Ring Fit Adventure save data</a></h2> 626 627 <p class="annotation text-secondary">Fixed with one "weird trick".</p> 628 629 630 <a style="text-decoration: none" class="category-badge-container" href="/blog/gaming"> 631 <span class="badge" 632 >Gaming 633 634 </span> 635</a> 636 637 </div> 638</div> 639 640 <div class="post"> 641 <div class="post-inner"> 642 643 644 <h2 class="heading"><a href="/blog/209/swiftui-kfimage-notes">
644SwiftUI KFImage notes</a></h2> 645 646 <p class="annotation text-secondary">Just a few snippets to reference later when using Kingfisher library.</p> 647 648 649 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 650 <span class="badge" 651 style="background-color:#f35736">Swift & iOS 652 653 </span> 654</a> 655 656 </div> 657</div> 658 659 <div class="post"> 660 <div class="post-inner"> 661 662 663 <h2 class="heading"><a href="/blog/208/getting-view-size-in-swiftui-without-geometryreader">Getting view size in SwiftUI without GeometryReader</a></h2> 664 665 <p class="annotation text-secondary">We can avoid GeometryReader now! New modifier supports iOS 16+.</p> 666 667 668 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 669 <span class="badge" 670 style="background-color:#f35736">Swift & iOS 671 672 </span> 673</a> 674 675 </div> 676</div> 677 678 <div class="post"> 679 <div class="post-inner"> 680 681 682 <h2 class="heading"><a href="/blog/207/the-weirdest-core-data-crash-i-have-seen">The weirdest Core Data crash I have seen</a></h2> 683 684 <p class="annotation text-secondary">Careful how you name your attributes...</p> 685 686 687 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 688 <span class="badge" 689 style="background-color:#f35736">Swift & iOS 690 691 </span> 692</a> 693 694 </div> 695</div> 696 697 698 699</section> 700 </section> 701 702 <section class="mt-xlg"> 703 <h2 style="margin-bottom: 10px; margin-top: 5px">Explore posts by Series</h2> 704 705 <div class="badges-container"> 706 707 708 <a style="text-decoration: none" class="category-badge-container" 709 href="/blog/series/app-promotion"> 710 <span class="badge series-badge" 711 >App promotion <small>(19)</small></span> 712 </a> 713 714 <a style="text-decoration: none" class="category-badge-container" 715 href="/blog/series/building-saas"> 716 <span class="badge series-badge" 717 >Building SaaS <small>(2)</small></span> 718 </a> 719 720 <a style="text-decoration: none" class="category-badge-container" 721 href="/blog/series/cloudkit"> 722 <span class="badge series-badge" 723 >CloudKit <small>(2)</small></span> 724 </a> 725 726 <a style="text-decoration: none" class="category-badge-container" 727 href="/blog/series/codable"> 728 <span class="badge series-badge" 729 >Codable <small>(2)</small></span> 730 </a> 731 732 <a style="text-decoration: none" class="category-badge-container" 733 href="/blog/series/compositional-layout"> 734 <span class="badge series-badge" 735 >Compositional Layout <small>(15)</small></span> 736 </a> 737 738 <a style="text-decoration: none" class="category-badge-container" 739 href="/blog/series/core-data"> 740 <span class="badge series-badge" 741 >Core Data <small>(5)</small></span> 742 </a> 743 744 <a style="text-decoration: none" class="category-badge-container" 745 href="/blog/series/diffable"> 746 <span class="badge series-badge" 747 >Diffable <small>(4)</small></span> 748 </a> 749 750 <a style="text-decoration: none" class="category-badge-container" 751 href="/blog/series/django-gems"> 752 <span class="badge series-badge" 753 >Django Gems <small>(2)</small></span> 754 </a> 755 756 <a style="text-decoration: none" class="category-badge-container" 757 href="/blog/series/django-rest-framework">
758 <span class="badge series-badge" 759 >Django Rest Framework <small>(3)</small></span> 760 </a> 761 762 <a style="text-decoration: none" class="category-badge-container" 763 href="/blog/series/eventkit"> 764 <span class="badge series-badge" 765 >EventKit <small>(9)</small></span> 766 </a> 767 768 <a style="text-decoration: none" class="category-badge-container" 769 href="/blog/series/evolving-switchbuddy"> 770 <span class="badge series-badge" 771 >Evolving SwitchBuddy <small>(2)</small></span> 772 </a> 773 774 <a style="text-decoration: none" class="category-badge-container" 775 href="/blog/series/swiftui"> 776 <span class="badge series-badge" 777 >SwiftUI <small>(2)</small></span> 778 </a> 779 780 <a style="text-decoration: none" class="category-badge-container" 781 href="/blog/series/useful-tools"> 782 <span class="badge series-badge" 783 >Useful tools <small>(2)</small></span> 784 </a> 785 786 <a style="text-decoration: none" class="category-badge-container" 787 href="/blog/series/wkwebview"> 788 <span class="badge series-badge" 789 >WKWebView <small>(4)</small></span> 790 </a> 791 792 <a style="text-decoration: none" class="category-badge-container" 793 href="/blog/series/wwdc-2020"> 794 <span class="badge series-badge" 795 >WWDC 2020 <small>(3)</small></span> 796 </a> 797 798 <a style="text-decoration: none" class="category-badge-container" 799 href="/blog/series/wwdc-21"> 800 <span class="badge series-badge" 801 >WWDC 21 <small>(6)</small></span> 802 </a> 803 804 <a style="text-decoration: none" class="category-badge-container" 805 href="/blog/series/wwdc-22"> 806 <span class="badge series-badge" 807 >WWDC 22 <small>(3)</small></span> 808 </a> 809 810 811 812 <a style="text-decoration: none" class="category-badge-container" 813 href="/blog/series/"> 814 <span class="badge series-badge" 815 >All series</span> 816 </a> 817 818 819 </div> 820 </section> 821 822 823 824 <article> 825 <h2 class="cards-padding" style="margin-bottom: 5px">More posts</h2> 826 <section class="posts"> 827 828 829 <div class="post"> 830 <div class="post-inner"> 831 832 833 <h2 class="heading"><a href="/blog/206/how-to-support-tinted-home-screen-widgets-in-ios-18">How to support tinted home screen widgets in iOS 18</a></h2> 834 835 <p class="annotation text-secondary">Marking views to be rendered with colors, handling images and more.</p> 836 837 838 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 839 <span class="badge" 840 style="background-color:#f35736">Swift & iOS 841 842 </span> 843</a> 844 845 </div> 846</div> 847 848 <div class="post"> 849 <div class="post-inner"> 850 851 852 <h2 class="heading"><a href="/blog/205/my-experience-with-the-blinkist-trial-big-boost">My experience with the âBlinkist trialâ: Big boost</a></h2> 853 854 <p class="annotation text-secondary">Quite a lot higher trial start rate with lower conversion percentage.</p> 855 856 857 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 858 <span class="badge" 859 style="background-color:#f35736">Swift & iOS 860 861 </span> 862</a> 863 864 </div> 865</div> 866 867 <div class="post"> 868 <div class="post-inner"> 869 870 871 <h2 class="heading"><a href="/blog/204/fixing-glossy-keys-on-my-macbook">Fixing âglossyâ keys on my MacBook</a></h2> 872 873 <p class="annotation text-secondary">The problem and two solutions that I have tried.</p> 874 875 876 <a style="text-decoration: none" class="category-badge-container" href="/blog/hardware"> 877 <span class="badge" 878 >Hardware 879 880 </span> 881</a> 882 883 </div> 884</div> 885 886 <div class="post"> 887 <div class="post-inner"> 888 889 890 <h2 class="heading"><a href="/blog/203/impresskit-now-supports-table-of-contents">ImpressKit now supports table of contents</a></h2> 891 892 <p class="annotation text-secondary">I am happy to announce new Markdown-related improvement when creating Press Kits and Press Releases with ImpressKit.</p> 893 894 895 <a style="text-decoration: none" class="category-badge-container" href="/blog/impresskit"> 896 <span class="badge" 897 style="background-color:#de2180">ImpressKit 898 899 </span> 900</a> 901 902 </div> 903</div> 904 905 <div class="post"> 906 <div class="post-inner"> 907 908 <p class="series-annotation">SwiftUI</p> 909 910 911 <h2 class="heading"><a href="/blog/202/fixing-weird-shadow-animation-glitch-in-swiftui">Fixing weird shadow animation glitch in SwiftUI</a></h2> 912 913 <p class="annotation text-secondary">My âglowâ animation started going wrong when switching tabs in a tab bar.</p> 914 915 916 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 917 <span class="badge" 918 style="background-color:#f35736">Swift & iOS 919 920 </span> 921</a> 922 923 </div> 924</div> 925 926 <div class="post"> 927 <div class="post-inner"> 928 929 930 <h2 class="heading"><a href="/blog/201/how-to-update-widgets-for-standby-mode">How to update widgets for StandBy mode</a></h2> 931 932 <p class="annotation text-secondary">Short blog post about supporting StandBy mode introduced in iOS 17.</p> 933 934 935 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 936 <span class="badge" 937 style="background-color:#f35736">Swift & iOS 938 939 </span> 940</a> 941 942 </div> 943</div> 944 945 <div class="post"> 946 <div class="post-inner"> 947 948 949 <h2 class="heading"><a href="/blog/200/finding-games-without-remembering-the-name">Finding games without remembering the name</a></h2> 950 951 <p class="annotation text-secondary">Short intro to experimental projects I did over the weekend.</p> 952 953 954 <a style="text-decoration: none" class="category-badge-container" href="/blog/projects"> 955 <span class="badge" 956 style="background-color:#224087">Projects 957 958 </span> 959</a> 960 961 </div> 962</div> 963 964 <div class="post"> 965 <div class="post-inner"> 966 967 <p class="series-annotation">App promotion</p> 968 969 970 <h2 class="heading"><a href="/blog/199/exploring-seo-route-for-apps-promotion">Exploring âSEOâ route for apps promotion</a></h2> 971 972 <p class="annotation text-secondary"></p> 973 974 975 <a style="text-decoration: none" class="category-badge-container" href="/blog/apps"> 976 <span class="badge" 977 >Apps 978 979 </span> 980</a> 981 982 </div> 983</div> 984 985 <div class="post"> 986 <div class="post-inner"> 987 988 989 <h2 class="heading"><a href="/blog/198/my-appearance-on-the-django-chat-podcast">My appearance on the Django Chat podcast</a></h2> 990 991 <p class="annotation text-secondary"></p> 992 993 994 <a style="text-decoration: none" class="category-badge-container" href="/blog/django"> 995 <span class="badge" 996 style="background-color:#053321">Django 997 998 </span> 999</a> 1000 1001 </div> 1002</div> 1003 1004 <div class="post"> 1005 <div class="post-inner"> 1006 1007 1008 <h2 class="heading"><a href="/blog/197/impresskit-now-offers-analytics-with-telemetrydeck-integration">ImpressKit now offers analytics with TelemetryDeck integration</a></h2> 1009 1010 <p class="annotation text-secondary"></p> 1011 1012 1013 <a style="text-decoration: none" class="category-badge-container" href="/blog/impresskit"> 1014 <span class="badge" 1015 style="background-color:#de2180">ImpressKit 1016 1017 </span> 1018</a> 1019 1020 </div> 1021</div> 1022 1023 <div class="post"> 1024 <div class="post-inner"> 1025 1026 1027 <h2 class="heading"><a href="/blog/196/pr-gamingbuddy-adds-sharing-powered-by-universal-links-opencritic-integration">[PR] GamingBuddy adds sharing powered by Universal Links, OpenCritic integration</a></h2> 1028 1029 <p class="annotation text-secondary">New version 1.5.0 of game discovery app GamingBuddy lets users easily share game recommendations with friends. Plus, it features OpenCritic to see scores and reviews for new games easily.</p> 1030 1031 1032 <a style="text-decoration: none" class="category-badge-container" href="/blog/apps"> 1033 <span class="badge" 1034 >Apps 1035 1036 </span> 1037</a> 1038 1039 </div> 1040</div> 1041 1042 <div class="post"> 1043 <div class="post-inner"> 1044 1045 <p class="series-annotation">UX Diary</p> 1046 1047 1048 <h2 class="heading"><a href="/blog/195/ux-diary-onboarding-without-onboarding">UX Diary: Onboarding without onboarding</a></h2> 1049 1050 <p class="annotation text-secondary">About an approach I took in "GameWidgets" to better onboarding users into the app.</p> 1051 1052 1053 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 1054 <span class="badge" 1055 style="background-color:#f35736">Swift & iOS 1056 1057 </span> 1058</a> 1059 1060 </div> 1061</div> 1062 1063 <div class="post"> 1064 <div class="post-inner"> 1065 1066 1067 <h2 class="heading"><a href="/blog/194/impresskit-not-supports-markdown-tables">ImpressKit now supports Markdown tables</a></h2> 1068 1069 <p class="annotation text-secondary">You can now make your Press Kits even clearer for journalists.</p> 1070 1071 1072 <a style="text-decoration: none" class="category-badge-container" href="/blog/impresskit"> 1073 <span class="badge" 1074 style="background-color:#de2180">ImpressKit 1075 1076 </span> 1077</a> 1078 1079 </div> 1080</div> 1081 1082 <div class="post"> 1083 <div class="post-inner"> 1084 1085 1086 <h2 class="heading"><a href="/blog/193/switchbuddy-updated-with-game-prices-tracking-notifications-lock-screen-widgets">SwitchBuddy updated with game prices tracking, notifications, Lock Screen widgets</a></h2> 1087 1088 <p class="annotation text-secondary">A brief overview of the new features.</p> 1089 1090 1091 <a style="text-decoration: none" class="category-badge-container" href="/blog/apps"> 1092 <span class="badge" 1093 >Apps 1094 1095 </span> 1096</a> 1097 1098 </div> 1099</div> 1100 1101 <div class="post"> 1102 <div class="post-inner"> 1103 1104 1105 <h2 class="heading"><a href="/blog/192/hotfixing-widgets-for-ios-17-containerbackground-padding">
1105Hotfixing widgets for iOS 17: containerBackground + padding</a></h2> 1106 1107 <p class="annotation text-secondary">How to fix the issue with background and extra padding.</p> 1108 1109 1110 <a style="text-decoration: none" class="category-badge-container" href="/blog/swift-and-ios"> 1111 <span class="badge" 1112 style="background-color:#f35736">Swift & iOS 1113 1114 </span> 1115</a> 1116 1117 </div> 1118</div> 1119 1120 <div class="post"> 1121 <div class="post-inner"> 1122 1123 1124 <h2 class="heading"><a href="/blog/191/impresskit-nominated-in-hacking-with-swift-swift-community-awards">ImpressKit nominated in Hacking with Swift: Swift Community Awards</a></h2> 1125 1126 <p class="annotation text-secondary">"Best Third-Party Service" ð¤¯ð¤¯ð¤¯</p> 1127 1128 1129 <a style="text-decoration: none" class="category-badge-container" href="/blog/impresskit"> 1130 <span class="badge" 1131 style="background-color:#de2180">ImpressKit 1132 1133 </span> 1134</a> 1135 1136 </div> 1137</div> 1138 1139 <div class="post"> 1140 <div class="post-inner"> 1141 1142 1143 <h2 class="heading"><a href="/blog/190/how-impresskit-helps-you-avoid-common-press-kit-mistakes">How ImpressKit helps you avoid common Press Kit mistakes</a></h2> 1144 1145 <p class="annotation text-secondary">Focus on what truly matters for a great press kit.</p> 1146 1147 1148 <a style="text-decoration: none" class="category-badge-container" href="/blog/impresskit"> 1149 <span class="badge" 1150 style="background-color:#de2180">ImpressKit 1151 1152 </span> 1153</a> 1154 1155 </div> 1156</div> 1157 1158 1159 1160</section> 1161 </article> 1162 1163 1164 1165
1165<script src="/static/js/homepage.28dd2894b5f1.js"></script>
1165 1166 1167</div> 1168 1169 1170 1171 <footer> 1172 <a href="/blog/feed/rss" target="_blank">RSS <small>(iOS)</small></a> 1173 <span class="bullet-separator">â¢</span> 1174 <a href="/blog/feed/all-rss" target="_blank">RSS <small>(all)</small></a> 1175 <span class="bullet-separator">â¢</span> 1176 <a href="/blog/feed/django" target="_blank">RSS <small>(Django)</small></a> 1177 <span class="bullet-separator">â¢</span> 1178 <a href="/sitemap" target="_blank">Sitemap</a> 1179 </footer> 1180 1181
1182<script defer 1183 src="https://cdn.telemetrydeck.com/websdk/telemetrydeck.min.js" 1184 data-app-id="E6071C24-30CF-4FBF-9E6F-942FEDDEED35" 1185></script>
1185 1186 1187</body> 1188</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.