Update Friday, 23rd of January, Anno Domini MMIX, at the hour of the Goat
[git/dscho.git] / index.html
blobaabca6cca4a1a9d2fe39c73a30b42723927f6dc7
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=5f002cab57a837125a8f901bcd1f3c1477bc3119;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=#1232626236>22 Jan 2009 The UGFWIINI contest</a>
16 <li><a href=#1232611542>22 Jan 2009 Top-posting</a>
17 <li><a href=#1232607201>22 Jan 2009 Sverre's hat</a>
18 <li><a href=#1232604722>22 Jan 2009 Let there be images!</a>
19 <li><a href=#1232599693>22 Jan 2009 My blog has style</a>
20 <li><a href=#1232589695>22 Jan 2009 My new blog system... bloGit</a>
21 </ol></p>
22 </td></tr></table>
23 <br>
24 <table width=400px bgcolor=#e0e0e0 border=1>
25 <tr><th>Links:</th></tr>
26 <tr><td>
27 <ul>
28 <li> <a href=http://git-scm.com/>Git's homepage</a>
29 <li> <a href=http://gitster.livejournal.com/>Junio's blog</a>
30 <li> <a href=http://www.spearce.org/>Shawn's blog</a> seems to be sitting
31 idle ever since he started working for Google...
32 <li> <a href=http://torvalds-family.blogspot.com/>Linus' blog</a> does not
33 talk much about Git...
34 <li> Scott Chacon's <a href=http://whygitisbetterthanx.com/>Why Git is better
35 than X</a> site
36 <li> <a href=http://vilain.net/>The blog of mugwump</a>
37 <li> <a href=http://blogs.gnome.org/newren/>Elijah Newren</a> chose the
38 same path as Cogito, offering an alternative porcelain (an approach
39 that is doomed in my opinion)
40 <li> <a href=http://msysgit.googlecode.com/>The msysGit project</a>, a (mostly)
41 failed experiment to lure the many Windows developers out there to
42 contribute to Open Source for a change.
43 </ul>
44 </td></tr></table>
45 <br>
46 <table width=400px bgcolor=#e0e0e0 border=1>
47 <tr><td align=center>
48 <script type="text/javascript"><!--
49 google_ad_client = "pub-5106407705643819";
50 /* 300x250, created 1/22/09 */
51 google_ad_slot = "6468207338";
52 google_ad_width = 300;
53 google_ad_height = 250;
54 //-->
55 </script>
56 <script type="text/javascript"
57 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
58 </script>
59 </td></tr></table>
60 <br>
61 <div style="text-align:right;">
62 <a href="dscho.git?a=blob_plain;hb=blog;f=blog.rss"
63 title="Subscribe to my RSS feed"
64 class="rss" rel="nofollow"
65 style="background-color:orange;text-decoration:none;color:white;">RSS</a>
66 </div>
67 </div>
68 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Goat</h6>
69 <a name=1232626236>
70 <h2>The UGFWIINI contest</h2>
72 <p>
73 </p><p>
74 Just in case somebody finds this blog, here is a challenge. Inspired by my
75 own little hack (this blog), I announce the "Using Git For What It Is Not
76 Intended" contest.
77 </p><p>
78 And it is especially cool, since the acronym sounds cool! You might miss
79 this fact if you do no know that I pronounce the "F" like an "A" so that
80 it sounds cool.
81 </p><p>
82 This will be a running contest; whenever I have 10 valid applications, I
83 will announce a winner on the Git mailing list.
84 </p><p>
85 So, what accounts for a valid application?
86 </p><p>
87 <ul>
88 <li> You must use a Git program (the term is used loosely here, GitWeb is
89 considered a Git program, for example).
90 <li> The program must be intended for something completely different than
91 what you are using it for. E.g. GitWeb -- which was intended to let
92 you browse through the history using your web browser -- is used
93 to serve a blog to the wide world.
94 <li> You must be able to prove that you actually used the Git program to
95 the purpose you claim, preferably in a live demonstration like this
96 one.
97 <li> Nobody and nothing must be harmed in the process (except your
98 laughing muscle, that's okay).
99 </ul>
100 </p><p>
101 So, how does such an abuse look like?
102 </p><p>
103 <ul>
104 <li> ... like this blog.
105 <li> Managing your mail (in maildir format) in a Git repository.
106 <li> Finding duplicate files by
107 <table
108 border=1 bgcolor=black>
109 <tr><td bgcolor=lightblue colspan=3>
110 &nbsp;
111 </td></tr>
112 <tr><td>
113 <table cellspacing=5 border=0
114 style="color:white;">
115 <tr><td>
116 <pre>
117 $ git init
118 $ git add .
119 $ git ls-files --stage | sort -k2 | uniq -d -s7 -w40
120 </pre>
121 </td></tr>
122 </table>
123 </td></tr>
124 </table>
125 <li> Abusing the Git alias mechanism to call scripts defined directly in
126 the config.
127 </ul>
128 </p><p>
129 I am really looking forward to all of your submissions... *chuckles*
130 </p><p>
131 </p>
132 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Snake</h6>
133 <a name=1232611542>
134 <h2>Top-posting</h2>
137 </p><p>
138 Okay, last post for a while. But this is something that is nagging me
139 tremendously. I should probably just let go, but in my deepest inner self,
140 really close to my heart, I refuse to believe that any human beings could
141 be incapable of certain degrees of reason.
142 </p><p>
143 Take the example of top-posting. Everybody who read a top-posted email
144 knows that you have to scroll down, possibly weeding through tons of
145 pages to find out what the heck the author of the last reply was replying
147 </p><p>
148 Never mind that it would take the author of the reply just a couple of
149 seconds to remove all the irrelevant stuff -- as she already knows what
150 is the relevant part, saving minutes, in case of mailing lists hours,
151 easily, to the readers who otherwise would have to discern what is
152 irrelevant and what is relevant first.
153 </p><p>
154 It is a horrible time waste. But of course not for the top-poster.
155 </p><p>
156 The problem is that I frequently run into such people, and when I write
157 them a polite mail, explaining to them that it is impolite to top-post,
158 and why, the answers I get sometimes make me check if the sky is still up
159 and the earth down. Yesterday was an example of such a dubitable
160 pleasure.
161 </p><p>
162 Most funny are the ridiculous attempts by those persons at explaining why
163 top-posting is <i>so</i> much superior to anything else.
164 </p><p>
165 Which is good, because if they were not that funny, they would be pretty sad.
166 </p>
167 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Dragon</h6>
168 <a name=1232607201>
169 <h2>Sverre's hat</h2>
172 </p><p>
173 The fun part about a blog is that you can talk about less technical stuff.
174 For example, Sverre's hat.
175 </p><p>
176 Let me start a bit earlier, so that you get the context.
177 </p><p>
178 Last year, at the <a href=http://git.or.cz/gitwiki/GitTogether>GitTogether</a>,
179 we had an <a href=http://en.wikipedia.org/wiki/Unconference>unconference style
180 conference</a>, which basically meant that it was our job to decide what
181 we want to talk about.
182 </p><p>
183 It turned out to be pretty hard, because there was so much we wanted to
184 discuss, and because we wanted to get to know each other, and we wanted to
185 do some hacking.
186 </p><p>
187 So to help us decide what subjects, and in which order we wanted to have
188 scheduled, Shawn opened a series on <a href=http://moderator.appspot.com/>
189 Google Moderator</a>, a nifty, yet simple application which allows a group
190 to agree quickly on an agenda.
191 </p><p>
192 It worked quite well; However, that little saboteur displayed his sense of
193 humor so overtly that some entertaining Gitter put the question "Should Sverre
194 wear a hat?" on the agenda.
195 </p><p>
196 Sure enough, the subject got voted up, and eventually, we got Sverre a hat:
197 </p><p>
198 <center><img src=dscho.git?a=blob_plain;hb=5f002cab57a837125a8f901bcd1f3c1477bc3119;f=sverre-hat.jpg></center>
199 </p><p>
200 By the way, another thing I like about this blog engine is that there are no
201 comments... Nothing is more annoying than leaving a comment on a blog,
202 forgetting about it for a few months, and then finding somebody answered
203 ages ago.
204 </p><p>
205 Update: Sverre says it was dsymonds idea.
206 </p>
207 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Dragon</h6>
208 <a name=1232604722>
209 <h2>Let there be images!</h2>
212 </p><p>
213 One of the most important features of blogs is the ability to insert images.
214 So what would this blog be, if it could not present something that says
215 more than a thousand words?
216 </p><p>
217 So here it goes, my first picture in this blog, taken from my Google Tech
218 Talk in Mountain View:
219 </p><p>
220 <center><img src=dscho.git?a=blob_plain;hb=5f002cab57a837125a8f901bcd1f3c1477bc3119;f=all-your-rebase.png></center>
221 </p><p>
222 Now this blog starts to look like a real blog...
223 </p>
224 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Rabbit</h6>
225 <a name=1232599693>
226 <h2>My blog has style</h2>
229 </p><p>
230 It is official. The blog has a style sheet now.
231 </p><p>
232 The major problem was how to design the system such that it would work
233 both locally and on <a href=http://repo.or.cz>repo.or.cz</a> via gitweb.
234 </p><p>
235 Basically, I realized that I'd need a dry run mode anyway, to prevent
236 all my failed attemp.. oops, I meant, to prevent an accidental push
237 when I am at an, ahem, intermediate state of the 'blog' branch.
238 </p><p>
239 Therefore, I could write a different file locally, which I can load
240 into my venerable Firefox.
241 </p><p>
242 The next plans with my new toy are to enable an easy way to support
243 showing images, and then maybe a table of contents. External links
244 would be cool (<a href=http://repo.or.cz>repo.or.cz</a> does not count, it is special-cased), too.
245 </p><p>
246 And later maybe a cut-off, with automatic generation of links to older
247 posts. Hmm, for those, I'll have to change the URL to include the
248 current commit name, so that the images will be found, too...
249 </p><p>
250 Which in turn means that I'll have to parse the source for new
251 images first, so that they can be in the commit that index.html
252 will link to, <u>before</u> it gets committed. Oh well, that cannot be
253 helped! &#x263a;
254 </p>
255 <h6>Thursday, 22nd of January, Anno Domini MMIX, at the hour of the Tiger</h6>
256 <a name=1232589695>
257 <h2>My new blog system... bloGit</h2>
260 </p><p>
261 Nowadays, you got to have your blog. Or better: your blogs. Even Junio
262 blogs about Git.
263 </p><p>
264 So I felt a little left behind, having no blog to show off. But then
265 I read about this fantastic new website on the mailing list, called
266 <i>git planet</i> which was supposed to be a place where you could have your
267 Git located blog.
268 </p><p>
269 Except that you could not have your blog <u>there</u>. Instead, it is just an
270 aggregator site.
271 </p><p>
272 I was disappointed.
273 </p><p>
274 But then, I had this (in my humble opinion very cute) idea that I already used to "publish"
275 my slides from the talk "Contributing with Git (AKA All your rebase are
276 belong to us)": back then, I just created a new branch, committed the
277 file, and uploaded the result to <a href=http://repo.or.cz>repo.or.cz</a>, to be downloaded via Gitweb.
278 </p><p>
279 So I asked Pasky via IRC, if he would have any objections if I abused
280 <a href=http://repo.or.cz>repo.or.cz</a> as a blog server. He understood at once, and found it "sounds
281 like a pretty cool idea".
282 </p><p>
283 Of course, just writing plain HTML and committing that is <i>too easy</i>,
284 therefore I decided to write a shell script that would turn some sort
285 of simple text file into proper HTML, commit it, and upload the result.
286 </p><p>
287 Well, about two hours later, I finished the first version of the script
288 turning plain text with minimal markup into an HTML page, and it obviously
289 worked -- otherwise nobody would be able to read this &#x263a;
290 </p>
291 </div>
292 </body>
293 </html>