PageSourceSearch

http://www.scsc.no/blog/index.html

html scsc.no collected 2026-10-05 03:45:03 UTC 25,641 bytes, 418 lines download raw bytes

1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html>
3<head>
4<title>In between midnight summer nights and dark winter days</title>
5<link rel=stylesheet href="../style/blog.css" type="text/css">
6</head>
7
8<body>
9
10<div id="header">
11<table border=0 width="100%" style="margin-top:8px; "><tr>
12<td valign=center width="50%" style="vertical-align:center; text-align: left;">
13<a href="http://www.scsc.no/">Yellow Lemon Software</a>
14</td>
15<td valign=center width="50%" style="vertical-align:center; text-align: right;">
16<a href="http://www.scsc.no/blog/">Blog</a>
17</td>
18</tr></table>
19<hr>
20</div>
21
22<div id="content">
23<p><img src="blog-header.jpg" alt="In between midnight summer nights and dark winter days"></p>
24
25<!--
26<table border=0 width="100%" style="font-size: 10px;"><tr>
27<td valign=top width="10%" style="vertical-align:top; text-align: left;">
28<a href="http://www.scsc.no">SCSC</a></td>
29<td valign=top style="vertical-align:top; text-align: right;">
30<a href="mailto:[email protected]">Get in touch: [email protected]</a></td>
31</tr></table>
32<hr>
33-->
34
35<table border=0 width="100%" style="margin-top:32px; font-size: 10px;"><tr>
36<td valign=top width="78%" style="vertical-align:top; text-align: left;">
37
38
39<!-- border and margin -->
40<div id="border" style="margin-bottom: 32px; margin-right:18px;">
41
42<table border=0 width="100%"><tr>
43<td valign=bottom width="80%" style="vertical-align:bottom; text-align: left;">
44<b style="font-size: 16px; "><a href="2011/07-28-running-itunes-in-a-debugger-gdb.html">Running iTunes in a debugger (gdb)</a></b></td>
45<td valign=bottom style="vertical-align:bottom; text-align: right;">
46<span style="font-size: 10px; ">Thu, Jul 28 2011 11:04<br><a href="http://www.scsc.no/blog/2011/07-28-running-itunes-in-a-debugger-gdb.html#disqus_thread">Comments</a></span></td></tr></table>
47
48<div style="margin-left:5px; font-size: 11px; ">
49<p>iTunes is one of a few Apple-provided applications that prevent you from attaching a debugger. This can be problematic if you are, say, developing an iTunes visualizer. iTunes accomplishes this by calling <span style="code">ptrace(PT_DENY_ATTACH, 0, 0, 0)</span>, which prevents future attempts at tracing the process. Debuggers like gdb use ptrace to control the process they debug. Luckily, there's a way to intercept the ptrace-call before it completes, simply by starting iTunes in the debugger. Let's see what happens when we run iTunes from gdb in Terminal, without doing anything:</p>
50
51<p style="code"><pre>
52[#] cd /Applications/iTunes.app/Contents/MacOS/
53[#] gdb ./iTunes
54<i>gdb shows some license info</i>
55(gdb) <b>run</b>
56Starting program: /Applications/iTunes.app/Contents/MacOS/iTunes 
57Reading symbols for shared libraries ... done
58Program exited with code 055.
59</pre></p>
60
61<p>Not quite what we want. Let's see what happens when we put a breakpoint on ptrace before starting iTunes:</p>
62
63<p style="code"><pre>
64(gdb) <b>br ptrace</b>
65Breakpoint 1 at 0x7fff90592d14
66(gdb) run
67Starting program: /Applications/iTunes.app/Contents/MacOS/iTunes 
68Reading symbols for shared libraries . done
69
70Breakpoint 1, 0x00007fff90592d14 in ptrace ()
71(gdb)
72</pre></p>
73
74<p>We're stopped at the entry to the <span style="code">ptrace()</span> function. Now, at this point we have two options: We can force the function to return, setting its return value to 0 to indicate no error, or we can modify the arguments to the ptrace call. Either way works, but this post will demonstrate the latter approach.</p>
75
76<p>We know that iTunes calls ptrace with <span style="code">PT_DENY_ATTACH</span> as its argument. Looking at the ptrace header file, we discover that <span style="code">PT_DENY_ATTACH</span> corresponds to the value 31:</p>
77
78<p style="code"><pre>
79<i>From /usr/include/sys/ptrace.h:</i>
80<b></b>#define PT_DENY_ATTACH 31
81</pre></p>
82
83<p>Now, let's look at the contents of the registers:</p>
84
85<p style="code"><pre>
86(gdb) <b>info registers</b>
87rax            0x24a0   9376
88rbx            0x7fff5fc35120 140734800023840
89rcx            0x0      0
90rdx            0x0      0
91rsi            0x24a0   9376
92<b>rdi          0x1f   31</b>
93<i>Rest of register contents snipped</i>
94</pre></p>
95
96<p>The register rdi looks promising. Let's try changing it to the value matching <span style="code">PT_DETACH</span>:</p>
97
98<p style="code"><pre>
99(gdb) <b>set $rdi=11</b>
100(gdb) info registers
101rax            0x24a0   9376
102rbx            0x7fff5fc35120 140734800023840
103rcx            0x0      0
104rdx            0x0      0
105rsi            0x24a0   9376
106<b>rdi          0xb    11</b>
107(gdb) continue
108Continuing.
109Reading symbols for shared libraries . done
110<i>Symbols keep loading, and iTunes launches. And we're still attached!</i>
111</pre></p>
112
113<p>So that seemed to work brilliantly. At this point, you can use the debugger as normal, pausing iTunes when you need to, getting backtraces, and catch errors in your visualizer. The only caveat is that detaching iTunes using gdb will probably hang, since we replaced <span style="code">PT_DENY_ATTACH</span> with <span style="code">PT_DETACH</span> earlier. This can be worked around by using the &quot;return immediately&quot; approach I alluded to earlier; doing this will be left as an exercise for the reader. To make gdb exit, you will probably have to kill it. As a final note, I should point out that this approach has only been tested on Lion (10.7), although I suspect it will work just as well in earlier releases of Mac OS X. Have fun!</p>
114
115
116</div>
117</div>
118
119
120<!-- border and margin -->
121<div id="border" style="margin-bottom: 32px; margin-right:18px;">
122
123<table border=0 width="100%"><tr>
124<td valign=bottom width="80%" style="vertical-align:bottom; text-align: left;">
125<b style="font-size: 16px; "><a href="2011/07-25-the-volumesmobilebackups-directory.html">The /Volumes/MobileBackups directory</a></b></td>
126<td valign=bottom style="vertical-align:bottom; text-align: right;">
127<span style="font-size: 10px; ">Mon, Jul 25 2011 14:04<br><a href="http://www.scsc.no/blog/2011/07-25-the-volumesmobilebackups-directory.html#disqus_thread">Comments</a></span></td></tr></table>
128
129<div style="margin-left:5px; font-size: 11px; ">
130<p>Lion's release introduces a small but annoying bug that manifests in <a href="http://www.scsc.no/products/folderglance/">FolderGlance</a>. If you have selected to show mounted volumes in either the context menu or the menu extra, you will get all mounted volumes, as well as a volume whose name consists of seemingly random characters:</p>
131
132<center><img src="2011/mobilebackups.png"></center>
133
134<p>This volume is actually the new &quot;MobileBackups&quot; volume, created and maintained by Time Machine. According to <a href="http://arstechnica.com/apple/reviews/2011/07/mac-os-x-10-7.ars/18">John Siracusa's review of Lion on Ars Technica</a>, this volume is actually an NFS-mounted network volume, which is confirmed when running the mount-command:</p>
135
136<p class="code"><pre>
137/dev/disk0s2 on / (hfs, local, journaled)
138devfs on /dev (devfs, local, nobrowse)
139map -hosts on /net (autofs, nosuid, automounted, nobrowse)
140map auto_home on /home (autofs, automounted, nobrowse)
141<b>localhost:/DOeN59ypHYcKHEzVPFLU0q</b> on <b>/Volumes/MobileBackups</b> ...
142</pre></p>
143
144<p>So the mount path, &quot;/Volumes/MobileBackups&quot; has a nice, human-readable name, whereas the path to the network volume seems to be where things are getting screwed up. For some reason, FolderGlance picks the wrong part of the name to display. Why?</p>
145
146<p>
146To support localized file-, application- and folder-names, FolderGlance filters any name it will display to users through a function called <span style="code">LSCopyDisplayNameForRef()</span>. For most English users, this doesn't matter much, since display names and actual file names are usually the same. However, for international users it's an important feature; instead of seeing an unfamiliar directory structure (especially in home directories and when listing the contents of the /Applications folder), application and folder names will appear in their local language - at least where available.</p>
147
148<p>It turns out that it's the use of the <span style="code">LSCopyDisplayNameForRef()</span> function that causes this annoying UI issue in FolderGlance. Two out of the three APIs provided by Apple to convert paths to display names provide the desired name (MobileBackups), while the third returns an incorrect display name (the random character string). The two working APIs are:</p>
149
150<ul>
151<li>NSFileManager's <span style="code">displayNameForPath:</span></li>
152<li><span style="code">LSCopyDisplayNameForURL</span></li>
153</ul>
154
155<p>Obviously, the non-working API is <span style="code">LSCopyDisplayNameForRef</span>. I've submitted this bug to Apple as bug ID <a href="rdar://9833110">9833110</a>. While I wait for Apple to fix it, I've added some custom code to handle the case of /Volumes/MobileBackups, which is included in the just-released version 3.0.2 of FolderGlance. An option to hide this volume entirely will probably be added in the future. Code to see the behaviour of this bug is <a href="2011/test-displayname.m">available here</a>. You can compile it by executing the following command:<br>
156<span style="code">gcc -Wall -framework Cocoa test-displayname.m -o test-displayname</span></p>
157
158
159
160</div>
161</div>
162
163
164<!-- border and margin -->
165<div id="border" style="margin-bottom: 32px; margin-right:18px;">
166
167<table border=0 width="100%"><tr>
168<td valign=bottom width="80%" style="vertical-align:bottom; text-align: left;">
169<b style="font-size: 16px; "><a href="2011/07-20-folderglance-3.0.1-supports-lion.html">FolderGlance 3.0.1 supports Lion</a></b></td>
170<td valign=bottom style="vertical-align:bottom; text-align: right;">
171<span style="font-size: 10px; ">Wed, Jul 20 2011 19:42<br><a href="http://www.scsc.no/blog/2011/07-20-folderglance-3.0.1-supports-lion.html#disqus_thread">Comments</a></span></td></tr></table>
172
173<div style="margin-left:5px; font-size: 11px; ">
174<p>Apple released Mac OS X 10.7 Lion today, and I'm releasing FolderGlance 3.0.1. The new release brings a number of fixes and minor new features, but importantly, it also makes FolderGlance work with the new OS release from Apple. Other new features include a setting to turn the display of volumes in the menu extra on or off, and the ability to mount aliases to network volumes when mousing over such aliases in FolderGlance's menus with the Option-key held down.</p>
175
176<p>There is currently one known bug with FolderGlance on Lion: It will display a very unfriendly name for the new &quot;MobileBackups&quot; volume <a href="http://arstechnica.com/apple/reviews/2011/07/mac-os-x-10-7.ars/18">created by Lion on portable Macs</a>. This will hopefully be fixed in the next version of FolderGlance.</p>
177
178<p>If you're curious as to how FolderGlance can continue working on Lion when Apple has disabled support for Scripting Additions, feel free to <a href="mailto:[email protected]">drop me a line</a> or let me know in the comments.</p>
179
180
181</div>
182</div>
183
184
185<!-- border and margin -->
186<div id="border" style="margin-bottom: 32px; margin-right:18px;">
187
188<table border=0 width="100%"><tr>
189<td valign=bottom width="80%" style="vertical-align:bottom; text-align: left;">
190<b style="font-size: 16px; "><a href="2011/03-03-quick-tip-speeding-up-xcode-compilations.html">Quick tip: Speeding up Xcode compilations</a></b></td>
191<td valign=bottom style="vertical-align:bottom; text-align: right;">
192<span style="font-size: 10px; ">Thu, Mar 03 2011 12:06<br><a href="http://www.scsc.no/blog/2011/03-03-quick-tip-speeding-up-xcode-compilations.html#disqus_thread">Comments</a></span></td></tr></table>
193
194<div style="margin-left:5px; font-size: 11px; ">
195<p>I just saw some benchmarks over at <a href="http://www.phoronix.com/vr.php?view=15737">Phoronix</a> comparing Snow Leopard and the developer preview of Lion. One of the differences is that the Lion kernel boots in 64-bit mode by default. One of their benchmarks measures compile time, and the results indicate that a 64-bit kernel might boost the speed of compiling code. Noticing that my MacBook Pro was running the 32-bit version of the Snow Leopard kernel, I decided to run some informal tests myself.</p>
196
197<p>My test-case was a full build of the <a href="http://www.scsc.no/products/folderglance/">FolderGlance</a> code base. I timed the build with my iPhone, so the results are not completely accurate. However, barring any measurement inaccuracies, the results were quite good:</p>
198
199<table class="lines">
200<tr><td style="border:none;"><b>
200Kernel</b></td><td>32-bit</td><td>64-bit</td></tr>
201<tr><td style="border:none;"><b>Time</b></td><td>57.3 s</td><td>50.2 s</td></tr>
202</table>
203
204<p>Pretty good for simply switching to the 64-bit kernel! In case you are wondering: Switching to the 64-bit kernel can be done by either holding down the 6 and 4 keys while your Mac is booting, or you can execute the following command from Terminal to make the change persistent:</p>
205
206<pre style="code">sudo systemsetup -setkernelbootarchitecture x86_64</pre>
207
208<p>Read more here: <a href="http://support.apple.com/kb/HT3773">http://support.apple.com/kb/HT3773</a></p>
209
210<p>This got me wondering if I could speed up compiles further using additonal processes. Xcode defaults to using the same number of sub-processes as the number of cores your Mac has. My MacBook is of the Intel Core i7 variety, with two cores, 8 gigs of RAM and an SSD disk. I figured I might try to up the ante, since compiles are often I/O-bound rather than CPU-bound, although I was skeptical since my Mac has an SSD disk.</p>
211
212<p>I configured Xcode to use 3, 4 and 8 subprocesses, instead of the default 2. You can set the number of processes Xcode uses from Terminal as follows:</p>
213
214<pre style="code">defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 4</pre>
215
216<p>These are the results I got (all on the 64-bit kernel):</p>
217
218<table class="lines">
219<tr><td style="border:none;"><b>Processes</b></td><td>2</td><td>3</td><td>4</td><td>8</td></tr>
220<tr><td style="border:none;"><b>Time</b></td><td>57.3 s</td><td>44.5 s</td><td>43.3 s</td><td>47.0 s</td></tr>
221</table>
222
223<p>So, for now I'll up the number of subprocesses Xcode uses to 4, since that seems to provide the best performance for this particular use case. The best number will also vary depending on the disk you use, how much memory you have available and <a href="http://www.cocoabuilder.com/archive/xcode/270053-xcode-compiling-threads.html">the kind of code you are compiling</a>.</p>
224
225
226</div>
227</div>
228
229
230<!-- border and margin -->
231<div id="border" style="margin-bottom: 32px; margin-right:18px;">
232
233<table border=0 width="100%"><tr>
234<td valign=bottom width="80%" style="vertical-align:bottom; text-align: left;">
235<b style="font-size: 16px; "><a href="2011/03-02-folderglance-3.0.html">FolderGlance 3.0</a></b></td>
236<td valign=bottom style="vertical-align:bottom; text-align: right;">
237<span style="font-size: 10px; ">Wed, Mar 02 2011 09:09<br><a href="http://www.scsc.no/blog/2011/03-02-folderglance-3.0.html#disqus_thread">Comments</a></span></td></tr></table>
238
239<div style="margin-left:5px; font-size: 11px; ">
240<p>Yesterday, I released FolderGlance 3.0 (along with a redesign of the Yellow Lemon Software website - though my blog will keep its current design for now). The new version has been a long time coming. I did <a href="http://www.mactech.com/articles/mactech/Vol.26/26.05/2605Spotlight/index.html">an interview with MacTech</a> last May, guesstimating that FolderGlance 3 would arrive &quot;sometime this summer&quot; - this summer being last summer. Well, it's here now, and I urge you <a href="http://www.scsc.no/products/folderglance/">to give it a go</a>.</p>
241
242<p><center><img src="http://www.scsc.no/pr/FolderGlance-3.0-screenshot.jpg" width="500" /><br>
243A screenshot of FolderGlance 3.0 previewing an image.</center></p>
244
245<p>So, what's new? Well, the new version has two main new features, in addition to sporting a completely redesigned preference pane. The first is the new menu extra, which gives you access to custom folders, volumes and Spotlight search results from your menu bar. You can browse things as normal - the main difference is that the menu extra doesn't pick up the current selection from the Finder. Implementing the Spotight functionality - especially the user interface, believe it or not -  was a very interesting challenge, and I'm not entirely certain that I've nailed it 100% yet, though at least for me, it works very well. My trials and tribulations implementing the text entry and menu item for this will hopefully be the subject of a future blog post (though, given my track record on predicting new versions of FolderGlance, it might take some time).</p>
246
247<p>The other new feature which I'm really excited about is scripts. When Apple launched Snow Leopard, they also removed support for Contextual Menu Items. I managed to <a href="http://www.scsc.no/blog/2009/09-03-folderglance-and-snow-leopard.html">work around that limitation</a> with FolderGlance, but I still wanted more options for customizing my menu beyond what could be done with Services. A step along that path is support for custom, context-sensitive scripts. Scripts in FolderGlance can operate on the current selection, the parent folder of the current selection, or on folders you browse to. FolderGlance ships with two simple scripts, and an additional two sample scripts to demonstrate what you can do with the new support for scripts. Scripts that don't operate on the selection also work in the menu extra, by the way.</p>
248
249<p>The first script simply calculates the total disk usage for items in the current selection. The C++ source code for this script is on the disk image, if you want to understand how it works or customize its output. The Open Terminal script is available in any folder you browse to, and lets you open a Terminal session with the working directory set to the folder you browsed to.</p>
250
251<p>The two additional sample scripts, which are not installed by default, demonstrate how you can use FolderGlance's script support to build your own menu hierarchies in the Finder's context menu. If you do anything cool with this, feel free to let me know!</p>
252
253<p>If you want to learn more about FolderGlance, check out the screencast, look at the screenshots or give it a go here: <a href="http://www.scsc.no/products/folderglance/">http://www.scsc.no/products/folderglance/</a></p>
254
255<p>Enjoy the new version!</p>
256
257</div>
258</div>
259
260
261</td>
262<td valign=top style="vertical-align:top; text-align: left;">
263<div style="margin-bottom: 32px; margin-left:6px; ">
264<p><a href="http://www.scsc.no/daniel/"><b>About me</b></a><br>
265My name is Daniel St&oslash;dle. I live in Troms&oslash;, Norway, at 69.66&deg; North. By day, I work as a researcher at the <a href="http://www.norut.no/">
265Northern Research Institute</a> in Norway; by night, I run my company <http://www.scsc.no/">SCSC.</a> I do most of my development on and for Mac OS X. My research is geared towards interaction with and visualization of geospatial data. Read more on my <a href="http://www.scsc.no/daniel/">personal page</a>.</p>
266
267<p style="margin-top:18px;"><a href="http://www.scsc.no/"><b>Software</b></a><br>
268<div style="margin-top:6px;"><a href="../products/folderglance/"><img border=0 src="../products/folderglance/FolderGlance.png" width=32 align=center><span style="margin-left:6px;">FolderGlance</span></a><br></div>
269<div style="margin-top:6px;"><a href="../products/screensieve/"><img border=0 src="../products/screensieve/ScreenSieve.png" width=32 align=center><span style="margin-left:6px;">Screen Sieve</span></a><br></div>
270<div style="margin-top:6px;"><a href="../products/ubb/"><img border=0 src="../products/ubb/UniversalBackButton.png" width=32 align=center><span style="margin-left:6px;">Universal Back Button</span></a><br></div>
271<div style="margin-top:6px;"><a href="../products/spaces-spaces-spaces/"><img border=0 src="../products/spaces-spaces-spaces/SpacesSpacesSpaces.png" width=32 align=center><span style="margin-left:6px;">Spaces.. Spaces.. Spaces.. </span></a><i>(Retired)</i><br></div>
272<div style="margin-top:6px;"><a href="http://www.devon-technologies.com/products/desktoptransporter/"><img border=0 src="../legacy/Desktop-Transporter.png" width=32 align=center><span style="margin-left:6px;">Desktop Transporter</span></a><i>(Retired)</i><br></div></p>
273
274<p style="margin-top:18px;"><b>Contact me</b><br>
275E-mail: <a href="mailto:[email protected]">[email protected]</a></p>
276
277<p style="margin-top:18px;"><b>Recent posts</b><br>
278
279<hr><b>2011</b><br>
280<i>Jul 28:</i> <a href="2011/07-28-running-itunes-in-a-debugger-gdb.html">Running iTunes in a debugger (gdb)</a><br>
281
282
283<i>Jul 25:</i> <a href="2011/07-25-the-volumesmobilebackups-directory.html">The /Volumes/MobileBackups directory</a><br>
284
285
286<i>Jul 20:</i> <a href="2011/07-20-folderglance-3.0.1-supports-lion.html">FolderGlance 3.0.1 supports Lion</a><br>
287
288
289<i>Mar 03:</i> <a href="2011/03-03-quick-tip-speeding-up-xcode-compilations.html">Quick tip: Speeding up Xcode compilations</a><br>
290
291
292<i>Mar 02:</i> <a href="2011/03-02-folderglance-3.0.html">FolderGlance 3.0</a><br>
293
294
295<i>Jan 07:</i> <a href="2011/01-07-making-universal-back-button-work-on-10.6.5-and-later.html">Making Universal Back Button work on 10.6.5 and later</a><br>
296
297<hr><b>2010</b><br>
298<i>Sep 03:</i> <a href="2010/09-03-creating-pthreads-in-c++-using-pointers-to-member-functions.html">Creating pthreads in C++ using pointers to member functions</a><br>
299
300
301<i>May 31:</i> <a href="2010/05-31-quickly-open-urls-in-terminal.html">Quickly open URLs in Terminal</a><br>
302
303
304<i>May 31:</i> <a href="2010/05-31-snow-leopard-and-automatically-submitted-crash-reports.html">Snow Leopard and automatically submitted Crash Reports</a><br>
305
306
307<i>May 27:</i> <a href="2010/05-26-universal-back-button-released-for-mac-os-x.html">Universal Back Button released for Mac OS X</a><br>
308
309
310<i>May 22:</i> <a href="2010/05-22-the-22-megapixel-laptop.html">The 22 Megapixel Laptop</a><br>
311
312
313<i>Feb 09:</i> <a href="2010/02-09-folderglance-on-macupdate-promo.html">FolderGlance on MacUpdate Promo</a><br>
314
315<hr><b>2009</b><br>
316<i>Sep 28:</i> <a href="2009/09-28-folderglance-2.5.3-is-out.html">FolderGlance 2.5.3 is out</a><br>
317
318
319<i>Sep 21:</i> <a href="2009/09-21-folderglance-2.5.1-adds-features-and-fixes-bugs.html">FolderGlance 2.5.1 adds features and fixes bugs</a><br>
320
321
322<i>Sep 16:</i> <a href="2009/09-16-folderglance-2.5-released.html">FolderGlance 2.5 released!</a><br>
323
324
325<i>Sep 10:</i> <a href="2009/09-10-intriguing-snow-leopard-ships-with-the-iphones-multi-touch-api-built-in.html">Intriguing: Snow Leopard ships with the iPhone's multi-touch API built-in</a><br>
326
327
328<i>Sep 03:</i> <a href="2009/09-03-folderglance-and-snow-leopard.html">FolderGlance and Snow Leopard</a><br>
329
330
331<i>Mar 15:</i> <a href="2009/03-14-fixing-keynote-08-and-09-to-work-with-the-scripting-bridge.html">Fixing Keynote '08 and '09 to work with the Scripting Bridge</a><br>
332
333
334<i>Feb 26:</i>
334 <a href="2009/02-25-a-website-in-an-image.html">A website in an image</a><br>
335
336
337<i>Feb 09:</i> <a href="2009/02-09-display-wall-multi-touch.html">Display wall multi-touch</a><br>
338
339<hr><b>2008</b><br>
340<i>Feb 19:</i> <a href="2008/02-18-spaces..-spaces..-spaces..-retires.html">Spaces.. Spaces.. Spaces.. retires</a><br>
341
342
343<i>Feb 08:</i> <a href="2008/02-08-how-to-reverse-engineering-the-dock-to-fix-spaces.html">How-to: Reverse engineering the Dock to fix Spaces</a><br>
344
345
346<i>Jan 25:</i> <a href="2008/01-25-interacting-with-wall-sized-displays.html">Interacting with wall-sized displays</a><br>
347
348<hr><b>2007</b><br>
349<i>Dec 20:</i> <a href="2007/12-20-interesting-finder-bug.html">Interesting Finder bug</a><br>
350
351
352<i>Dec 06:</i> <a href="2007/12-06-developing-applications-for-the-ipod-touch-and-the-iphone.html">Developing applications for the iPod touch (and the iPhone)</a><br>
353
354
355<i>Nov 15:</i> <a href="2007/11-15-spaces..-spaces..-spaces..-and-...html">Spaces.. Spaces.. Spaces.. and 10.5.1</a><br>
356
357
358<i>Nov 15:</i> <a href="2007/11-15-thread-creation-using-pthreadcreate-on-leopard.html">Thread creation using pthread_create() on Leopard</a><br>
359
360
361<i>Nov 13:</i> <a href="2007/11-13-spaces..-spaces..-spaces...html">Spaces.. Spaces.. Spaces..</a><br>
362
363
364<i>Nov 07:</i> <a href="2007/11-07-folderglance-leopard-and-the-more...-menu.html">FolderGlance, Leopard and the More... menu</a><br>
365
366
367<i>Nov 06:</i> <a href="2007/11-06-folderglance-and-screen-sieve-now-also-on-leopard.html">FolderGlance and Screen Sieve now also on Leopard!</a><br>
368
369
370<i>Sep 16:</i> <a href="2007/09-16-mysterious-window-server-hangs.html">Mysterious window server hangs</a><br>
371
372
373</p>
374
375<p style="margin-top:18px;"><b>Archive</b><br>
376
377
378<a href="2007/index.html">2007</a><br>
379
380<a href="2008/index.html">2008</a><br>
381
382<a href="2009/index.html">2009</a><br>
383
384<a href="2010/index.html">2010</a><br>
385
386<a href="2011/index.html">2011</a><br>
387
388</p>
389
390
391<p style="margin-top:18px;"><b>RSS feed</b><br>
392<a href="http://www.scsc.no/blog/rss.xml">RSS</a>
393</p>
394
395</div>
396</td></tr></table>
397</div> <!-- content -->
398
399<!-- Disqus code to get comment count -->
400<script type="text/javascript">
401//<![CDATA[
402(function() {
403	var links = document.getElementsByTagName('a');
404	var query = '?';
405	for(var i = 0; i < links.length; i++) {
406	if(links[i].href.indexOf('#disqus_thread') >= 0) {
407		query += 'url' + i + '=' + encodeURIComponent(links[i].href) + '&';
408	}
409	}
410	document.write('
410<script charset="utf-8" type="text/javascript" src="http://disqus.com/forums/darkwinterdays/get_num_replies.js' + query + '"></' + 'script>');
411})();
412//]]>
413<!-- End Disqus comment count code -->
414
415
416</body>
417</html>
418<!-- ###TIMESTAMP### -->

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.