41554 blogs · [ { "id": "01a0bbc2-b7f1-711c-876d-e7fe0b001e5e", "title": "The agonizing necessity of cached calculations", "url": "https://mortoray.com/the-agonizing-necessity-of-cached-calculations/", "published_at": "2017-04-03T18:23:14+00:00" }, { "id": "01a0bbc9-bf71-71e0-860e-1a0a1058d4b2", "title": "Why can’t I get organic salt and vinegar chips?", "url": "https://mortoray.com/why-cant-i-get-organic-salt-and-vinegar-chips/", "published_at": "2017-03-31T07:31:45+00:00" }, { "id": "01a0bbc9-bf71-71e0-860e-1a0a10d4235f", "title": "What is orthogonality?", "url": "https://mortoray.com/what-is-orthogonality/", "published_at": "2017-03-27T06:52:56+00:00" }, { "id": "01a0bbc9-bf71-71e0-860e-1a0a11420827", "title": "Programming won’t be automated, or it already has been", "url": "https://mortoray.com/programming-wont-be-automated-or-it-already-has-been/", "published_at": "2017-03-22T09:08:50+00:00" }, { "id": "01a0bbc9-bf71-71e0-860e-1a0a1236727e", "title": "The meta-field dilemma: `a.size` or `size(a)`", "url": "https://mortoray.com/the-meta-field-dilemma-a-size-or-sizea/", "published_at": "2017-03-14T15:05:23+00:00" }, { "id": "01a0bbc9-bf71-71e0-860e-1a0a12f3dc79", "title": "Importing Blender object normal maps with permutations", "url": "https://mortoray.com/importing-blender-object-normal-maps-with-permutations/", "published_at": "2017-03-10T12:11:49+00:00" }, { "id": "01a0bbc9-bf71-71e0-860e-1a0a1368998d", "title": "A game of what’d they press? Hit testing in a 2d/3d layout", "url": "https://mortoray.com/a-game-of-whatd-they-press-hit-testing-in-a-2d3d-layout/", "published_at": "2017-03-08T19:18:26+00:00" }, { "id": "01a0bbc9-bf71-71e0-860e-1a0a139da1e9", "title": "The bitwise complement, or not operator, is unsafe", "url": "https://mortoray.com/the-bitwise-complement-or-not-operator-is-unsafe/", "published_at": "2017-03-02T20:10:52+00:00" }, { "id": "01a0bbc9-bf71-71e0-860e-1a0a140fe8d0", "title": "Stuffing curves into boxes: calculating the bounds", "url": "https://mortoray.com/stuffing-curves-into-boxes-calculating-the-bounds/", "published_at": "2017-02-22T22:20:56+00:00" }, { "id": "01a0bbc9-bf71-71e0-860e-1a0a14f325d4", "title": "Rendering an SVG elliptical arc as bezier curves", "url": "https://mortoray.com/rendering-an-svg-elliptical-arc-as-bezier-curves/", "published_at": "2017-02-16T14:57:14+00:00" }, { "id": "01a0bbc9-bf71-71e0-860e-1a0a15817d81", "title": "Porting Leaf from Linux to OSX", "url": "https://mortoray.com/porting-leaf-from-linux-to-osx/", "published_at": "2017-02-08T15:31:21+00:00" }, { "id": "01a0bbce-c930-72c7-aec1-24de23b66adf", "title": "The smooth sexy curves of a bezier spline", "url": "https://mortoray.com/the-smooth-sexy-curves-of-a-bezier-spline/", "published_at": "2017-02-02T12:36:58+00:00" }, { "id": "01a0bbce-c930-72c7-aec1-24de243f2800", "title": "Ride the carousel of folly with a Python migration", "url": "https://mortoray.com/ride-the-carousel-of-folly-with-a-python-migration/", "published_at": "2017-01-23T22:38:30+00:00" }, { "id": "01a0bbce-c930-72c7-aec1-24de244e980e", "title": "Optional Types and Leaf: Removing automatic dereference", "url": "https://mortoray.com/optional-types-and-leaf-removing-automatic-dereference/", "published_at": "2017-01-12T18:01:40+00:00" }, { "id": "01a0bbce-c930-72c7-aec1-24de250c71e0", "title": "Smoothing 3d geometry, like a tunnel, with Catmull-Rom splines", "url": "https://mortoray.com/smoothing-3d-geometry-like-a-tunnel-with-catmull-rom-splines/", "published_at": "2016-11-15T12:41:41+00:00" }, { "id": "01a0bbce-c930-72c7-aec1-24de25829c9b", "title": "What is a normal map? An object normal map?", "url": "https://mortoray.com/what-is-a-normal-map-an-object-normal-map/", "published_at": "2016-11-10T14:53:35+00:00" }, { "id": "01a0bbce-c930-72c7-aec1-24de2632f080", "title": "Glowing graphics for that futuristic sci-fi feeling", "url": "https://mortoray.com/glowing-graphics-for-that-futuristic-sci-fi-feeling/", "published_at": "2016-10-28T11:35:09+00:00" }, { "id": "01a0bbce-c930-72c7-aec1-24de26a8757c", "title": "Radial Blitz – A rough journey from new technology to app store release", "url": "https://mortoray.com/radial-blitz-a-rough-journey-from-new-technology-to-app-store-release/", "published_at": "2016-10-25T11:27:41+00:00" }, { "id": "01a0bbce-c930-72c7-aec1-24de2778d232", "title": "Are we forever cursed with buggy software?", "url": "https://mortoray.com/are-we-forever-cursed-with-buggy-software/", "published_at": "2016-09-23T06:22:52+00:00" }, { "id": "01a0bbce-c930-72c7-aec1-24de27e3b5bb", "title": "The unfortunate world of boilerplate code", "url": "https://mortoray.com/the-unfortunate-world-of-boilerplate-code/", "published_at": "2016-09-13T05:34:20+00:00" }, { "id": "01a0bbce-c930-72c7-aec1-24de2811d357", "title": "A pattern bandage for messy virtual functions", "url": "https://mortoray.com/a-pattern-bandage-for-messy-virtual-functions/", "published_at": "2016-08-29T08:21:08+00:00" }, { "id": "01a0bbd2-b359-72a0-a471-3c46cdbdb609", "title": "The very real mess of virtual functions", "url": "https://mortoray.com/the-very-real-mess-of-virtual-functions/", "published_at": "2016-08-10T06:58:06+00:00" }, { "id": "01a0bbd2-b359-72a0-a471-3c46ceb13bcd", "title": "The simple things I want in a text editor", "url": "https://mortoray.com/the-simple-things-i-want-in-a-text-editor/", "published_at": "2016-06-14T07:03:19+00:00" }, { "id": "01a0bbd2-b359-72a0-a471-3c46cf04e9eb", "title": "Is reference counting slower than GC?", "url": "https://mortoray.com/is-reference-counting-slower-than-gc/", "published_at": "2016-05-24T07:07:21+00:00" }, { "id": "01a0bbd2-b359-72a0-a471-3c46cfde98bf", "title": "What is the cost of reference counting?", "url": "https://mortoray.com/what-is-the-cost-of-reference-counting/", "published_at": "2016-05-18T07:53:19+00:00" }, { "id": "01a0bbd2-b359-72a0-a471-3c46d02372f6", "title": "What is the length of a string? A tricky question", "url": "https://mortoray.com/what-is-the-length-of-a-string-a-tricky-question/", "published_at": "2016-04-28T05:41:02+00:00" }, { "id": "01a0bbd2-b359-72a0-a471-3c46d05f9d4b", "title": "A pan, zoom, and rotate gesture model for touch devices", "url": "https://mortoray.com/a-pan-zoom-and-rotate-gesture-model-for-touch-devices/", "published_at": "2016-03-16T07:19:38+00:00" }, { "id": "01a0bbd2-b359-72a0-a471-3c46d0f72821", "title": "Efficient open ended queues with deferred deletion", "url": "https://mortoray.com/efficient-open-ended-queues-with-deferred-deletion/", "published_at": "2016-03-07T07:10:53+00:00" }, { "id": "01a0bbd2-b359-72a0-a471-3c46d11c698c", "title": "The simple things matter – examples of UX failure from Amazon Video", "url": "https://mortoray.com/the-simple-things-matter-examples-of-ux-failure-from-amazon-video/", "published_at": "2016-02-26T06:10:41+00:00" }, { "id": "01a0bbd2-b359-72a0-a471-3c46d1579f59", "title": "How blaming the user leads to tragedy", "url": "https://mortoray.com/how-blaming-the-user-leads-to-tragedy/", "published_at": "2016-02-19T09:24:04+00:00" }, { "id": "01a0bbd2-b359-72a0-a471-3c46d1f66813", "title": "API forensics for iOS system time: missing documentation", "url": "https://mortoray.com/api-forensics-for-ios-system-time-missing-documentation/", "published_at": "2016-02-05T06:01:38+00:00" }, { "id": "01a0bbd6-8d89-7249-96ad-7d18fccd445c", "title": "The trouble with `floor` and `ceil`", "url": "https://mortoray.com/the-trouble-with-floor-and-ceil/", "published_at": "2016-01-05T06:21:55+00:00" }, { "id": "01a0bbd6-8d89-7249-96ad-7d18fcd45a74", "title": "Implementing a Swipe gesture", "url": "https://mortoray.com/implementing-a-swipe-gesture/", "published_at": "2015-12-15T07:37:48+00:00" }, { "id": "01a0bbd6-8d89-7249-96ad-7d18fd44e6e2", "title": "The hard part of error handling is not the error itself", "url": "https://mortoray.com/the-hard-part-of-error-handling-is-not-the-error-itself/", "published_at": "2015-12-03T10:43:57+00:00" }, { "id": "01a0bbd6-8d89-7249-96ad-7d18fd481726", "title": "Why don’t we have runtime virtual dispatching?", "url": "https://mortoray.com/why-dont-we-have-runtime-virtual-dispatching/", "published_at": "2015-11-23T05:15:25+00:00" }, { "id": "01a0bbd6-8d89-7249-96ad-7d18fdd86654", "title": "Everything can and will go wrong: all functions fail", "url": "https://mortoray.com/everything-can-and-will-go-wrong-all-functions-fail/", "published_at": "2015-11-06T07:27:59+00:00" }, { "id": "01a0bbd6-8d89-7249-96ad-7d18fe4c19a1", "title": "The exceptional myth of non-local flow", "url": "https://mortoray.com/the-exceptional-myth-of-non-local-flow/", "published_at": "2015-10-28T12:02:09+00:00" }, { "id": "01a0bbd6-8d89-7249-96ad-7d18feee3446", "title": "Messy error handling in Rust with `try!`", "url": "https://mortoray.com/messy-error-handling-in-rust-with-try/", "published_at": "2015-10-21T05:09:39+00:00" }, { "id": "01a0bbd6-8d89-7249-96ad-7d18ff8471c1", "title": "Adding the first type expression to Leaf: type_infer", "url": "https://mortoray.com/adding-the-first-type-expression-to-leaf-type_infer/", "published_at": "2015-10-17T09:50:10+00:00" }, { "id": "01a0bbd6-8d89-7249-96ad-7d190045fd84", "title": "Defects allowed by imprecise access modifiers", "url": "https://mortoray.com/defects-allowed-by-imprecise-access-modifiers/", "published_at": "2015-10-14T12:09:26+00:00" }, { "id": "01a0bbd6-8d89-7249-96ad-7d19004c9a40", "title": "Robot journalist predicts programmers will be obsoleted", "url": "https://mortoray.com/robot-journalist-predicts-programmers-will-be-obsoleted/", "published_at": "2015-09-24T06:28:11+00:00" }, { "id": "01a0bbda-37df-71b6-ba35-ac6f7ed1adee", "title": "The curse of varargs", "url": "https://mortoray.com/the-curse-of-varargs/", "published_at": "2015-09-07T06:27:58+00:00" }, { "id": "01a0bbda-37df-71b6-ba35-ac6f7f5414cb", "title": "Reusing existing test suites for new features", "url": "https://mortoray.com/reusing-existing-test-suites-for-new-features/", "published_at": "2015-08-10T04:23:50+00:00" }, { "id": "01a0bbda-37df-71b6-ba35-ac6f7f8d8b56", "title": "Calculating square root using Newton’s iterative method", "url": "https://mortoray.com/calculating-square-root-using-newtons-iterative-method/", "published_at": "2015-07-29T04:29:00+00:00" }, { "id": "01a0bbda-37df-71b6-ba35-ac6f8023bf79", "title": "A real cost of low performing applications", "url": "https://mortoray.com/a-real-cost-of-low-performing-applications/", "published_at": "2015-07-27T03:09:27+00:00" }, { "id": "01a0bbda-37df-71b6-ba35-ac6f80f47d67", "title": "You can’t trade privacy for security", "url": "https://mortoray.com/you-cant-trade-privacy-for-security/", "published_at": "2015-07-15T06:15:18+00:00" }, { "id": "01a0bbda-37df-71b6-ba35-ac6f810d17d3", "title": "Essential facts about floating point calculations", "url": "https://mortoray.com/essential-facts-about-floating-point-calculations/", "published_at": "2015-07-06T04:41:54+00:00" }, { "id": "01a0bbda-37df-71b6-ba35-ac6f814ca258", "title": "Be a good mentor, not a dickhead", "url": "https://mortoray.com/be-a-good-mentor-not-a-dickhead/", "published_at": "2015-06-24T04:24:19+00:00" }, { "id": "01a0bbda-37df-71b6-ba35-ac6f81ff2595", "title": "Antialiasing with a signed distance field", "url": "https://mortoray.com/antialiasing-with-a-signed-distance-field/", "published_at": "2015-06-19T03:18:05+00:00" }, { "id": "01a0bbda-37df-71b6-ba35-ac6f82feae19", "title": "Get rid of those boolean function parameters", "url": "https://mortoray.com/get-rid-of-those-boolean-function-parameters/", "published_at": "2015-06-15T04:10:10+00:00" }, { "id": "01a0bbda-37df-71b6-ba35-ac6f83f47b91", "title": "Combining several GL draw calls into one: a rounded rectangle", "url": "https://mortoray.com/combining-several-gl-draw-calls-into-one-a-rounded-rectangle/", "published_at": "2015-06-12T04:09:42+00:00" }, { "id": "01a0bbdd-d7d5-70db-b223-89a809046b50", "title": "Quickly drawing a rounded rectangle with a GL shader", "url": "https://mortoray.com/quickly-drawing-a-rounded-rectangle-with-a-gl-shader/", "published_at": "2015-06-05T04:25:37+00:00" }, { "id": "01a0bbdd-d7d5-70db-b223-89a809449a35", "title": "Where the wild code grows", "url": "https://mortoray.com/where-the-wild-code-grows/", "published_at": "2015-05-26T02:49:07+00:00" }, { "id": "01a0bbdd-d7d5-70db-b223-89a80961902a", "title": "Blocking and asynchronous operations without timeout are broken", "url": "https://mortoray.com/blocking-and-asynchronous-operations-without-timeout-are-broken/", "published_at": "2015-05-25T03:13:34+00:00" }, { "id": "01a0bbdd-d7d5-70db-b223-89a80a20abfe", "title": "Debugging by binary searching through code revisions", "url": "https://mortoray.com/debugging-by-binary-searching-through-code-revisions/", "published_at": "2015-05-21T03:02:55+00:00" }, { "id": "01a0bbdd-d7d5-70db-b223-89a80a6c7460", "title": "A bug, an error, or fault, and the irrelevance of classification", "url": "https://mortoray.com/a-bug-an-error-or-fault-and-the-irrelevance-of-classification/", "published_at": "2015-05-18T03:55:25+00:00" }, { "id": "01a0bbdd-d7d5-70db-b223-89a80b30d721", "title": "A swipingly good time with edge gestures", "url": "https://mortoray.com/a-swipingly-good-time-with-edge-gestures/", "published_at": "2015-05-13T05:59:42+00:00" }, { "id": "01a0bbdd-d7d5-70db-b223-89a80bfe8896", "title": "How HTTP cache headers betray your privacy", "url": "https://mortoray.com/how-http-cache-headers-betray-your-privacy/", "published_at": "2015-05-11T04:16:39+00:00" }, { "id": "01a0bbdd-d7d5-70db-b223-89a80c87e968", "title": "Fast build turnaround time is essential", "url": "https://mortoray.com/fast-build-turnaround-time-is-essential/", "published_at": "2015-05-06T02:53:50+00:00" }, { "id": "01a0bbdd-d7d5-70db-b223-89a80cae01b9", "title": "Cohesion and coupling: good measures of quality", "url": "https://mortoray.com/cohesion-and-coupling-good-measures-of-quality/", "published_at": "2015-04-29T04:41:10+00:00" }, { "id": "01a0bbdd-d7d5-70db-b223-89a80cebfcd1", "title": "Nobody cares about your code", "url": "https://mortoray.com/nobody-cares-about-your-code/", "published_at": "2015-04-20T05:28:46+00:00" }, { "id": "01a0bbe1-3c7d-70d4-9c10-655a2c0c5599", "title": "Using a hack, stifling the perfectionist, and moving on", "url": "https://mortoray.com/using-a-hack-stifling-the-perfectionist-and-moving-on/", "published_at": "2015-04-15T03:29:54+00:00" }, { "id": "01a0bbe1-3c7d-70d4-9c10-655a2c570dc6", "title": "Measuring finger / mouse velocity at release time", "url": "https://mortoray.com/measuring-finger-mouse-velocity-at-release-time/", "published_at": "2015-04-08T17:15:11+00:00" }, { "id": "01a0bbe1-3c7d-70d4-9c10-655a2d547aa2", "title": "Complexity theory isn’t required to be a programmer", "url": "https://mortoray.com/complexity-theory-isnt-required-to-be-a-programmer/", "published_at": "2015-03-24T07:04:33+00:00" }, { "id": "01a0bbe1-3c7d-70d4-9c10-655a2dd7515d", "title": "Visions of generics and templates: How parametrics are compiled", "url": "https://mortoray.com/visions-of-generics-and-templates-how-parametrics-are-compiled/", "published_at": "2015-03-06T06:56:04+00:00" }, { "id": "01a0bbe1-3c7d-70d4-9c10-655a2eb9c705", "title": "What a compiler does: Parsing", "url": "https://mortoray.com/what-a-compiler-does-parsing/", "published_at": "2015-02-17T05:38:43+00:00" }, { "id": "01a0bbe1-3c7d-70d4-9c10-655a2f671cc9", "title": "Bringing blurry device independent pixels into focus", "url": "https://mortoray.com/bringing-blurry-device-independent-pixels-into-focus/", "published_at": "2015-01-28T15:28:42+00:00" }, { "id": "01a0bbe1-3c7d-70d4-9c10-655a303c5374", "title": "Quelling the floating point demon in my line rendering code", "url": "https://mortoray.com/quelling-the-floating-point-demon-in-my-line-rendering-code/", "published_at": "2015-01-07T05:44:25+00:00" }, { "id": "01a0bbe1-3c7d-70d4-9c10-655a30d337af", "title": "Adding proxies to C#: A simple proposition", "url": "https://mortoray.com/adding-proxies-to-c-a-simple-proposition/", "published_at": "2014-12-22T06:31:21+00:00" }, { "id": "01a0bbe1-3c7d-70d4-9c10-655a312c1751", "title": "What a compiler does: internal types", "url": "https://mortoray.com/what-a-compiler-does-internal-types/", "published_at": "2014-11-11T07:03:58+00:00" }, { "id": "01a0bbe1-3c7d-70d4-9c10-655a31fe1723", "title": "What a compiler does: type conversion basics", "url": "https://mortoray.com/what-a-compiler-does-type-conversion-basics/", "published_at": "2014-10-30T05:30:04+00:00" }, { "id": "01a0bbe4-76eb-73b7-9b94-70bbc9bdae13", "title": "Cubist artwork with the help of a GPU", "url": "https://mortoray.com/cubist-artwork-with-the-help-of-a-gpu/", "published_at": "2014-10-23T19:28:32+00:00" }, { "id": "01a0bbe4-76eb-73b7-9b94-70bbca48c545", "title": "An unpleasant visit from the refactoring demon", "url": "https://mortoray.com/an-unpleasant-visit-from-the-refactoring-demon/", "published_at": "2014-10-14T03:24:28+00:00" }, { "id": "01a0bbe4-76eb-73b7-9b94-70bbcb408512", "title": "What a compiler does: symbol resolution", "url": "https://mortoray.com/what-a-compiler-does-symbol-resolution/", "published_at": "2014-10-09T09:10:06+00:00" }, { "id": "01a0bbe4-76eb-73b7-9b94-70bbcc10cd87", "title": "A secure and private browser sandbox", "url": "https://mortoray.com/a-secure-and-private-browser-sandbox/", "published_at": "2014-09-30T05:55:36+00:00" }, { "id": "01a0bbe4-76eb-73b7-9b94-70bbccd01b1d", "title": "Blocking JavaScript seems like a good idea", "url": "https://mortoray.com/blocking-javascript-seems-like-a-good-idea/", "published_at": "2014-09-15T04:51:18+00:00" }, { "id": "01a0bbe4-76eb-73b7-9b94-70bbcd8f4034", "title": "Using macros to simplify type visitors and enums", "url": "https://mortoray.com/using-macros-to-simplify-type-visitors-and-enums/", "published_at": "2014-09-10T05:18:05+00:00" }, { "id": "01a0bbe4-76eb-73b7-9b94-70bbcddb0f60", "title": "What is an idempotent function?", "url": "https://mortoray.com/what-is-an-idempotent-function/", "published_at": "2014-09-05T04:54:39+00:00" }, { "id": "01a0bbe4-76eb-73b7-9b94-70bbceb276e2", "title": "What is amortized time?", "url": "https://mortoray.com/what-is-amortized-time/", "published_at": "2014-08-11T07:23:17+00:00" }, { "id": "01a0bbe4-76eb-73b7-9b94-70bbcfaa1e2d", "title": "Visiting nodes in a recursive data type with traversal contexts", "url": "https://mortoray.com/visiting-nodes-in-a-recursive-data-type-with-traversal-contexts/", "published_at": "2014-08-05T04:36:44+00:00" }, { "id": "01a0bbe4-76eb-73b7-9b94-70bbcfdc4557", "title": "The false abstraction antipattern", "url": "https://mortoray.com/the-false-abstraction-antipattern/", "published_at": "2014-08-01T04:57:38+00:00" }, { "id": "01a0bbe7-b212-71eb-8d65-024a78b8181b", "title": "Counterargument: Don’t put logic in tests", "url": "https://mortoray.com/counterargument-dont-put-logic-in-tests/", "published_at": "2014-08-01T03:25:45+00:00" }, { "id": "01a0bbe7-b212-71eb-8d65-024a7977dcda", "title": "Why more eyes are helpful: time wasted on a simple bug", "url": "https://mortoray.com/why-more-eyes-are-helpful-time-wasted-on-a-simple-bug/", "published_at": "2014-07-28T05:02:02+00:00" }, { "id": "01a0bbe7-b212-71eb-8d65-024a7a617271", "title": "Why social media needs to manipulate you", "url": "https://mortoray.com/why-social-media-needs-to-manipulate-you/", "published_at": "2014-07-17T05:30:37+00:00" }, { "id": "01a0bbe7-b212-71eb-8d65-024a7a75e9fe", "title": "A curious non-OOP virtual inheritance for a GPU", "url": "https://mortoray.com/a-curious-non-oop-virtual-inheritance-for-a-gpu/", "published_at": "2014-07-14T04:41:13+00:00" }, { "id": "01a0bbe7-b212-71eb-8d65-024a7af4ebf5", "title": "Removing code by adding features", "url": "https://mortoray.com/removing-code-by-adding-features/", "published_at": "2014-07-08T04:14:46+00:00" }, { "id": "01a0bbe7-b212-71eb-8d65-024a7b40a9c3", "title": "Another Spam Loser: WordPress and Akismet", "url": "https://mortoray.com/another-spam-loser-wordpress-and-akismet/", "published_at": "2014-07-04T04:01:32+00:00" }, { "id": "01a0bbe7-b212-71eb-8d65-024a7c027932", "title": "Wait-free queueing and ultra-low latency logging", "url": "https://mortoray.com/wait-free-queueing-and-ultra-low-latency-logging/", "published_at": "2014-05-29T03:42:51+00:00" }, { "id": "01a0bbe7-b212-71eb-8d65-024a7c178a41", "title": "The uninitialized variable anathema: non-deterministic C++", "url": "https://mortoray.com/the-uninitialized-variable-anathema-non-deterministic-c/", "published_at": "2014-04-16T07:39:45+00:00" }, { "id": "01a0bbe7-b212-71eb-8d65-024a7ca6bb32", "title": "Allowing unlimited access with CORS", "url": "https://mortoray.com/allowing-unlimited-access-with-cors/", "published_at": "2014-04-09T06:51:47+00:00" }, { "id": "01a0bbe7-b212-71eb-8d65-024a7ce98780", "title": "Stop signing crappy contracts", "url": "https://mortoray.com/stop-signing-crappy-contracts/", "published_at": "2014-03-31T12:18:43+00:00" }, { "id": "01a0bbeb-ea2b-7212-b908-6f796865ce71", "title": "The Infernal Loop Iterator", "url": "https://mortoray.com/the-infernal-loop-iterator/", "published_at": "2014-03-25T04:42:09+00:00" }, { "id": "01a0bbeb-ea2b-7212-b908-6f7968ddefb0", "title": "Strings and Text are not the same", "url": "https://mortoray.com/strings-and-text-are-not-the-same/", "published_at": "2014-03-17T04:54:36+00:00" }, { "id": "01a0bbeb-ea2b-7212-b908-6f7968e91ee2", "title": "Too big too care: How Twitter inadvertently revoked my developer access", "url": "https://mortoray.com/too-big-too-care-how-twitter-inadvertently-revoked-my-developer-access/", "published_at": "2014-03-07T04:29:28+00:00" }, { "id": "01a0bbeb-ea2b-7212-b908-6f7968f6d0a7", "title": "HTTP streaming of command output in Python Flask", "url": "https://mortoray.com/http-streaming-of-command-output-in-python-flask/", "published_at": "2014-03-04T16:36:09+00:00" }, { "id": "01a0bbeb-ea2b-7212-b908-6f79695a3985", "title": "The dangers of OAuth/Social Login", "url": "https://mortoray.com/the-dangers-of-oauthsocial-login/", "published_at": "2014-02-21T05:26:32+00:00" }, { "id": "01a0bbeb-ea2b-7212-b908-6f79698ff64c", "title": "Simulating the way to victory: Bloons TD Battles", "url": "https://mortoray.com/simulating-the-way-to-victory-bloons-td-battles/", "published_at": "2014-02-10T04:49:07+00:00" }, { "id": "01a0bbeb-ea2b-7212-b908-6f796a8d7247", "title": "Improving CSS Positioning with position-anchor", "url": "https://mortoray.com/improving-css-positioning-with-position-anchor/", "published_at": "2014-01-31T04:53:25+00:00" }, { "id": "01a0bbeb-ea2b-7212-b908-6f796b14a846", "title": "Painlessly add a virtual to a large class structure", "url": "https://mortoray.com/painlessly-add-a-virtual-to-a-large-class-structure/", "published_at": "2014-01-21T04:50:31+00:00" }, { "id": "01a0bbeb-ea2b-7212-b908-6f796b842f17", "title": "JavaScript and 3d graphics don’t mix", "url": "https://mortoray.com/javascript-and-3d-graphics-dont-mix/", "published_at": "2014-01-06T06:26:31+00:00" } ] posts Claim your blog
Back to mortoray.com
Blog · corpus.blog/blogs/mortoray.com/posts

mortoray.com

mortoray.com

2017

2016

2015

2014