41554 blogs · [ { "id": "01a0b0cb-294b-70c0-9f16-9a9139f3b793", "title": "keymidi : an OS Keyboard MIDI controller", "url": "http://ernestmicklei.com/melrose/keymidi/", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a08774-fb44-7242-a7c8-d7eb470b8a56", "title": "Midicycles: visualizing MIDI in polar space", "url": "http://ernestmicklei.com/melrose/midicycles/", "published_at": "2026-08-06T18:30:00+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d5b448525", "title": "protocheck: Lightweight Protobuf Validation in Go", "url": "http://ernestmicklei.com/2025/12/protocheck-lightweight-protobuf-validation-in-go/", "published_at": "2025-12-22T18:23:11+00:00" }, { "id": "01a08774-fb44-7242-a7c8-d7eb4752cc90", "title": "MCP Server", "url": "http://ernestmicklei.com/melrose/mcp/", "published_at": "2025-05-09T18:53:58+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d57882963", "title": "Introducing 'map'", "url": "http://ernestmicklei.com/melrose/map/", "published_at": "2024-09-10T07:58:42+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d5baa29fe", "title": "The Growing Developer", "url": "http://ernestmicklei.com/2024/07/the-growing-developer/", "published_at": "2024-07-29T15:28:00+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d5bfb9e37", "title": "AI, please explain this code base", "url": "http://ernestmicklei.com/2024/07/ai-please-explain-this-code-base/", "published_at": "2024-07-20T17:28:12+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d5c6fad93", "title": "The Replaceable Developer", "url": "http://ernestmicklei.com/2022/05/the-replaceable-developer/", "published_at": "2022-05-18T09:28:12+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d58871bf6", "title": "More Drum Patterns", "url": "http://ernestmicklei.com/melrose/drum-pattern-2/", "published_at": "2021-11-26T15:53:58+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d5cd2ca95", "title": "Melrōse, a language to program and play music", "url": "http://ernestmicklei.com/melrose/introduction_melrose/", "published_at": "2021-11-21T13:43:07+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d5943409b", "title": "Drum Pattern", "url": "http://ernestmicklei.com/melrose/drum-pattern-1/", "published_at": "2021-03-06T15:53:58+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d5990156a", "title": "Iterating over patterns", "url": "http://ernestmicklei.com/melrose/resequence-iterator/", "published_at": "2021-03-05T16:28:49+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d5d7c34b6", "title": "Drum patterns", "url": "http://ernestmicklei.com/melrose/drumpatterns/", "published_at": "2020-05-12T17:37:44+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d5a7e805b", "title": "DAW - Apple Logic Pro X", "url": "http://ernestmicklei.com/melrose/logicpro/", "published_at": "2020-05-06T15:53:58+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d5b05edb5", "title": "DAW - Apple Garageband", "url": "http://ernestmicklei.com/melrose/garageband/", "published_at": "2020-03-06T15:53:58+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d5dbaddb1", "title": "Introducing gmig, infrastructure as code for GCP", "url": "http://ernestmicklei.com/2018/03/introducing-gmig-infrastructure-as-code-for-gcp/", "published_at": "2018-03-21T07:10:49+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d5e09d0a2", "title": "GCP Next 2016 Demo", "url": "http://ernestmicklei.com/ubanita/gcpnext2016/", "published_at": "2016-04-10T20:29:49+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d5f052521", "title": "Schedule a Message", "url": "http://ernestmicklei.com/art-of-code/javascript-function-scheduler/", "published_at": "2016-03-01T10:28:10+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d5f3fa5fa", "title": "Ring Painter", "url": "http://ernestmicklei.com/art-of-code/ring-paint-opengl/", "published_at": "2016-02-27T07:18:47+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d5f9e57ab", "title": "Android Animated Chain", "url": "http://ernestmicklei.com/art-of-code/android-animated-chain/", "published_at": "2016-02-26T07:59:56+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d601f21f9", "title": "JSONPath", "url": "http://ernestmicklei.com/art-of-code/forest-jsonpath/", "published_at": "2016-02-25T20:13:05+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d606d606f", "title": "Blocky", "url": "http://ernestmicklei.com/art-of-code/blocky/", "published_at": "2016-02-23T20:31:47+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d60f484f4", "title": "Ring Benchmark Erlang", "url": "http://ernestmicklei.com/art-of-code/ring-benchmark-erlang/", "published_at": "2016-02-22T20:31:47+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d612614f4", "title": "2016 - together, we celebrate", "url": "http://ernestmicklei.com/ubanita/happy2016/", "published_at": "2016-01-01T20:29:49+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d615851a4", "title": "Kimtato, a simple physics playground", "url": "http://ernestmicklei.com/ubanita/kimtato/", "published_at": "2015-11-18T20:30:45+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d61c6b03b", "title": "Testing your REST api in Go with forest", "url": "http://ernestmicklei.com/2015/07/testing-your-rest-api-in-go-with-forest/", "published_at": "2015-07-04T06:28:12+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d61df34fc", "title": "Artreyu, an artifact assembly tool", "url": "http://ernestmicklei.com/2015/06/artreyu-an-artifact-assembly-tool/", "published_at": "2015-06-23T08:55:18+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d61f3a850", "title": "Line scanning in Go", "url": "http://ernestmicklei.com/2015/02/line-scanning-in-go/", "published_at": "2015-02-10T13:34:07+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d620a1813", "title": "Guava-like EventBus for Go", "url": "http://ernestmicklei.com/2014/11/guava-like-eventbus-for-go/", "published_at": "2014-11-12T23:06:45+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d62ac3846", "title": "Smalltalk collect on Go slice of int", "url": "http://ernestmicklei.com/2014/06/smalltalk-collect-on-go-slice-of-int/", "published_at": "2014-06-07T14:39:35+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d62b48444", "title": "Javascript CLI in Go using Otto", "url": "http://ernestmicklei.com/2014/02/javascript-cli-in-go-using-otto/", "published_at": "2014-02-12T09:52:21+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d63661aac", "title": "From multiple to single-value context in Go", "url": "http://ernestmicklei.com/2013/11/from-multiple-to-single-value-context-in-go/", "published_at": "2013-11-25T11:42:53+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d63ad9060", "title": "A case of sizing and draining buffered Go channels", "url": "http://ernestmicklei.com/2013/10/a-case-of-sizing-and-draining-buffered-go-channels/", "published_at": "2013-10-09T23:08:38+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d64909223", "title": "Hopwatch - a debugging tool for Go", "url": "http://ernestmicklei.com/2012/12/hopwatch-a-debugging-tool-for-go/", "published_at": "2012-12-14T07:54:46+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d64a6e5d9", "title": "Methods as objects in Go", "url": "http://ernestmicklei.com/2012/11/methods-as-objects-in-go/", "published_at": "2012-11-26T01:18:09+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d64aecb2c", "title": "go-restful first working example", "url": "http://ernestmicklei.com/2012/11/go-restful-first-working-example/", "published_at": "2012-11-24T09:13:06+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d64ed8b3c", "title": "First class functions in Go", "url": "http://ernestmicklei.com/2012/11/first-class-functions-in-go/", "published_at": "2012-11-13T09:49:18+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d650855ba", "title": "go-restful api design", "url": "http://ernestmicklei.com/2012/11/go-restful-api-design/", "published_at": "2012-11-11T10:18:54+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d65597202", "title": "renderShark - lean application server for renderSnake", "url": "http://ernestmicklei.com/2012/08/rendershark-lean-application-server-for-rendersnake/", "published_at": "2012-08-26T11:43:18+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d65d431d3", "title": "6hoek.com, a showcase for renderSnake", "url": "http://ernestmicklei.com/2011/08/6hoek.com-a-showcase-for-rendersnake/", "published_at": "2011-08-23T12:14:48+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d65e4a3eb", "title": "Getting from HTML design to renderSnake components", "url": "http://ernestmicklei.com/2011/03/getting-from-html-design-to-rendersnake-components/", "published_at": "2011-03-03T18:22:33+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d664d2ada", "title": "Using renderSnake to build the presentation layer in Spring-MVC", "url": "http://ernestmicklei.com/2011/02/using-rendersnake-to-build-the-presentation-layer-in-spring-mvc/", "published_at": "2011-02-13T16:57:58+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d673f1fc1", "title": "Soek.goodies.st improved", "url": "http://ernestmicklei.com/2010/09/soek.goodies.st-improved/", "published_at": "2010-09-28T23:25:47+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d68186018", "title": "Melissa for VA Smalltalk", "url": "http://ernestmicklei.com/2010/07/melissa-for-va-smalltalk/", "published_at": "2010-07-29T12:20:24+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d68ccbe8c", "title": "Google API access from Smalltalk using JNIPort", "url": "http://ernestmicklei.com/2010/04/google-api-access-from-smalltalk-using-jniport/", "published_at": "2010-04-29T01:13:13+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d692d8872", "title": "JQTouch library support for Seaside", "url": "http://ernestmicklei.com/2010/01/jqtouch-library-support-for-seaside/", "published_at": "2010-01-23T13:32:19+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d693eebd9", "title": "soek.goodies.st - exploring open-source Smalltalk libraries", "url": "http://ernestmicklei.com/2009/11/soek.goodies.st-exploring-open-source-smalltalk-libraries/", "published_at": "2009-11-13T10:48:13+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d698819a1", "title": "Making a package visible to WebVelocity", "url": "http://ernestmicklei.com/2009/09/making-a-package-visible-to-webvelocity/", "published_at": "2009-09-12T10:13:21+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d6a28aa4e", "title": "HypertextLogger for server application logs", "url": "http://ernestmicklei.com/2009/06/hypertextlogger-for-server-application-logs/", "published_at": "2009-06-22T13:53:39+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d6aef915a", "title": "Getting started with Glare-DataServices", "url": "http://ernestmicklei.com/2009/05/getting-started-with-glare-dataservices/", "published_at": "2009-05-26T14:30:41+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d6b670e21", "title": "VAStGoodies.com services API", "url": "http://ernestmicklei.com/2009/04/vastgoodies.com-services-api/", "published_at": "2009-04-24T12:01:37+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d6c65b73d", "title": "Getting Monticello package changes into VisualWorks", "url": "http://ernestmicklei.com/2009/04/getting-monticello-package-changes-into-visualworks/", "published_at": "2009-04-23T05:09:45+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d6cdd99db", "title": "Changing the browser font in VisualWorks", "url": "http://ernestmicklei.com/2009/04/changing-the-browser-font-in-visualworks/", "published_at": "2009-04-10T16:07:58+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d6d55af1f", "title": "Executable operation specifcations in Glare-DataServices", "url": "http://ernestmicklei.com/2009/04/executable-operation-specifcations-in-glare-dataservices/", "published_at": "2009-04-05T17:51:18+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d6e3b8e6c", "title": "Method Categorization and Browse Unsent for VA Smalltalk", "url": "http://ernestmicklei.com/2009/03/method-categorization-and-browse-unsent-for-va-smalltalk/", "published_at": "2009-03-27T09:15:21+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d6e63d76f", "title": "Class Search Browser for VA Smalltalk", "url": "http://ernestmicklei.com/2009/03/class-search-browser-for-va-smalltalk/", "published_at": "2009-03-25T13:02:44+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d6e8b62f8", "title": "VAStGoodies.com Statistics", "url": "http://ernestmicklei.com/2009/03/vastgoodies.com-statistics/", "published_at": "2009-03-25T05:39:28+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d6f7ebac4", "title": "Navigating Inspector for VA Smalltalk", "url": "http://ernestmicklei.com/2009/03/navigating-inspector-for-va-smalltalk/", "published_at": "2009-03-19T11:23:11+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d7000e0c3", "title": "FileBrowser for VA Smalltalk", "url": "http://ernestmicklei.com/2009/03/filebrowser-for-va-smalltalk/", "published_at": "2009-03-18T10:01:33+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d70381c21", "title": "Flex Remoting ignores class mapping", "url": "http://ernestmicklei.com/2009/03/flex-remoting-ignores-class-mapping/", "published_at": "2009-03-15T06:33:28+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d70db5fb6", "title": "Tiny, single-purpose class: ResultToFunctionAdaptor", "url": "http://ernestmicklei.com/2009/03/tiny-single-purpose-class-resulttofunctionadaptor/", "published_at": "2009-03-14T17:06:18+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d71a5e07f", "title": "Coding extensions for VisualAge for Smalltalk", "url": "http://ernestmicklei.com/2009/03/coding-extensions-for-visualage-for-smalltalk/", "published_at": "2009-03-13T09:54:02+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d724549f2", "title": "Importing directly from VAStGoodies.com", "url": "http://ernestmicklei.com/2009/03/importing-directly-from-vastgoodies.com/", "published_at": "2009-03-12T05:49:24+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d7252feb9", "title": "Tracking Object instances in VisualAge for Smaltalk", "url": "http://ernestmicklei.com/2009/03/tracking-object-instances-in-visualage-for-smaltalk/", "published_at": "2009-03-11T13:02:02+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d72b26098", "title": "Interactive compilation for VisualAge for Smalltalk", "url": "http://ernestmicklei.com/2009/03/interactive-compilation-for-visualage-for-smalltalk/", "published_at": "2009-03-04T06:09:56+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d7358a46d", "title": "Tooling available for VAStGoodies", "url": "http://ernestmicklei.com/2009/02/tooling-available-for-vastgoodies/", "published_at": "2009-02-26T08:18:39+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d73aaee58", "title": "Ring Benchmark - my first concurrent Erlang", "url": "http://ernestmicklei.com/2008/05/ring-benchmark-my-first-concurrent-erlang/", "published_at": "2008-05-23T17:47:39+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d741b077c", "title": "SelfDiagnose for Ruby on Rails", "url": "http://ernestmicklei.com/2008/05/selfdiagnose-for-ruby-on-rails/", "published_at": "2008-05-15T06:41:49+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d74f91594", "title": "Sorting XMLListCollection by attribute", "url": "http://ernestmicklei.com/2008/04/sorting-xmllistcollection-by-attribute/", "published_at": "2008-04-23T16:14:37+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d75b9ce9b", "title": "External configuration for SelfDiagnose", "url": "http://ernestmicklei.com/2008/04/external-configuration-for-selfdiagnose/", "published_at": "2008-04-23T13:46:38+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d765ff3ec", "title": "Foreign compile-time dependencies in SelfDiagnose", "url": "http://ernestmicklei.com/2008/04/foreign-compile-time-dependencies-in-selfdiagnose/", "published_at": "2008-04-11T05:26:25+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d76f85bd5", "title": "Amazon Web Services Test Drive Needed", "url": "http://ernestmicklei.com/2007/12/amazon-web-services-test-drive-needed/", "published_at": "2007-12-18T02:24:47+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d77d7117c", "title": "Flex Project version and buildnumber", "url": "http://ernestmicklei.com/2007/09/flex-project-version-and-buildnumber/", "published_at": "2007-09-06T06:32:24+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d78a28665", "title": "Deploying Flex using Capistrano", "url": "http://ernestmicklei.com/2007/08/deploying-flex-using-capistrano/", "published_at": "2007-08-02T12:21:21+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d79115b34", "title": "QuickSilver and Current Application", "url": "http://ernestmicklei.com/2007/07/quicksilver-and-current-application/", "published_at": "2007-07-20T00:28:18+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d79dc2139", "title": "Flex Bindable Hash", "url": "http://ernestmicklei.com/2007/07/flex-bindable-hash/", "published_at": "2007-07-17T02:58:00+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d7a7e63fc", "title": "s3browse.com", "url": "http://ernestmicklei.com/2007/02/s3browse.com/", "published_at": "2007-02-20T19:18:00+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d7b09accf", "title": "Helper classes considered bad OO", "url": "http://ernestmicklei.com/2006/03/helper-classes-considered-bad-oo/", "published_at": "2006-03-12T18:30:46+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d7b2df8bd", "title": "Application Diagnoses Itself", "url": "http://ernestmicklei.com/2005/09/application-diagnoses-itself/", "published_at": "2005-09-22T00:16:29+00:00" }, { "id": "01a08774-fb45-7180-9c23-883d7bfd67a8", "title": "Don'ts", "url": "http://ernestmicklei.com/2005/07/donts/", "published_at": "2005-07-19T14:37:58+00:00" } ] posts Claim your blog
Back to ernestmicklei.com
Blog · corpus.blog/blogs/ernestmicklei.com/posts

ernestmicklei.com

ernestmicklei.com

2026

2025

2024

2022

2021

2020

2018

2016

2015

2014

2013

2012

2011

2010

2009

2008

2007

2006

2005