Have a maximum number of posts
[git/dscho.git] / index.html
blobcff89ad87b2d365215b85ef8981fbea50bd64f45
1 <html>
2 <head>
3 <title>Dscho's blog</title>
4 <meta http-equiv="Content-Type"
5 content="text/html; charset=UTF-8"/>
6 </head>
7 <body style="width:800px;background-image:url(dscho.git?a=blob_plain;hb=aaa9edafbe6ca5349ad7b36848fb294e5f4fc529;f=paper.jpg);background-repeat:repeat-y;background-attachment:scroll;padding:0px;">
8 <div style="width:610px;margin-left:120px;margin-top:50px;align:left;vertical-align:top;">
9 <h1>Dscho's blog</h1>
10 <div style="position:absolute;top:50px;left:810px;width=400px">
11 <table width=400px bgcolor=#e0e0e0 border=1>
12 <tr><th>Table of contents:</th></tr>
13 <tr><td>
14 <p><ol>
15 <li><a href=#1232745071>23 Jan 2009 Git Logos</a>
16 <li><a href=#1232742582>23 Jan 2009 How to deal with files that are not source code when merging</a>
17 <li><a href=#1232626236>22 Jan 2009 The UGFWIINI contest</a>
18 <li><a href=#1232611542>22 Jan 2009 Top-posting</a>
19 <li><a href=#1232607201>22 Jan 2009 Sverre's hat</a>
20 <li><a href=#1232604722>22 Jan 2009 Let there be images!</a>
21 <li><a href=#1232599693>22 Jan 2009 My blog has style</a>
22 <li><a href=#1232589695>22 Jan 2009 My new blog system... bloGit</a>
23 </ol></p>
24 </td></tr></table>
25 <br>
26 <div style="text-align:right;">
27 <a href="dscho.git?a=blob_plain;hb=blog;f=blog.rss"
28 title="Subscribe to my RSS feed"
29 class="rss" rel="nofollow"
30 style="background-color:orange;text-decoration:none;color:white;font-family:sans-serif;">RSS</a>
31 </div>
32 <br>
33 <table width=400px bgcolor=#e0e0e0 border=1>
34 <tr><th>Links:</th></tr>
35 <tr><td>
36 <ul>
37 <li> <a href=http://git-scm.com/>Git's homepage</a>
38 <li> <a href=http://gitster.livejournal.com/>Junio's blog</a>
39 <li> <a href=http://www.spearce.org/>Shawn's blog</a> seems to be sitting
40 idle ever since he started working for Google...
41 <li> <a href=http://torvalds-family.blogspot.com/>Linus' blog</a> does not
42 talk much about Git...
43 <li> Scott Chacon's <a href=http://whygitisbetterthanx.com/>Why Git is better
44 than X</a> site
45 <li> <a href=http://vilain.net/>The blog of mugwump</a>
46 <li> <a href=http://blogs.gnome.org/newren/>Elijah Newren</a> chose the
47 same path as Cogito, offering an alternative porcelain (an approach
48 that is doomed in my opinion)
49 <li> <a href=http://msysgit.googlecode.com/>The msysGit project</a>, a (mostly)
50 failed experiment to lure the many Windows developers out there to
51 contribute to Open Source for a change.
52 </ul>
53 </td></tr></table>
54 <br>
55 <table width=400px bgcolor=#e0e0e0 border=1>
56 <tr><th>Google Ads:</th></tr>
57 <tr><td align=center>
58 <script type="text/javascript"><!--
59 google_ad_client = "pub-5106407705643819";
60 /* 300x250, created 1/22/09 */
61 google_ad_slot = "6468207338";
62 google_ad_width = 300;
63 google_ad_height = 250;
64 //-->
65 </script>
66 <script type="text/javascript"
67 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
68 </script>
69 </td></tr></table>
70 </div>
71 <h6>Friday, 23rd of January, Anno Domini MMIX, at the hour of the Pig</h6>
72 <a name=1232745071>
73 <h2>Git Logos</h2>
75 <p>
76 </p><p>
77 The other day, when I did not exactly have too much time on my hands, but
78 definitely too much motivation, I played around creating several logos:
79 </p><p>
80 <center>
81 <table border=0>
82 <tr>
83 <td align=center>
84 <embed type="image/svg+xml"
85 src="dscho.git?a=blob_plain;hb=aaa9edafbe6ca5349ad7b36848fb294e5f4fc529;f=git-ambigram.svg" width=317 />
86 </td>
87 </tr>
88 <tr>
89 <td align=center>
90 <a href=dscho.git?a=blob_plain;hb=aaa9edafbe6ca5349ad7b36848fb294e5f4fc529;f=git-ambigram.svg>git-ambigram.svg</a>
91 </td>
92 </tr>
93 </table>
94 </center>
95 </p><p>
96 <center>
97 <table border=0>
98 <tr>
99 <td align=center>
100 <embed type="image/svg+xml"
101 src="dscho.git?a=blob_plain;hb=aaa9edafbe6ca5349ad7b36848fb294e5f4fc529;f=gitlogo.svg" width=165 />
102 </td>
103 </tr>
104 <tr>
105 <td align=center>
106 <a href=dscho.git?a=blob_plain;hb=aaa9edafbe6ca5349ad7b36848fb294e5f4fc529;f=gitlogo.svg>gitlogo.svg</a>
107 </td>
108 </tr>
109 </table>
110 </center>
111 </p><p>
112 <center>
113 <table border=0>
114 <tr>
115 <td align=center>
116 <embed type="image/svg+xml"
117 src="dscho.git?a=blob_plain;hb=aaa9edafbe6ca5349ad7b36848fb294e5f4fc529;f=original-git-logo.svg" width=165 />
118 </td>
119 </tr>
120 <tr>
121 <td align=center>
122 <a href=dscho.git?a=blob_plain;hb=aaa9edafbe6ca5349ad7b36848fb294e5f4fc529;f=original-git-logo.svg>original-git-logo.svg</a>
123 </td>
124 </tr>
125 </table>
126 </center>
127 </p><p>
128 <center>
129 <table border=0>
130 <tr>
131 <td align=center>
132 <embed type="image/svg+xml"
133 src="dscho.git?a=blob_plain;hb=aaa9edafbe6ca5349ad7b36848fb294e5f4fc529;f=git-gitk-logo.svg" width=325 />
134 </td>
135 </tr>
136 <tr>
137 <td align=center>
138 <a href=dscho.git?a=blob_plain;hb=aaa9edafbe6ca5349ad7b36848fb294e5f4fc529;f=git-gitk-logo.svg>git-gitk-logo.svg</a>
139 </td>
140 </tr>
141 </table>
142 </center>
143 </p><p>
144 <center>
145 <table border=0>
146 <tr>
147 <td align=center>
148 <embed type="image/svg+xml"
149 src="dscho.git?a=blob_plain;hb=aaa9edafbe6ca5349ad7b36848fb294e5f4fc529;f=git-visual-test.svg" width=325 />
150 </td>
151 </tr>
152 <tr>
153 <td align=center>
154 <a href=dscho.git?a=blob_plain;hb=aaa9edafbe6ca5349ad7b36848fb294e5f4fc529;f=git-visual-test.svg>git-visual-test.svg</a>
155 </td>
156 </tr>
157 </table>
158 </center>
159 </p><p>
160 Maybe some of you have fun with it...
161 </p>
162 <h6>Friday, 23rd of January, Anno Domini MMIX, at the hour of the Pig</h6>
163 <a name=1232742582>
164 <h2>How to deal with files that are not source code when merging</h2>
167 </p><p>
168 Last week, one of the mentors of last year's <a href=http://code.google.com/soc>
169 Summer of Code</a> mentioned the idea that merge strategies are in dear need
170 for file types other than source code.
171 </p><p>
172 I think this idea is awesome, even if I cannot bring myself to believe that
173 any of the file types would make a good Summer of Code project: either they
174 are too complicated (think raster images such as .png or even .jpg), or they
175 are too straight-forward (think LaTeX, where all that is needed is a good
176 graphical user interface to inspect the three versions: <i>ours</i>, <i>baseline</i>
177 and <i>theirs</i>).
178 </p><p>
179 The LaTeX idea would be a good project for me to mentor, though: I have a
180 pretty clear idea how it should be done; I just lack the time (and motivation)
181 to do it myself.
182 </p><p>
183 As for OpenOffice text documents, vector graphics (such as .svg), or more
184 specific data such as spreadsheets, I think that all of these are really
185 difficult: the problem is not so much the implementation (i.e. the programming
186 part of it), but the design.
187 </p><p>
188 This design should involve much more than a Summer of Code project is about:
189 you would need to survey users' expectations, and at least the mentor -- if
190 not the student -- would need to be an expert in usability questions, which
191 is rather unlikely in the realm of Open Source.
192 </p><p>
193 Maybe this is the missing part in Open Source: we have many brilliant
194 programmers, but next to nobody with a good idea how to design intuitive
195 user interfaces.
196 </p><p>
197 That might be related to the fact that brilliant software engineers, as they
198 can be found in Open Source, are not exactly known for their social skills,
199 a human trait that seems to be a very important prerequisite for designing
200 intuitive user interfaces.
201 </p><p>
202 Well, I have <a href=http://git.or.cz/gitwiki/SoC2009Ideas#head-6188833471f79f277e162ef9fbe1592aa10b5f6c>
203 added</a> the proposal to Git's Summer of Code idea page on the Git Wiki; We will
204 see what comes out of it.
205 </p>
206 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Goat</h6>
207 <a name=1232626236>
208 <h2>The UGFWIINI contest</h2>
211 </p><p>
212 Just in case somebody finds this blog, here is a challenge. Inspired by my
213 own little hack (this blog), I announce the "Using Git For What It Is Not
214 Intended" contest.
215 </p><p>
216 And it is especially cool, since the acronym sounds cool! You might miss
217 this fact if you do no know that I pronounce the "F" like an "A" so that
218 it sounds cool.
219 </p><p>
220 This will be a running contest; whenever I have 10 valid applications, I
221 will announce a winner on the Git mailing list.
222 </p><p>
223 So, what accounts for a valid application?
224 </p><p>
225 <ul>
226 <li> You must use a Git program (the term is used loosely here, GitWeb is
227 considered a Git program, for example).
228 <li> The program must be intended for something completely different than
229 what you are using it for. E.g. GitWeb -- which was intended to let
230 you browse through the history using your web browser -- is used
231 to serve a blog to the wide world.
232 <li> You must be able to prove that you actually used the Git program to
233 the purpose you claim, preferably in a live demonstration like this
234 one.
235 <li> Nobody and nothing must be harmed in the process (except your
236 laughing muscle, that's okay).
237 </ul>
238 </p><p>
239 So, how does such an abuse look like?
240 </p><p>
241 <ul>
242 <li> ... like this blog.
243 <li> Managing your mail (in maildir format) in a Git repository.
244 <li> Finding duplicate files by
245 <table
246 border=1 bgcolor=black>
247 <tr><td bgcolor=lightblue colspan=3>
248 &nbsp;
249 </td></tr>
250 <tr><td>
251 <table cellspacing=5 border=0
252 style="color:white;">
253 <tr><td>
254 <pre>
255 $ git init
256 $ git add .
257 $ git ls-files --stage | sort -k2 | uniq -d -s7 -w40
258 </pre>
259 </td></tr>
260 </table>
261 </td></tr>
262 </table>
263 <li> Abusing the Git alias mechanism to call scripts defined directly in
264 the config.
265 </ul>
266 </p><p>
267 I am really looking forward to all of your submissions... *chuckles*
268 </p><p>
269 </p>
270 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Snake</h6>
271 <a name=1232611542>
272 <h2>Top-posting</h2>
275 </p><p>
276 Okay, last post for a while. But this is something that is nagging me
277 tremendously. I should probably just let go, but in my deepest inner self,
278 really close to my heart, I refuse to believe that any human beings could
279 be incapable of certain degrees of reason.
280 </p><p>
281 Take the example of top-posting. Everybody who read a top-posted email
282 knows that you have to scroll down, possibly weeding through tons of
283 pages to find out what the heck the author of the last reply was replying
285 </p><p>
286 Never mind that it would take the author of the reply just a couple of
287 seconds to remove all the irrelevant stuff -- as she already knows what
288 is the relevant part, saving minutes, in case of mailing lists hours,
289 easily, to the readers who otherwise would have to discern what is
290 irrelevant and what is relevant first.
291 </p><p>
292 It is a horrible time waste. But of course not for the top-poster.
293 </p><p>
294 The problem is that I frequently run into such people, and when I write
295 them a polite mail, explaining to them that it is impolite to top-post,
296 and why, the answers I get sometimes make me check if the sky is still up
297 and the earth down. Yesterday was an example of such a dubitable
298 pleasure.
299 </p><p>
300 Most funny are the ridiculous attempts by those persons at explaining why
301 top-posting is <i>so</i> much superior to anything else.
302 </p><p>
303 Which is good, because if they were not that funny, they would be pretty sad.
304 </p>
305 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Dragon</h6>
306 <a name=1232607201>
307 <h2>Sverre's hat</h2>
310 </p><p>
311 The fun part about a blog is that you can talk about less technical stuff.
312 For example, Sverre's hat.
313 </p><p>
314 Let me start a bit earlier, so that you get the context.
315 </p><p>
316 Last year, at the <a href=http://git.or.cz/gitwiki/GitTogether>GitTogether</a>,
317 we had an <a href=http://en.wikipedia.org/wiki/Unconference>unconference style
318 conference</a>, which basically meant that it was our job to decide what
319 we want to talk about.
320 </p><p>
321 It turned out to be pretty hard, because there was so much we wanted to
322 discuss, and because we wanted to get to know each other, and we wanted to
323 do some hacking.
324 </p><p>
325 So to help us decide what subjects, and in which order we wanted to have
326 scheduled, Shawn opened a series on <a href=http://moderator.appspot.com/>
327 Google Moderator</a>, a nifty, yet simple application which allows a group
328 to agree quickly on an agenda.
329 </p><p>
330 It worked quite well; However, that little saboteur displayed his sense of
331 humor so overtly that some entertaining Gitter put the question "Should Sverre
332 wear a hat?" on the agenda.
333 </p><p>
334 Sure enough, the subject got voted up, and eventually, we got Sverre a hat:
335 </p><p>
336 <center><img src=dscho.git?a=blob_plain;hb=aaa9edafbe6ca5349ad7b36848fb294e5f4fc529;f=sverre-hat.jpg></center>
337 </p><p>
338 By the way, another thing I like about this blog engine is that there are no
339 comments... Nothing is more annoying than leaving a comment on a blog,
340 forgetting about it for a few months, and then finding somebody answered
341 ages ago.
342 </p><p>
343 Update: Sverre says it was dsymonds idea.
344 </p>
345 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Dragon</h6>
346 <a name=1232604722>
347 <h2>Let there be images!</h2>
350 </p><p>
351 One of the most important features of blogs is the ability to insert images.
352 So what would this blog be, if it could not present something that says
353 more than a thousand words?
354 </p><p>
355 So here it goes, my first picture in this blog, taken from my Google Tech
356 Talk in Mountain View:
357 </p><p>
358 <center><img src=dscho.git?a=blob_plain;hb=aaa9edafbe6ca5349ad7b36848fb294e5f4fc529;f=all-your-rebase.png></center>
359 </p><p>
360 Now this blog starts to look like a real blog...
361 </p>
362 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Rabbit</h6>
363 <a name=1232599693>
364 <h2>My blog has style</h2>
367 </p><p>
368 It is official. The blog has a style sheet now.
369 </p><p>
370 The major problem was how to design the system such that it would work
371 both locally and on <a href=http://repo.or.cz>repo.or.cz</a> via gitweb.
372 </p><p>
373 Basically, I realized that I'd need a dry run mode anyway, to prevent
374 all my failed attemp.. oops, I meant, to prevent an accidental push
375 when I am at an, ahem, intermediate state of the 'blog' branch.
376 </p><p>
377 Therefore, I could write a different file locally, which I can load
378 into my venerable Firefox.
379 </p><p>
380 The next plans with my new toy are to enable an easy way to support
381 showing images, and then maybe a table of contents. External links
382 would be cool (<a href=http://repo.or.cz>repo.or.cz</a> does not count, it is special-cased), too.
383 </p><p>
384 And later maybe a cut-off, with automatic generation of links to older
385 posts. Hmm, for those, I'll have to change the URL to include the
386 current commit name, so that the images will be found, too...
387 </p><p>
388 Which in turn means that I'll have to parse the source for new
389 images first, so that they can be in the commit that index.html
390 will link to, <u>before</u> it gets committed. Oh well, that cannot be
391 helped! &#x263a;
392 </p>
393 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Tiger</h6>
394 <a name=1232589695>
395 <h2>My new blog system... bloGit</h2>
398 </p><p>
399 Nowadays, you got to have your blog. Or better: your blogs. Even Junio
400 blogs about Git.
401 </p><p>
402 So I felt a little left behind, having no blog to show off. But then
403 I read about this fantastic new website on the mailing list, called
404 <i>git planet</i> which was supposed to be a place where you could have your
405 Git located blog.
406 </p><p>
407 Except that you could not have your blog <u>there</u>. Instead, it is just an
408 aggregator site.
409 </p><p>
410 I was disappointed.
411 </p><p>
412 But then, I had this (in my humble opinion very cute) idea that I already used to "publish"
413 my slides from the talk "Contributing with Git (AKA All your rebase are
414 belong to us)": back then, I just created a new branch, committed the
415 file, and uploaded the result to <a href=http://repo.or.cz>repo.or.cz</a>, to be downloaded via Gitweb.
416 </p><p>
417 So I asked Pasky via IRC, if he would have any objections if I abused
418 <a href=http://repo.or.cz>repo.or.cz</a> as a blog server. He understood at once, and found it "sounds
419 like a pretty cool idea".
420 </p><p>
421 Of course, just writing plain HTML and committing that is <i>too easy</i>,
422 therefore I decided to write a shell script that would turn some sort
423 of simple text file into proper HTML, commit it, and upload the result.
424 </p><p>
425 Well, about two hours later, I finished the first version of the script
426 turning plain text with minimal markup into an HTML page, and it obviously
427 worked -- otherwise nobody would be able to read this &#x263a;
428 </p>
429 </div>
430 </body>
431 </html>