41554 blogs · [ { "id": "01a0871d-cb2c-70b0-9aa2-1d1aebcdc41a", "title": "Voronoi Fragmentation of a Mesh", "url": "https://www.4rknova.com/blog/2026/07/27/voronoi-fracture", "published_at": "2026-07-26T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1aebf42fab", "title": "A field guide to rendering: from triangles to Gaussians", "url": "https://www.4rknova.com/blog/2026/07/19/a-field-guide-to-rendering", "published_at": "2026-07-18T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1aec66a1de", "title": "A minimal Wolfenstein 3D raycasting engine", "url": "https://www.4rknova.com/blog/2026/07/06/wolfenstein-3d-raycasting", "published_at": "2026-07-05T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1aed42bf44", "title": "Building a Hamiltonian path puzzle", "url": "https://www.4rknova.com/blog/2026/04/24/number-trail", "published_at": "2026-04-23T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1aee1ab2c0", "title": "Haversine Distance", "url": "https://www.4rknova.com/blog/2026/04/19/haversine-distance", "published_at": "2026-04-18T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1aee9c8ece", "title": "Pale Blue Dot", "url": "https://www.4rknova.com/blog/2026/04/17/pale-blue-dot", "published_at": "2026-04-16T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1aef0bf093", "title": "The Gaia Database", "url": "https://www.4rknova.com/blog/2026/03/05/gaia-database-intro", "published_at": "2026-03-05T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1aef3b2fc5", "title": "Mulberry32: A Tiny, Fast, Deterministic RNG", "url": "https://www.4rknova.com/blog/2026/03/01/mulberry32-rng", "published_at": "2026-03-01T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af03a1bd8", "title": "Reaction-Diffusion: Gray-Scott on a 2D Grid", "url": "https://www.4rknova.com/blog/2026/02/15/reaction-diffusion", "published_at": "2026-02-15T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af0491a4c", "title": "Raindrops on a puddle", "url": "https://www.4rknova.com/blog/2026/02/08/raindrops-on-puddle", "published_at": "2026-02-08T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af09805fe", "title": "Game Boy port of Snake in Assembly", "url": "https://www.4rknova.com/blog/2026/02/01/gb-snake", "published_at": "2026-02-01T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af111a0ca", "title": "A Universe Without Time", "url": "https://www.4rknova.com/blog/2026/01/25/barbour-timeless-universe", "published_at": "2026-01-25T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af16ee394", "title": "Seestar ALP Launcher", "url": "https://www.4rknova.com/blog/2026/01/18/seestar-alp-debian", "published_at": "2026-01-18T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af1756880", "title": "A Guide to using the useEffect hook in React", "url": "https://www.4rknova.com/blog/2026/01/17/react-useeffect", "published_at": "2026-01-17T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af1e40243", "title": "RTSP camera streaming with Raspberry-Pi Zero 2", "url": "https://www.4rknova.com/blog/2026/01/11/rtsp-rpi", "published_at": "2026-01-11T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af1f309ee", "title": "ASCII Fire", "url": "https://www.4rknova.com/blog/2025/11/01/ascii-fire", "published_at": "2025-11-01T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af26edd66", "title": "Ray marching a blob", "url": "https://www.4rknova.com/blog/2025/09/21/blob-3d", "published_at": "2025-09-20T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af2e5c94e", "title": "Random Mutation Hill Climbing (RMHC)", "url": "https://www.4rknova.com/blog/2025/09/20/rmhc", "published_at": "2025-09-19T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af3ce3457", "title": "Triple Buffering in Rendering APIs", "url": "https://www.4rknova.com/blog/2025/09/12/triple-buffering", "published_at": "2025-09-11T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af4506ff9", "title": "Rendering the Mandelbulb", "url": "https://www.4rknova.com/blog/2025/09/01/mandelbulb", "published_at": "2025-08-31T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af50f764e", "title": "Implementing a foil sticker effect", "url": "https://www.4rknova.com/blog/2025/08/30/foil-sticker", "published_at": "2025-08-29T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af536d988", "title": "Redshift: The Cosmic Fingerprint of Light in Motion", "url": "https://www.4rknova.com/blog/2025/08/15/red-shift", "published_at": "2025-08-14T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af61ebe06", "title": "Polaris: The Celestial Anchor of the North", "url": "https://www.4rknova.com/blog/2025/08/11/polaris", "published_at": "2025-08-10T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af64aca5d", "title": "Understanding Unity’s Render Pipelines", "url": "https://www.4rknova.com/blog/2025/08/04/unity-render-pipelines", "published_at": "2025-08-03T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af6a090ed", "title": "The Andromeda Paradox", "url": "https://www.4rknova.com/blog/2025/08/01/andromeda-paradox", "published_at": "2025-07-31T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af768454a", "title": "NGC6960: The Veil Nebula", "url": "https://www.4rknova.com/blog/2025/07/16/astro-ngc6960", "published_at": "2025-07-15T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af83f1eb4", "title": "A condensed guide to React hooks", "url": "https://www.4rknova.com/blog/2025/06/30/react-hooks", "published_at": "2025-06-29T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af90ca2ae", "title": "Simulating the Seestar S50 in Stellarium", "url": "https://www.4rknova.com/blog/2025/06/29/seestar-s50-stellarium", "published_at": "2025-06-28T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1af99a6dcf", "title": "The MRS Fractal: Mirror, Rotate, Scale", "url": "https://www.4rknova.com/blog/2025/06/22/mrs-fractal", "published_at": "2025-06-21T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1afa842d74", "title": "Reviving the classic RTS “Z” with DOSBox", "url": "https://www.4rknova.com/blog/2025/06/15/dos-game-z", "published_at": "2025-06-14T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1afa8e2803", "title": "Generating audio transcripts", "url": "https://www.4rknova.com/blog/2025/04/05/audio-transcripts", "published_at": "2025-04-04T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1afaef5a47", "title": "Game Frame Breakdown Articles", "url": "https://www.4rknova.com/blog/2025/02/20/frame-breakdown-articles", "published_at": "2025-02-20T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1afb0b32ea", "title": "Implementing a todo app, Part 1: The Backend", "url": "https://www.4rknova.com/blog/2025/01/22/todo-app-backend", "published_at": "2025-01-22T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1afb946204", "title": "Speech synthesis for web applications", "url": "https://www.4rknova.com/blog/2025/01/16/speech-synthesis", "published_at": "2025-01-16T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1afbaa26c5", "title": "Gameboy Development, Part 1: Hello World!", "url": "https://www.4rknova.com/blog/2023/08/06/gb-dev-pt-1", "published_at": "2023-08-05T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1afbe9c556", "title": "Working with encrypted file archives", "url": "https://www.4rknova.com/blog/2023/07/01/encrypted-archives", "published_at": "2023-06-30T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1afc1d6c1c", "title": "ZEXMTE BT-506 in Debian", "url": "https://www.4rknova.com/blog/2023/04/22/zexmte-bluetooth-debian", "published_at": "2023-04-21T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1afcadd54e", "title": "Notifications Using Telegram", "url": "https://www.4rknova.com/blog/2023/04/05/telegram-notifications", "published_at": "2023-04-04T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1afd9b1730", "title": "Docker in Debian", "url": "https://www.4rknova.com/blog/2023/03/15/docker-debian", "published_at": "2023-03-15T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1afe00c21f", "title": "Getting creative with asciimg", "url": "https://www.4rknova.com/blog/2023/02/28/asciimg-slideshows", "published_at": "2023-02-28T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1afe176159", "title": "Lossy Compression of Unsigned Float Numbers", "url": "https://www.4rknova.com/blog/2023/01/15/float-compression", "published_at": "2023-01-15T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1afeeacb72", "title": "Shadow Mapping", "url": "https://www.4rknova.com/blog/2022/10/04/shadow-mapping", "published_at": "2022-10-03T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1affe22590", "title": "Peripage bluetooth printing via the terminal", "url": "https://www.4rknova.com/blog/2022/09/03/cli-print-peripage", "published_at": "2022-09-02T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0074213c", "title": "Using Yubikey FIDO2 to login in Debian/GDM", "url": "https://www.4rknova.com/blog/2022/09/02/yubikey-login", "published_at": "2022-09-01T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b015e2252", "title": "Intel's Panel Self Refresh (PSR) Feature", "url": "https://www.4rknova.com/blog/2022/09/01/intel-panel-self-refresh", "published_at": "2022-08-31T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b01cddaaa", "title": "Midjourney", "url": "https://www.4rknova.com/blog/2022/08/07/midjourney", "published_at": "2022-08-06T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b01df6b24", "title": "Brachiograph plotter", "url": "https://www.4rknova.com/blog/2022/05/02/brachiograph", "published_at": "2022-05-01T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b02c6afec", "title": "Normal Map Blending", "url": "https://www.4rknova.com/blog/2021/09/19/normal-blending", "published_at": "2021-09-18T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b03384407", "title": "Notes on Unreal Engine 5, Nanite", "url": "https://www.4rknova.com/blog/2021/06/09/unreal-5-nanite", "published_at": "2021-06-08T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b03879b03", "title": "Reviving old software to run on a modern machine", "url": "https://www.4rknova.com/blog/2021/04/12/reviving-old-software", "published_at": "2021-04-11T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0423b6f0", "title": "Creating floppy disk images in Linux", "url": "https://www.4rknova.com/blog/2021/03/24/creating-floppy-disk-images", "published_at": "2021-03-24T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b05127554", "title": "The De Moivre theorem", "url": "https://www.4rknova.com/blog/2020/06/25/demoivre", "published_at": "2020-06-24T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b05f51438", "title": "Macro-Photography with a Mobile Phone (Part 2)", "url": "https://www.4rknova.com/blog/2020/06/15/macro-photos-pt2", "published_at": "2020-06-14T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b06738ccc", "title": "Macro-Photography using a Mobile Phone", "url": "https://www.4rknova.com/blog/2020/06/14/macro-photos", "published_at": "2020-06-13T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b06f6e51b", "title": "Classic Demo Effects, Twister", "url": "https://www.4rknova.com/blog/2020/04/21/twister-effect", "published_at": "2020-04-20T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b07c2fa20", "title": "Irradiance, Spherical Harmonics", "url": "https://www.4rknova.com/blog/2020/03/03/spherical-harmonics", "published_at": "2020-03-03T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b07fcb3cd", "title": "Irradiance, Ambient Cube", "url": "https://www.4rknova.com/blog/2020/01/29/ambient-cubes", "published_at": "2020-01-29T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0884202e", "title": "Generative art", "url": "https://www.4rknova.com/blog/2019/08/08/generative-art", "published_at": "2019-08-07T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b08b514b5", "title": "Full Screen Pass Without Explicit Geometry", "url": "https://www.4rknova.com/blog/2019/03/21/full-screen-pass-without-explicit-geometry", "published_at": "2019-03-21T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b09a41a02", "title": "Elementary Cellular Automaton, Rule 126", "url": "https://www.4rknova.com/blog/2019/03/18/elementary-cell-auto-rule-126", "published_at": "2019-03-18T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0a1358f0", "title": "Classic Demo Effects, Fire", "url": "https://www.4rknova.com/blog/2019/03/17/fire-effect", "published_at": "2019-03-17T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0a8959b5", "title": "OpenGL Geometry", "url": "https://www.4rknova.com/blog/2019/03/11/opengl-geometry", "published_at": "2019-03-11T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0b5eebfd", "title": "Half-Space Test", "url": "https://www.4rknova.com/blog/2019/03/09/half-space-test", "published_at": "2019-03-09T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0b5efca4", "title": "Distributed Ray-Tracing", "url": "https://www.4rknova.com/blog/2019/02/24/distributed-raytracing", "published_at": "2019-02-24T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0bd26aac", "title": "Historical Computer Generated Animations", "url": "https://www.4rknova.com/blog/2018/12/01/animation-videos", "published_at": "2018-12-01T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0c6c3501", "title": "Lindenmayer Systems", "url": "https://www.4rknova.com/blog/2018/11/14/lindenmayer-systems", "published_at": "2018-11-14T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0c925e2f", "title": "Interpolation Methods", "url": "https://www.4rknova.com/blog/2018/11/14/interpolation-methods", "published_at": "2018-11-14T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0cd7f30f", "title": "Optical Illusions, Lightness Constancy", "url": "https://www.4rknova.com/blog/2018/11/14/illusions-lightness-constancy", "published_at": "2018-11-14T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0d10ec7e", "title": "BTRFS, Quick Start", "url": "https://www.4rknova.com/blog/2018/10/27/btrfs", "published_at": "2018-10-26T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0e045f1d", "title": "Useful Functions for Graphics", "url": "https://www.4rknova.com/blog/2018/07/09/01-useful-functions", "published_at": "2018-07-08T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0ea275b2", "title": "Generating Stereo Anaglyphs with ImageMagick", "url": "https://www.4rknova.com/blog/2018/07/08/stereo-anaglyphs", "published_at": "2018-07-07T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0efe4c4d", "title": "Raytracing, Ray-Plane Testing", "url": "https://www.4rknova.com/blog/2018/01/01/raytracing-ray-plane-testing", "published_at": "2018-01-01T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0f1aa14c", "title": "Sampling a Disk, Vogel's Method", "url": "https://www.4rknova.com/blog/2017/01/01/vogel", "published_at": "2017-01-01T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b0ffad2ef", "title": "Visibility Culling", "url": "https://www.4rknova.com/blog/2017/01/01/visibility-culling", "published_at": "2017-01-01T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b10a81d0a", "title": "Sprite Encoding / Decoding Using Literals", "url": "https://www.4rknova.com/blog/2017/01/01/sprite-encoding", "published_at": "2017-01-01T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b10bc23ac", "title": "Edge Detection Using the Sobel Operator", "url": "https://www.4rknova.com/blog/2017/01/01/sobel", "published_at": "2017-01-01T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b10d6c518", "title": "Matrices: From Linear Algebra to Graphics", "url": "https://www.4rknova.com/blog/2017/01/01/matrix-xforms", "published_at": "2017-01-01T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b116b5b65", "title": "Color Grading, An Artist Driven Approach", "url": "https://www.4rknova.com/blog/2017/01/01/color-grading", "published_at": "2017-01-01T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b11752335", "title": "Plasma Effect", "url": "https://www.4rknova.com/blog/2016/11/01/plasma", "published_at": "2016-11-01T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b119b4780", "title": "Law of Reflection", "url": "https://www.4rknova.com/blog/2016/01/01/law-of-reflection", "published_at": "2016-01-01T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b1236f85a", "title": "PostFX, Pixelize", "url": "https://www.4rknova.com/blog/2015/07/06/fx-pixelize", "published_at": "2015-07-05T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b12440951", "title": "Anti-Aliasing, FXAA", "url": "https://www.4rknova.com/blog/2015/02/15/fxaa", "published_at": "2015-02-15T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b12843780", "title": "NCF, A Minimalistic Meta-Language", "url": "https://www.4rknova.com/blog/2015/01/13/ncf", "published_at": "2015-01-13T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b12d9cc1d", "title": "Metaballs", "url": "https://www.4rknova.com/blog/2014/01/27/metaballs", "published_at": "2014-01-27T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b1346be0a", "title": "Pseudo 3D Tunnel Effect", "url": "https://www.4rknova.com/blog/2014/01/26/pseudo-3d-tunnel", "published_at": "2014-01-26T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b14304fb0", "title": "From Geometric to Coordinate Form: Understanding the Dot Product", "url": "https://www.4rknova.com/blog/2013/05/03/dot-product", "published_at": "2013-05-02T23:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b15056e81", "title": "Conway's Game of Life", "url": "https://www.4rknova.com/blog/2013/01/27/game-of-life", "published_at": "2013-01-27T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b15ffe503", "title": "Fractals, Mandelbrot & Julia Sets", "url": "https://www.4rknova.com/blog/2013/01/27/fractals-mandelbrot", "published_at": "2013-01-27T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b16c49576", "title": "C/C++ Embedded Files", "url": "https://www.4rknova.com/blog/2013/01/27/cpp-embedded-files", "published_at": "2013-01-27T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b170db870", "title": "Primus Under Debian/Sid", "url": "https://www.4rknova.com/blog/2012/12/07/primus", "published_at": "2012-12-07T00:00:00+00:00" }, { "id": "01a0871d-cb2c-70b0-9aa2-1d1b17e08745", "title": "GNU Make, Parallel Processing", "url": "https://www.4rknova.com/blog/2012/11/28/make", "published_at": "2012-11-28T00:00:00+00:00" } ] posts Claim your blog
Back to 4rknova.com
Blog · corpus.blog/blogs/4rknova.com/posts

4rknova.com

4rknova.com

2026

2025

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012