41554 blogs · [ { "id": "01a08219-c914-70e7-bc7e-55ec50beef78", "title": "Ten Years of D3D12", "url": "https://therealmjp.github.io/posts/ten-years-of-d3d12/", "published_at": "2025-09-07T00:00:00+00:00" }, { "id": "01a08219-c914-70e7-bc7e-55ec5109ba90", "title": "To Early-Z, or Not To Early-Z", "url": "https://therealmjp.github.io/posts/to-earlyz-or-not-to-earlyz/", "published_at": "2025-04-13T00:00:00+00:00" }, { "id": "01a08219-c914-70e7-bc7e-55ec519aec6f", "title": "Shader Printf in HLSL and DX12", "url": "https://therealmjp.github.io/posts/hlsl-printf/", "published_at": "2024-01-07T00:00:00+00:00" }, { "id": "01a08219-c914-70e7-bc7e-55ec522c211e", "title": "GPU Memory Pools in D3D12", "url": "https://therealmjp.github.io/posts/gpu-memory-pool/", "published_at": "2022-07-31T00:00:00+00:00" }, { "id": "01a08219-c914-70e7-bc7e-55ec52eae449", "title": "The Shader Permutation Problem - Part 1: How Did We Get Here?", "url": "https://therealmjp.github.io/posts/shader-permutations-part1/", "published_at": "2021-10-11T00:00:00+00:00" }, { "id": "01a08219-c914-70e7-bc7e-55ec53a64c24", "title": "The Shader Permutation Problem - Part 2: How Do We Fix It?", "url": "https://therealmjp.github.io/posts/shader-permutations-part2/", "published_at": "2021-10-11T00:00:00+00:00" }, { "id": "01a08219-c914-70e7-bc7e-55ec53ae3b0e", "title": "Linking DXIL Binaries Using DXC", "url": "https://therealmjp.github.io/posts/dxil-linking/", "published_at": "2021-10-05T00:00:00+00:00" }, { "id": "01a08219-c914-70e7-bc7e-55ec54494687", "title": "Read My Chapter in Ray Tracing Gems II!", "url": "https://therealmjp.github.io/posts/rtg2-bindless/", "published_at": "2021-08-22T00:00:00+00:00" }, { "id": "01a08219-c914-70e7-bc7e-55ec54aba9cd", "title": "Approximating Subsurface Scattering With Spherical Gaussians", "url": "https://therealmjp.github.io/posts/sss-sg/", "published_at": "2020-02-09T00:00:00+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d734e518d4", "title": "An Introduction To Real-Time Subsurface Scattering", "url": "https://therealmjp.github.io/posts/sss-intro/", "published_at": "2019-10-06T00:00:00+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73526a207", "title": "Half The Precision, Twice The Fun: Working With FP16 In HLSL", "url": "https://therealmjp.github.io/posts/shader-fp16/", "published_at": "2019-10-01T00:00:00+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d735f4e1fb", "title": "Hello, Hugo", "url": "https://therealmjp.github.io/posts/hello-hugo/", "published_at": "2019-08-12T00:00:00+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73688a6c1", "title": "Publications", "url": "https://therealmjp.github.io/publications/", "published_at": "2019-08-10T00:00:00+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7375cac50", "title": "About This Site", "url": "https://therealmjp.github.io/about/", "published_at": "2019-07-20T00:00:00+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73857e684", "title": "Adventures in Retro Development: SNES Edition", "url": "https://therealmjp.github.io/posts/adventures-in-retro-development-snes-edition/", "published_at": "2019-01-15T05:36:42+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7386b6e99", "title": "Breaking Down Barriers - Part 6: Experimenting With Overlap and Preemption", "url": "https://therealmjp.github.io/posts/breaking-down-barriers-part-6-experimenting-with-overlap-and-preemption/", "published_at": "2018-12-10T02:01:27+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d739139ba9", "title": "Breaking Down Barriers – Part 5: Back To The Real World", "url": "https://therealmjp.github.io/posts/breaking-down-barriers-part-5-back-to-the-real-world/", "published_at": "2018-09-09T00:48:18+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73990b0e1", "title": "Breaking Down Barriers - Part 4: GPU Preemption", "url": "https://therealmjp.github.io/posts/breaking-down-barriers-part-4-gpu-preemption/", "published_at": "2018-07-04T00:57:43+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d739992725", "title": "Breaking Down Barriers - Part 3: Multiple Command Processors", "url": "https://therealmjp.github.io/posts/breaking-down-barriers-part-3-multiple-command-processors/", "published_at": "2018-06-18T02:14:52+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73a62efd7", "title": "Breaking Down Barriers - Part 2: Synchronizing GPU Threads", "url": "https://therealmjp.github.io/posts/breaking-down-barriers-part-2-synchronizing-gpu-threads/", "published_at": "2018-04-02T06:29:17+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73a82d775", "title": "Breaking Down Barriers - Part 1: What's a Barrier?", "url": "https://therealmjp.github.io/posts/breaking-down-barriers-part-1-whats-a-barrier/", "published_at": "2018-03-06T09:21:34+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73af8d924", "title": "SG Series Part 6: Step Into The Baking Lab", "url": "https://therealmjp.github.io/posts/sg-series-part-6-step-into-the-baking-lab/", "published_at": "2016-10-10T07:13:58+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73b97f822", "title": "SG Series Part 5: Approximating Radiance and Irradiance With SG's", "url": "https://therealmjp.github.io/posts/sg-series-part-5-approximating-radiance-and-irradiance-with-sgs/", "published_at": "2016-10-10T07:12:13+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73c44a559", "title": "SG Series Part 4: Specular Lighting From an SG Light Source", "url": "https://therealmjp.github.io/posts/sg-series-part-4-specular-lighting-from-an-sg-light-source/", "published_at": "2016-10-10T07:09:20+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73ceebe74", "title": "SG Series Part 3: Diffuse Lighting From an SG Light Source", "url": "https://therealmjp.github.io/posts/sg-series-part-3-diffuse-lighting-from-an-sg-light-source/", "published_at": "2016-10-10T07:08:51+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73da746ef", "title": "SG Series Part 2: Spherical Gaussians 101", "url": "https://therealmjp.github.io/posts/sg-series-part-2-spherical-gaussians-101/", "published_at": "2016-10-10T07:08:02+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73dff8e26", "title": "SG Series Part 1: A Brief (and Incomplete) History of Baked Lighting Representations", "url": "https://therealmjp.github.io/posts/sg-series-part-1-a-brief-and-incomplete-history-of-baked-lighting-representations/", "published_at": "2016-10-10T07:05:49+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73e7f6aa8", "title": "New Blog Series: Lightmap Baking and Spherical Gaussians", "url": "https://therealmjp.github.io/posts/new-blog-series-lightmap-baking-and-spherical-gaussians/", "published_at": "2016-10-10T07:05:10+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73ef084d2", "title": "Bindless Texturing for Deferred Rendering and Decals", "url": "https://therealmjp.github.io/posts/bindless-texturing-for-deferred-rendering-and-decals/", "published_at": "2016-03-25T08:39:36+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73f1270c2", "title": "Update For My Shadow Sample Update", "url": "https://therealmjp.github.io/posts/update-for-my-shadow-sample-update/", "published_at": "2016-01-25T00:24:56+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73f70f04e", "title": "Stairway To (Programmable Sample Point) Heaven", "url": "https://therealmjp.github.io/posts/programmable-sample-points/", "published_at": "2015-09-14T03:31:37+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d73faa5ecc", "title": "SIGGRAPH Follow-Up: 2015 Edition", "url": "https://therealmjp.github.io/posts/siggraph-2015/", "published_at": "2015-08-17T05:17:57+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7408adb4b", "title": "Mitsuba Quick-Start Guide", "url": "https://therealmjp.github.io/posts/mitsuba-quick-start-guide/", "published_at": "2015-04-04T20:36:44+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d74103f14b", "title": "Some Special Thanks", "url": "https://therealmjp.github.io/posts/some-special-thanks/", "published_at": "2015-03-23T08:35:45+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d741651faf", "title": "Shadow Sample Update", "url": "https://therealmjp.github.io/posts/shadow-sample-update/", "published_at": "2015-02-18T18:00:06+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7425f0dd2", "title": "Come see me talk at GDC 2014", "url": "https://therealmjp.github.io/posts/come-see-me-talk-at-gdc-2014/", "published_at": "2014-03-12T06:49:11+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d742ca6140", "title": "Weighted Blended Order-Independent Transparency", "url": "https://therealmjp.github.io/posts/weighted-blended-oit/", "published_at": "2014-02-04T06:58:04+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7432096c2", "title": "Sample Framework Updates", "url": "https://therealmjp.github.io/posts/sample-framework-updates/", "published_at": "2013-09-17T05:54:02+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d743e46991", "title": "A Sampling of Shadow Techniques", "url": "https://therealmjp.github.io/posts/shadow-maps/", "published_at": "2013-09-11T07:45:40+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7449bff65", "title": "DX11.2 Tiled Resources", "url": "https://therealmjp.github.io/posts/dx11-2-tiled-resources/", "published_at": "2013-09-07T06:21:28+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7456ac312", "title": "SIGGRAPH Follow-Up", "url": "https://therealmjp.github.io/posts/siggraph-follow-up/", "published_at": "2013-07-29T06:15:04+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d745a3d03c", "title": "What I've been working on for the past 2 years", "url": "https://therealmjp.github.io/posts/what-ive-been-working-on/", "published_at": "2013-06-12T07:48:45+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d745f081bd", "title": "HLSL User Defined Language for Notepad++", "url": "https://therealmjp.github.io/posts/hlsl-udl/", "published_at": "2012-11-05T07:09:39+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d746195b68", "title": "Experimenting with Reconstruction Filters for MSAA Resolve", "url": "https://therealmjp.github.io/posts/msaa-resolve-filters/", "published_at": "2012-10-29T07:33:31+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d74660e266", "title": "A Quick Overview of MSAA", "url": "https://therealmjp.github.io/posts/msaa-overview/", "published_at": "2012-10-25T07:03:27+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d747065985", "title": "Applying Sampling Theory To Real-Time Graphics", "url": "https://therealmjp.github.io/posts/applying-sampling-theory-to-real-time-graphics/", "published_at": "2012-10-22T06:59:09+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7477acae6", "title": "Signal Processing Primer", "url": "https://therealmjp.github.io/posts/signal-processing-primer/", "published_at": "2012-10-15T08:20:18+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7485b51fd", "title": "Upcoming Series on Signal Processing and MSAA", "url": "https://therealmjp.github.io/posts/upcoming-series-on-signal-processing-and-msaa/", "published_at": "2012-10-15T08:00:47+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7492c0e6f", "title": "OpenGL Insights", "url": "https://therealmjp.github.io/posts/opengl-insights/", "published_at": "2012-08-06T04:50:49+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d74a065e25", "title": "Looking for a job?", "url": "https://therealmjp.github.io/posts/looking-for-a-job/", "published_at": "2012-04-28T22:55:10+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d74a35e20d", "title": "A quick note on shader compilers", "url": "https://therealmjp.github.io/posts/a-quick-note-on-shader-compilers/", "published_at": "2012-04-14T04:56:04+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d74b2eda77", "title": "Light Indexed Deferred Rendering", "url": "https://therealmjp.github.io/posts/light-indexed-deferred-rendering/", "published_at": "2012-04-01T02:53:53+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d74c21a5ae", "title": "10 Things That Need To Die For Next-Gen", "url": "https://therealmjp.github.io/posts/things-that-need-to-die/", "published_at": "2011-12-06T09:54:34+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d74cf9af17", "title": "GPU Profiling in DX11 with Queries", "url": "https://therealmjp.github.io/posts/profiling-in-dx11-with-queries/", "published_at": "2011-10-13T08:59:37+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d74dec8c5e", "title": "Average luminance calculation using a compute shader", "url": "https://therealmjp.github.io/posts/average-luminance-compute-shader/", "published_at": "2011-08-10T09:31:03+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d74e02e0ce", "title": "I am officially a published author", "url": "https://therealmjp.github.io/posts/i-am-officially-a-published-author/", "published_at": "2011-08-05T06:04:11+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d74e23b44d", "title": "Anamorphic lens flares: the lens flare of the 2010's?", "url": "https://therealmjp.github.io/posts/lens-flares/", "published_at": "2011-06-10T06:57:41+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d74f12e138", "title": "Bokeh II: The Sequel", "url": "https://therealmjp.github.io/posts/bokeh-ii-the-sequel/", "published_at": "2011-04-20T06:59:20+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d74fca7520", "title": "Crashes on Nvidia hardware", "url": "https://therealmjp.github.io/posts/crashes-on-nvidia-hardware/", "published_at": "2011-03-26T07:23:30+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7503a7f88", "title": "How To Fake Bokeh (And Make It Look Pretty Good)", "url": "https://therealmjp.github.io/posts/bokeh/", "published_at": "2011-02-28T08:18:35+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7506ce7c4", "title": "Radiosity, DX11 Style", "url": "https://therealmjp.github.io/posts/radiosity-dx11-style/", "published_at": "2011-01-31T08:08:09+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d750ea90ed", "title": "Position From Depth in GLSL", "url": "https://therealmjp.github.io/posts/position-from-depth-glsl-style/", "published_at": "2011-01-09T01:47:45+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d751a8f311", "title": "Conservative Depth Output (and Other Lesser-Known D3D11 Features)", "url": "https://therealmjp.github.io/posts/d3d11-features/", "published_at": "2010-11-15T02:24:48+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d751bee57f", "title": "Position From Depth 3: Back In The Habit", "url": "https://therealmjp.github.io/posts/position-from-depth-3/", "published_at": "2010-09-06T07:11:52+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7521fa3cf", "title": "Deferred MSAA", "url": "https://therealmjp.github.io/posts/deferred-msaa/", "published_at": "2010-08-16T08:57:37+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d752e5e7eb", "title": "MSAA Sample Pattern Detector", "url": "https://therealmjp.github.io/posts/msaa-sample-pattern-detector/", "published_at": "2010-07-07T08:42:23+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d752ee4b1a", "title": "A Closer Look At Tone Mapping", "url": "https://therealmjp.github.io/posts/a-closer-look-at-tone-mapping/", "published_at": "2010-04-30T08:47:17+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d75382adb5", "title": "Attack of the depth buffer", "url": "https://therealmjp.github.io/posts/attack-of-the-depth-buffer/", "published_at": "2010-03-23T07:42:36+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d754606f8d", "title": "D3D Performance and Debugging Tools Round-Up: PerfHUD", "url": "https://therealmjp.github.io/posts/d3d-performance-and-debugging-tools-round-up-perfhud/", "published_at": "2010-03-07T05:42:44+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d755034f0b", "title": "D3D Performance and Debugging Tools Round-Up: PIX", "url": "https://therealmjp.github.io/posts/d3d-performance-and-debugging-tools-round-up-pix/", "published_at": "2010-02-15T05:17:18+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7559d2ff5", "title": "New Series: D3D Performance and Debugging Tools Round-Up", "url": "https://therealmjp.github.io/posts/new-series-d3d-performance-and-debugging-tools-round-up/", "published_at": "2010-02-15T05:16:17+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d755ea26fc", "title": "Name Change", "url": "https://therealmjp.github.io/posts/name-change/", "published_at": "2010-02-06T23:22:13+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d756563689", "title": "Inferred Rendering", "url": "https://therealmjp.github.io/posts/inferred-rendering/", "published_at": "2010-01-10T17:30:10+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7573ea805", "title": "Correcting XNA's Gamma Correction", "url": "https://therealmjp.github.io/posts/correcting-xnas-gamma-correction/", "published_at": "2009-12-31T22:31:58+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d757ec8ed3", "title": "More Post-Processing Tricks: Lens Flare", "url": "https://therealmjp.github.io/posts/more-post-processing-tricks-lens-flare/", "published_at": "2009-12-15T08:53:17+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d758e8b036", "title": "Two Samples For The Price Of One", "url": "https://therealmjp.github.io/posts/two-samples/", "published_at": "2009-12-06T04:22:29+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d759d2b5d5", "title": "New Tutorial: Using PIX With XNA", "url": "https://therealmjp.github.io/posts/pix-with-xna/", "published_at": "2009-10-16T15:49:13+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d75aad4032", "title": "Scintillating Snippets: Storing Normals Using Spherical Coordinates", "url": "https://therealmjp.github.io/posts/storing-normals-using-spherical-coordinates/", "published_at": "2009-06-17T16:36:06+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d75b2caf7a", "title": "What's good on the menu, waiter?", "url": "https://therealmjp.github.io/posts/whats-good-on-the-menu-waiter/", "published_at": "2009-05-20T16:28:39+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d75b9192cc", "title": "Reconstructing Position From Depth, Continued", "url": "https://therealmjp.github.io/posts/reconstructing-position-from-depth-continued/", "published_at": "2009-05-05T20:09:33+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d75c249cf2", "title": "Undo and Redo: Take 2", "url": "https://therealmjp.github.io/posts/undo-and-redo-take-2/", "published_at": "2009-04-30T19:37:03+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d75d175472", "title": "There's More Than One Way To Defer A Renderer", "url": "https://therealmjp.github.io/posts/theres-more-than-one-way-to-defer-a-renderer/", "published_at": "2009-03-27T19:21:49+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d75e0715be", "title": "Scintillating Snippets: Reconstructing Position From Depth", "url": "https://therealmjp.github.io/posts/reconstructing-position-from-depth/", "published_at": "2009-03-10T19:06:31+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d75e5ee50d", "title": "Scintillating Snippets: Programatically Adding Content To A Content Project", "url": "https://therealmjp.github.io/posts/snippet-content-project/", "published_at": "2009-02-19T21:36:05+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d75f2e5991", "title": "Deferred Cascaded Shadow Maps", "url": "https://therealmjp.github.io/posts/deferred-cascaded-shadow-maps/", "published_at": "2009-02-18T04:22:32+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d75fb7e1c4", "title": "Profiling Events vs. Virtual Functions On The 360", "url": "https://therealmjp.github.io/posts/profiling-events/", "published_at": "2009-01-23T17:31:19+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d76024a874", "title": "Deferred Shadow Maps Sample", "url": "https://therealmjp.github.io/posts/deferred-shadow-maps-sample/", "published_at": "2009-01-20T01:24:19+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d7610c9508", "title": "Teach Your Effects A New Trick", "url": "https://therealmjp.github.io/posts/teach-your-effects-a-new-trick/", "published_at": "2009-01-19T19:51:51+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d761bc20b0", "title": "Fun With Compiled Content", "url": "https://therealmjp.github.io/posts/fun-with-compiled-content/", "published_at": "2009-01-18T21:36:14+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d761e5564e", "title": "Book Recommendation: Real-Time Collision Detection", "url": "https://therealmjp.github.io/posts/book-recommendation-real-time-collision-detection/", "published_at": "2009-01-17T23:27:18+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d761fd3ea2", "title": "Undo and Redo: Yes you have to implement it", "url": "https://therealmjp.github.io/posts/undo-and-redo/", "published_at": "2008-12-19T19:05:15+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d762d983df", "title": "LogLuv Encoding for HDR", "url": "https://therealmjp.github.io/posts/logluv-encoding-for-hdr/", "published_at": "2008-12-12T17:00:59+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d763393107", "title": "Jamming to the oldies", "url": "https://therealmjp.github.io/posts/oldies/", "published_at": "2008-12-12T16:39:21+00:00" }, { "id": "01a08219-c915-711a-81bc-f9d764256f9c", "title": "Cleared for takeoff", "url": "https://therealmjp.github.io/posts/cleared-for-takeoff/", "published_at": "2008-12-10T21:22:13+00:00" } ] posts Claim your blog
Back to Matt Pettineo
Blog · corpus.blog/blogs/therealmjp.github.io/posts

Matt Pettineo

therealmjp.github.io

2025

2024

2022

2021

2020

2019

2018

2016

2015

2014

2013

2012

2011

2010

2009

2008