<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Programming on Blog of Christian Felde</title><link>https://blog.cfelde.com/tags/programming/</link><description>Recent content in Programming on Blog of Christian Felde</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sun, 21 Jul 2024 20:16:59 +0000</lastBuildDate><atom:link href="https://blog.cfelde.com/tags/programming/index.xml" rel="self" type="application/rss+xml"/><item><title>4 years developing an API</title><link>https://blog.cfelde.com/2024/07/4-years-developing-an-api/</link><pubDate>Sun, 21 Jul 2024 20:16:59 +0000</pubDate><guid>https://blog.cfelde.com/2024/07/4-years-developing-an-api/</guid><description>&lt;p&gt;Towards the end of 2019 I started developing &lt;a href="https://sigbla.app" title=""&gt;Sigbla&lt;/a&gt;. And just now, around half way through 2024, I released the first beta version. It’s a &lt;a href="https://en.wikipedia.org/wiki/Source-available_software" title=""&gt;Source Available&lt;/a&gt; type of software, different from Open Source, but still developed in the open. But it wasn’t until towards the end of 2023 I even put it up on &lt;a href="https://github.com/sigbla/sigbla-app/" title=""&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In other words, a very slow process. And all just to be able to put some numbers in a table!?&lt;figure&gt;&lt;a href="simple_table.png"&gt;
&lt;img loading="lazy" src="simple_table.png"/&gt; &lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Raspberry Pi vs room temp</title><link>https://blog.cfelde.com/2023/12/raspberry-pi-vs-room-temp/</link><pubDate>Sun, 03 Dec 2023 16:38:06 +0000</pubDate><guid>https://blog.cfelde.com/2023/12/raspberry-pi-vs-room-temp/</guid><description>&lt;p&gt;About 2 weeks ago I released my &lt;a href="https://sigbla.app" title=""&gt;Sigbla framework&lt;/a&gt; for working with data in tables. As it also provides charting abilities, I now had the perfect tool to build myself a Raspberry Pi temperature dashboard.&lt;/p&gt;
&lt;p&gt;I have over the last few months been logging the temperature of my Raspberry Pi together with the room temperature (using an external sensor connected via USB). As my RPi is passively cooled, its idle temperature will depend on the room temperature.&lt;figure&gt;&lt;a href="rpi4-scaled.jpg"&gt;
&lt;img loading="lazy" src="rpi4-1024x948.jpg"
alt="My always running, occasionally busy, passively cooled, Raspberry Pi 4"/&gt; &lt;/a&gt;&lt;figcaption&gt;
&lt;p&gt;My always running, occasionally busy, passively cooled, Raspberry Pi 4&lt;/p&gt;</description></item><item><title>Don’t use blockchain</title><link>https://blog.cfelde.com/2021/08/dont-use-blockchain/</link><pubDate>Tue, 03 Aug 2021 18:19:21 +0000</pubDate><guid>https://blog.cfelde.com/2021/08/dont-use-blockchain/</guid><description>&lt;p&gt;Rarely do you find technology with so much hype as blockchain, where the best architectural advice is to avoid using it. Or, said with less hyperbole, to correctly minimize your direct dependency on blockchain.&lt;/p&gt;
&lt;p&gt;Why is that?&lt;/p&gt;
&lt;p&gt;Imagine software where thousands of processes all need to look at and verify the same state change. And imagine too that they all need to store a copy of the same information to ensure the state change is correct.&lt;/p&gt;</description></item><item><title>On the beauty of programming languages</title><link>https://blog.cfelde.com/2020/09/on-the-beauty-of-programming-languages/</link><pubDate>Thu, 03 Sep 2020 20:06:41 +0000</pubDate><guid>https://blog.cfelde.com/2020/09/on-the-beauty-of-programming-languages/</guid><description>&lt;p&gt;Lately I’ve been slowly reading “Graffiti Kings: New York Transit Art of the 1970s” by &lt;a href="https://en.wikipedia.org/wiki/Jack_Stewart_(artist)"&gt;Jack Stewart&lt;/a&gt;. I’m reading it because I’ve always been a fan of &lt;a href="https://en.wikipedia.org/wiki/Pop_art"&gt;pop art&lt;/a&gt;, and as I’ve started to understand more about its context during its period, I also want to understand graffiti and street art better.&lt;/p&gt;
&lt;p&gt;For me this is personally linked to the &lt;a href="https://en.wikipedia.org/wiki/Demoscene"&gt;demo- and introscene&lt;/a&gt;, which, as far as I’m concerned is art, and I think its context links pretty well into current digital art and scarcity which is now possible with blockchains, explored by, among others, &lt;a href="https://async.art/"&gt;async art&lt;/a&gt; and &lt;a href="https://superrare.co/"&gt;SuperRare&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Blockchain: Big but small</title><link>https://blog.cfelde.com/2020/05/blockchain-big-but-small/</link><pubDate>Tue, 05 May 2020 15:17:17 +0000</pubDate><guid>https://blog.cfelde.com/2020/05/blockchain-big-but-small/</guid><description>&lt;p&gt;Consider Amazon, the e-commerce bits of the company. While it might have started out as an online bookshop, it evolved into a generalized online marketplace.&lt;/p&gt;
&lt;p&gt;So what was critical in the success of Amazon?&lt;/p&gt;
&lt;p&gt;The internet would probably be a good answer to that question, among many other things. But how much of the overall software and business development efforts at Amazon do you think relate to core internet activities? Sure, it’s got a big online presence, which will require a lot of internet hardware, internet people and teams, ops, etc..&lt;/p&gt;</description></item><item><title>Distributed computing is less binary, more probability</title><link>https://blog.cfelde.com/2019/05/distributed-computing-is-less-binary-more-probability/</link><pubDate>Sat, 18 May 2019 15:56:48 +0000</pubDate><guid>https://blog.cfelde.com/2019/05/distributed-computing-is-less-binary-more-probability/</guid><description>&lt;p&gt;Since late 2011 I’ve been working on distributed computing platforms, where software that runs across more than one machine is running as what we’d call a cluster.&lt;/p&gt;
&lt;p&gt;Now, as I focus more on blockchain and DLT, a lot of the approaches to computing are similar.&lt;/p&gt;
&lt;p&gt;A lightweight version of the challenges with working on distributed systems can be found when working on software that uses multiple threads to do concurrent computing. Things can quickly get very ugly if you do not know how to approach the challenge.&lt;/p&gt;</description></item><item><title>Rust, is this the next big thing?</title><link>https://blog.cfelde.com/2015/03/rust-is-this-the-next-big-thing/</link><pubDate>Wed, 18 Mar 2015 00:53:17 +0000</pubDate><guid>https://blog.cfelde.com/2015/03/rust-is-this-the-next-big-thing/</guid><description>&lt;p&gt;In 2010 I wrote a blog post called “&lt;a href="https://blog.cfelde.com/2010/08/node-js-is-this-the-next-big-thing/"&gt;Node.js, is this the next big thing?&lt;/a&gt;”&lt;/p&gt;
&lt;p&gt;I came to think about that again this week when I randomly watched &lt;a href="https://www.youtube.com/watch?v=8z3h4Uv9YbE"&gt;Yevgeniy (Jim) Brikman’s video&lt;/a&gt; about the &lt;a href="https://www.playframework.com/"&gt;Play Framework&lt;/a&gt; at LinkedIn.&lt;/p&gt;
&lt;p&gt;Combine this with the progress of &lt;a href="http://www.scala-js.org/"&gt;Scala.js&lt;/a&gt; and &lt;a href="https://github.com/clojure/clojurescript"&gt;ClojureScript&lt;/a&gt; and I think we can conclude that node.js was very much an indicator of direction with simplification, unification and a return to an event driven model. All for good reasons. Look at job postings and you’ll find plenty of companies looking for the full-stack engineer. It’s difficult to be a full-stack engineer, especially a good one, if each tier in the stack is very different. It makes both economical and technical sense to have our tools reach across both server-side and client-side, while still maintaining a healthy separation of concerns with a 3-tier (or N-tier if N &amp;gt;= 3) system.&lt;/p&gt;</description></item><item><title>Playing with Clojure and sampling algos</title><link>https://blog.cfelde.com/2015/03/playing-with-clojure-and-sampling-algos/</link><pubDate>Sat, 07 Mar 2015 18:43:08 +0000</pubDate><guid>https://blog.cfelde.com/2015/03/playing-with-clojure-and-sampling-algos/</guid><description>&lt;p&gt;Over the last few months I’ve been learning Clojure. Best way to learn I find is to use what you learn for something you find useful or interesting. This morning, while browsing &lt;a href="https://news.ycombinator.com/"&gt;Hacker News&lt;/a&gt;, I found myself reading about &lt;a href="https://www.omniref.com/ruby/gems/stream_sampler/0.0.1/symbols/StreamSampler"&gt;Vitter’s reservoir sampling algorithm&lt;/a&gt;, with an example developed in Ruby.&lt;/p&gt;
&lt;p&gt;After spending a little bit of time thinking over the reasoning for why this algo would work as claimed, I decided to give it a quick spin in Clojure. I’ve &lt;a href="https://github.com/cfelde/VitterReservoirSampling"&gt;published my experiment on GitHub&lt;/a&gt; if you’re interested in a different take on the algo implementation, with some &lt;a href="http://incanter.org/"&gt;Incanter&lt;/a&gt; inspired visual confirmation of it’s claim.&lt;/p&gt;</description></item><item><title>Resource aware queue</title><link>https://blog.cfelde.com/2013/04/resource-aware-queue/</link><pubDate>Sun, 07 Apr 2013 17:58:45 +0000</pubDate><guid>https://blog.cfelde.com/2013/04/resource-aware-queue/</guid><description>&lt;p&gt;For the TLDRs:&lt;/p&gt;
&lt;p&gt;This blog post presents the reasoning behing a project called &lt;a href="https://github.com/cfelde/ResourcePriorityBlockingQueue"&gt;ResourcePriorityBlockingQueue&lt;/a&gt; which is a blocking queue implementation that:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Allows you to assign priority on tasks, just as with a PriorityBlockingQueue.&lt;/li&gt;
&lt;li&gt;Tasks may belong to task groups where each group may have a different priority. In that case, tasks are prioritized by group first, then task priority second.&lt;/li&gt;
&lt;li&gt;For a particular instance of a ResourcePriorityBlockingQueue you give it implementations of a ResourcePrioritizer and a ResourceAllocator, which further defines to which resources a particular task is made available.&lt;/li&gt;
&lt;li&gt;Focus as been put on making the code highly concurrent with as little synchronized code as possible. Lock free code is used where applicable, with efficient use of internal data structures. This gives ResourcePriorityBlockingQueue a performance characteristic which is comparable to that of a pure PriorityBlockingQueue when used in a similar fashion.&lt;/li&gt;
&lt;li&gt;It’s available on GitHub, so feel free to poke around. Any constructive feedback is always welcome.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Node.js, is this the next big thing?</title><link>https://blog.cfelde.com/2010/08/node-js-is-this-the-next-big-thing/</link><pubDate>Wed, 04 Aug 2010 20:29:14 +0000</pubDate><guid>https://blog.cfelde.com/2010/08/node-js-is-this-the-next-big-thing/</guid><description>&lt;p&gt;Although I did briefly notice &lt;a href="http://nodejs.org/"&gt;node.js&lt;/a&gt; a few months back, it didn’t really catch my interest until I saw this video; &lt;a href="http://www.youtube.com/watch?v=F6k8lTrAE2g"&gt;Node.js: JavaScript on the Server&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I’ve been developing JavaScript on the client (browser) side more or less for the last 5 years. And I didn’t enjoy it too much right away, but with libraries like &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;, &lt;a href="http://prototypejs.org/"&gt;Prototype&lt;/a&gt;, &lt;a href="http://script.aculo.us/"&gt;Scriptaculous&lt;/a&gt;, &lt;a href="http://www.sencha.com/products/js/"&gt;Ext JS&lt;/a&gt;, &lt;a href="http://code.google.com/webtoolkit/"&gt;GWT&lt;/a&gt;, etc + continued performance improvements in the JS engines this has changed.&lt;/p&gt;
&lt;p&gt;It’s now at the point that I feel a lot more productive creating “business apps” with HTML, JavaScript and CSS within a browser then I ever felt using things like Swing or the equivalent in the .NET world.&lt;/p&gt;</description></item></channel></rss>