<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Programming on Borkware Miniblog</title><link>https://markd2.github.io/miniblog/tags/programming/</link><description>Recent content in Programming on Borkware Miniblog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sat, 02 Mar 2024 13:32:16 -0500</lastBuildDate><atom:link href="https://markd2.github.io/miniblog/tags/programming/index.xml" rel="self" type="application/rss+xml"/><item><title>A Timing Utility</title><link>https://markd2.github.io/miniblog/posts/a-timing-utility/</link><pubDate>Sat, 02 Mar 2024 13:32:16 -0500</pubDate><guid>https://markd2.github.io/miniblog/posts/a-timing-utility/</guid><description/></item><item><title>Rock Heads</title><link>https://markd2.github.io/miniblog/posts/rock-heads/</link><pubDate>Sat, 02 Mar 2024 13:18:16 -0500</pubDate><guid>https://markd2.github.io/miniblog/posts/rock-heads/</guid><description/></item><item><title>Adventures in Debugging: Keeping a Log</title><link>https://markd2.github.io/miniblog/posts/adventures-in-debugging-keeping-a-log/</link><pubDate>Fri, 23 Feb 2024 22:20:43 -0500</pubDate><guid>https://markd2.github.io/miniblog/posts/adventures-in-debugging-keeping-a-log/</guid><description>I usually encounter two classes of bugs on a regular basis. The first is of the form &amp;ldquo;I think I know where this is&amp;rdquo; which won&amp;rsquo;t take long to find. The steps are pretty easy: Figure out how to reproduce it. Set a couple of breakpoints. Add some caveman debugging. Find the problem and fix it. These are my favorite kind of bugs because they&amp;rsquo;re over and done with quickly, I can get a quick hit of that &amp;ldquo;you done did good&amp;rdquo; glow from making a software system better, and then move on to some more interesting problem.</description></item><item><title>Thoughts on Debugging 2</title><link>https://markd2.github.io/miniblog/posts/thoughts-on-debugging-2/</link><pubDate>Wed, 28 May 2014 10:10:22 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/thoughts-on-debugging-2/</guid><description>You can find Part 1 of this series here
This has happened to everyone. A colleague walks into your space, erases your white board and starts scribbling on it. They say, &amp;ldquo;Hey, I&amp;rsquo;ve got this problem, and I wanted to know if you could help me with it,&amp;rdquo; followed by five minutes of boxes and circles and arrows.
And then comes, &amp;ldquo;Oh yeah, I see the problem! Thanks!&amp;rdquo; They walk out, and you haven&amp;rsquo;t even said a word.</description></item><item><title>Thoughts on Debugging, Part 1</title><link>https://markd2.github.io/miniblog/posts/thoughts-on-debugging-1/</link><pubDate>Thu, 15 May 2014 10:10:22 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/thoughts-on-debugging-1/</guid><description>You can find Part 2 of this series here
Im told Im a pretty good debugger. Friends come to me to help solve software problems. And occasionally it works. But what is a good debugger? What is debugging? Making software run better? Reducing the entropy of the universe? We all know what &amp;ldquo;Debugging&amp;rdquo; is because we all do it, but it&amp;rsquo;s still an interesting question. You could think of debugging in the same way as adding new features to software – you&amp;rsquo;re just taking this program from one state to another, like it&amp;rsquo;s a great big state machine.</description></item><item><title>Universal Troubleshooting Process</title><link>https://markd2.github.io/miniblog/posts/universal-troubleshooting-process/</link><pubDate>Wed, 15 Jan 2014 19:33:59 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/universal-troubleshooting-process/</guid><description>Last week I walked through finding and fixing My Favorite Bug. Observant readers may have noticed a multi-step process outlined by some &amp;lt;H3&amp;gt; tags. Get the Attitude, Do Corrective Maintenance, and so on. What was that?
It&amp;rsquo;s called the Universal Troubleshooting Process. The UTP was invented and copyrighted by Steve Litt in the 90&amp;rsquo;s. Prior to doing software, Steve used to fix stereo equipment, like when people would bring in tube amps that didn&amp;rsquo;t work any more.</description></item><item><title>My Favorite Bug</title><link>https://markd2.github.io/miniblog/posts/my-favorite-bug/</link><pubDate>Mon, 06 Jan 2014 23:19:58 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/my-favorite-bug/</guid><description>At the end of last year&amp;rsquo;s storytelling session, I mentioned that my favorite story is &amp;ldquo;Two programmers fixing a show-stopper bug over 24 hours, with the fix being a two-character change in the source code that resulted in a two-bit change in the compiled program.&amp;rdquo; Here it is.
The Problem It&amp;rsquo;s a Wednesday afternoon in 2006. I was just about to call it day when I get a call from the mothership.</description></item><item><title>Tell the Story</title><link>https://markd2.github.io/miniblog/posts/debugging-tell-the-story/</link><pubDate>Wed, 18 Dec 2013 20:08:06 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/debugging-tell-the-story/</guid><description>I love stories. I love telling stories, and I love listening to stories. I learn from stories. I believe that we, as a programming community, don&amp;rsquo;t tell enough personal stories around the (virtual) campfire.
Some may think it heresy, some may think &amp;ldquo;well duh&amp;rdquo;, but I believe that the programming profession is still really primitive. At the level of stone knives and bear skins. I air quote around the &amp;ldquo;engineer&amp;rdquo; part of Software Engineer.</description></item><item><title>Stochastic Profiling in Debugging</title><link>https://markd2.github.io/miniblog/posts/stochastic-profiling/</link><pubDate>Tue, 26 Nov 2013 21:33:43 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/stochastic-profiling/</guid><description>I&amp;rsquo;ve talked about stochastic profiling in the past, such as the fairly recent Rock Heads. It&amp;rsquo;s something I mention when I talk about debugging or performance tuning at various conferences. Interestingly enough, I had a need for it last night because I had stumbled into an often-reported, difficult-to-reproduce problem and wasn&amp;rsquo;t in a situation to hook up Instruments.
What is stochastic profiling? It&amp;rsquo;s fancy made-up name (but aren&amp;rsquo;t all names made up?</description></item><item><title>Clash of the Coders 2013: Winners Announced</title><link>https://markd2.github.io/miniblog/posts/clash-of-the-coders-2013/</link><pubDate>Thu, 09 May 2013 19:00:22 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/clash-of-the-coders-2013/</guid><description>(Author: Tasha Schroeder)
We recently held our second annual Clash of the Coders, a 72-hour app-building marathon where we test our technical prowess and compete for glory. &amp;ldquo;The winners are dangerously capable,&amp;rdquo; as Chief Learning Officer Aaron Hillegass says.
It was a very tough call, but Raisin&amp;rsquo; Elevens was the top team, with a project they named Krëndler. Team members Mark Dalrymple, Gregg Rothmeier and Steve Sparks took home the trophy and some pretty sweet prizes.</description></item><item><title>Static Cling</title><link>https://markd2.github.io/miniblog/posts/static-cling/</link><pubDate>Wed, 01 May 2013 20:32:56 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/static-cling/</guid><description>I was hanging out on the #macdev IRC channel on Freenode the other day when someone asked a question: &amp;ldquo;static has different meanings based on the context it is placed in, right?&amp;rdquo;. Indeed, it has different meaning. And yet it&amp;rsquo;s the same. Static is a C Koan.
An Ice Cream Koan static controls scope, which is the visibility of an entity. It tells the compiler &amp;ldquo;Here is this thing that I&amp;rsquo;m using, but don&amp;rsquo;t let anyone else know about it.</description></item><item><title>Spelunkhead</title><link>https://markd2.github.io/miniblog/posts/spelunkhead/</link><pubDate>Wed, 10 Apr 2013 19:57:19 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/spelunkhead/</guid><description>You can find all sorts of interesting and useful stuff in Apple&amp;rsquo;s header files. Don&amp;rsquo;t be afraid to explore them. I usually troll through the headers when a new major SDK version comes out (like IOS 7 probably will be this year) to see what&amp;rsquo;s new. I also use them for API exploration. As always, when in doubt be sure to read the official documentation. Apple&amp;rsquo;s documentation is good. It&amp;rsquo;s also voluminous.</description></item><item><title>Experimentially Yours</title><link>https://markd2.github.io/miniblog/posts/experimentally-yours/</link><pubDate>Wed, 02 Jan 2013 17:56:55 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/experimentally-yours/</guid><description>One of the realities in programming these days is job mobility. You end up working at different companies on different projects with different people. And they all have different ways of working, individually and with each other. You can focus on the negative (oh my, yet another style guide and work logging procedure) or look for the bright side. I try to focus on the positive, and try to pick up good habits when I&amp;rsquo;m on a job.</description></item><item><title>You Need Source Code Control Now</title><link>https://markd2.github.io/miniblog/posts/you-need-source-code-control-now/</link><pubDate>Wed, 05 Dec 2012 11:24:53 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/you-need-source-code-control-now/</guid><description>(2024 update: I&amp;rsquo;m SO happy that source code control, especially git via github, is ubiquitous, and pretty much table-stakes these days. Saving this blogpost to give a bit of historical perspective)
If you&amp;rsquo;re already using source code control, you totally rock. You can skip this posting if you wish, but check out Off-Site Backups before you go.
I&amp;rsquo;ve been a professional software developer (meaning I&amp;rsquo;ve fooled folks in the paying me money to let me program for them) for the last two three decades or so, and I have always used a source code control system.</description></item><item><title>Tiny Programs the Atomic Edition</title><link>https://markd2.github.io/miniblog/posts/tiny-programs-the-atomic-edition/</link><pubDate>Sun, 28 Oct 2012 17:22:40 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/tiny-programs-the-atomic-edition/</guid><description>Readers of this blog might notice a pattern in my postings. They&amp;rsquo;re occasionally accompanied by a small program to demonstrate some interesting point.
Much of the sample code in Advanced Mac OS X Programming : The Big Nerd Ranch Guide are in a similar form: a small stand-alone program that demonstrates some isolated bit of functionality.
I love small little programs. They&amp;rsquo;re not just a pedagogical tool (even though they&amp;rsquo;re great for that).</description></item><item><title>Peek a View</title><link>https://markd2.github.io/miniblog/posts/peek-a-view/</link><pubDate>Sun, 16 Sep 2012 19:59:46 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/peek-a-view/</guid><description>When I’m developing new code, my usual habit is to do a lot of small iterations. That gives me a little bit of success fairly often. I’m not as happy if I have to work for a long time until I can see something appearing on the screen. (plus I enjoy the little dopamine hits every time I get something tiny working)
When I’m writing a new NS- or UI-view, I often write a pretty generic -drawRect: so that I ca see that I’m actually drawing something on the screen:</description></item><item><title>A Bit on Warnings</title><link>https://markd2.github.io/miniblog/posts/a-bit-on-warnings/</link><pubDate>Wed, 08 Aug 2012 20:38:36 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/a-bit-on-warnings/</guid><description>I like warnings. I really do. It reminds me that the compiler loves me and is looking out for me. (OK, the compiler at least tolerates me.)
What is a warning? It&amp;rsquo;s when the compiler notices that you&amp;rsquo;re doing something that might not be what you really intend. The compiler&amp;rsquo;s job, ultimately, is to do exactly what you tell it to do. But we&amp;rsquo;re talking slabs of meat instead of computational machines, we make mistakes.</description></item><item><title>Bool's Sharp Corners</title><link>https://markd2.github.io/miniblog/posts/bools-sharp-corners/</link><pubDate>Sun, 06 May 2012 19:38:09 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/bools-sharp-corners/</guid><description>Update October 2013 – On 64-bit iOS (device and simulator) BOOL is now actually bool, so the sharp corners have thankfully gone away for that platform. For everything else, though&amp;hellip;
Objective-C is actually a pretty old language, dating back from from the mid eighties. As such, it&amp;rsquo;s got some sharp corners here and there due to limitations of early C. Today&amp;rsquo;s sharp corner is BOOL.
BOOL seems innocuous enough. It holds a boolean value.</description></item><item><title>My First Professional Bug</title><link>https://markd2.github.io/miniblog/posts/my-first-professional-bug/</link><pubDate>Mon, 04 Apr 2011 00:23:17 +0000</pubDate><guid>https://markd2.github.io/miniblog/posts/my-first-professional-bug/</guid><description>Mike Ash&amp;rsquo;s recent Friday Q&amp;amp;A about signals mentioned SIGWINCH, the hearing of which always sends me down memory lane. My first professional bug was centered around SIGWINCH. By &amp;ldquo;professional bug&amp;rdquo;, I mean a bug that someone paid me actual money to fix during a period of employment.
Straight out of college in the early 90&amp;rsquo;s I went to work for a company called Visix Software, which at the time sold a product called Looking Glass, a file browser much like the Macintosh Finder but for Unix.</description></item><item><title>STUC on You</title><link>https://markd2.github.io/miniblog/posts/stuc-on-you/</link><pubDate>Sat, 08 Jan 2005 14:57:04 -0500</pubDate><guid>https://markd2.github.io/miniblog/posts/stuc-on-you/</guid><description>(Originally published at Mac Edition)
(2024 update: this is mainly here to describe some of the most fun I&amp;rsquo;ve had with computers, digging into more hardware-level stuff and exercising my C skillZ. Also probably the first long-form blog posts I&amp;rsquo;ve written. I&amp;rsquo;ve done little editing outside of what Porruka has already done)
Early in the summer of 2003, I was contacted for a small contracting gig involving pulling data off of SCSI DAT tapes that were made from some other unix systems.</description></item></channel></rss>