/
atom.xml
814 lines (778 loc) · 73.3 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>
feed for mikegrouchy.com </title>
<link href="http://mikegrouchy.com/blog/atom.xml" rel="self" />
<link href="/"/>
<updated>2013-02-14T11:21:59Z</updated>
<id>http://mikegrouchy.com/blog/atom.xml/</id>
<entry>
<title type="html">Introducing Python Jobs HQ</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/2013/02/introducing-pythonjobshq.html"/>
<updated>2013-02-14T10:35:00Z</updated>
<published>2013-02-14T10:35:00Z</published>
<id>http://mikegrouchy.comblog/2013/02/introducing-pythonjobshq.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="python"
label="Python" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="programming"
label="Programming" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="jobs"
label="Jobs" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="careers"
label="Careers" />
<content type="html">
<p>As you may know if you have read this blog, I am one of the curators for <a href="http://pycoders.com">Pycoder&#8217;s Weekly</a>.
We have been working on a bunch of small projects to try to bring more value from Pycoder&#8217;s
into the python community. The first thing we have launched this year is <a href="http://pythonjobshq.com">Python Jobs <span class="caps">HQ</span></a>.</p>
<p><a href="http://pythonjobshq.com">Python Jobs <span class="caps">HQ</span></a> is a Job site we are running that is focused on
putting the best jobs in front of the best people. Jobs posted on the site are posted to
the <a href="http://twitter.com/pycoders">@pycoders</a> fast growing Twitter account and the Job Board
is advertised weekly in the newsletter. Already we have had great companies like <a href="http://newsle.com">Newsle</a>, <a href="http://path.com">Path</a>
<a href="http://datadoghq.com">Datadoghq</a> and <a href="http://cyaninc.com">Cyan Inc</a>. and others post with us. If you have a Python Job to post
for your company or f you are looking to find a new job as a Python Developer,
you should check out <a href="http://pythonjobshq.com">Python Jobs <span class="caps">HQ</span></a>.</p>
<p>If you have any questions feel free to reach out to me on <a href="http://twitter.com/mgrouchy">Twitter</a> or email our <a href="mailto:admin@pycoders.com">Pycoder&#8217;s Email</a>.</p> </content>
</entry>
<entry>
<title type="html">Force websites to use SSL in Google Chrome</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/2012/07/force-sites-to-use-ssl-in-chrome.html"/>
<updated>2012-07-23T09:30:00Z</updated>
<published>2012-07-23T09:30:00Z</published>
<id>http://mikegrouchy.comblog/2012/07/force-sites-to-use-ssl-in-chrome.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="browser"
label="Browser" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="security"
label="Security" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="tip"
label="Tip" />
<content type="html">
<p>I saw this tip in the comments over at <a href="http://news.ycombinator.com">Hacker News</a> today
and I thought that this is a great alternative to force <span class="caps">SSL</span> for sites that don&#8217;t have
it&nbsp;available.</p>
<h2>Step&nbsp;1</h2>
<p>Navigate to Chrome&#8217;s net internals dashboard by&nbsp;typing</p>
<p><code>chrome://net-internals/</code> into your&nbsp;browser.</p>
<p>You should&nbsp;see:</p>
<p><img alt="net-internals" src="http://mikegrouchy.com/media/images/2012/07/net-internals.png" /></p>
<h2>Step&nbsp;2</h2>
<p>Navigate to the <a href="http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security"><span class="caps">HSTS</span></a>(<span class="caps">HTTPS</span> Strict Transport Security) Tab and you should see&nbsp;this:</p>
<p><img alt="hsts" src="http://mikegrouchy.com/media/images/2012/07/hsts.png" /></p>
<h2>Step&nbsp;3</h2>
<p>From there its pretty easy, just type in the site you want to force to <span class="caps">SSL</span> and
you are&nbsp;done!</p>
<p><img alt="hsts" src="http://mikegrouchy.com/media/images/2012/07/add-hsts-domain.png" /></p>
<p>Do you have any other Chrome security tips? Leave them in the&nbsp;comments!</p> </content>
</entry>
<entry>
<title type="html">The Setup</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/2012/07/the-setup.html"/>
<updated>2012-07-18T08:35:00Z</updated>
<published>2012-07-18T08:35:00Z</published>
<id>http://mikegrouchy.comblog/2012/07/the-setup.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="software"
label="Software" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="programming"
label="Programming" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="hardware"
label="Hardware" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="setup"
label="Setup" />
<content type="html">
<p>This post is inspired by <a href="http://www.mahdiyusuf.com/post/16687503726/the-setup">Mahdi</a> and <a href="http://usesthis.com/">The Setup</a>. I had originally written a rather terrible post about my <a href="http://mikegrouchy.com/blog/my-development-toolbox.html">development toolbox</a> so I figured it was time to revisit this and get it right for people who&nbsp;care.</p>
<h2>Hardware</h2>
<p>Not a lot going on here, nothing fancy. Just macs, running <span class="caps">OSX</span> Lion. The hardware is a bit older, but I spend most of my time in a terminal, so I don&#8217;t really notice so&nbsp;much.</p>
<h3>Work:</h3>
<ul>
<li>2008 Aluminum Macbook, <span class="caps">4GB</span>&nbsp;ram</li>
<li>Magic&nbsp;Mouse</li>
<li>Standard Apple wired keyboard (I like having the numberpad and not having to be worried about&nbsp;batteries)</li>
<li>27&#8221; Cinema&nbsp;Display</li>
</ul>
<p>Out of all these things, I would have to say the cinema display is incredible. I don&#8217;t normally use my laptop screen when it is connected to the cinema display to avoid <a href="http://en.wikipedia.org/wiki/Repetitive_strain_injury"><span class="caps">RSI</span></a> issues, however, when I do have it open its normally just for the <a href="http://rd.io">rdio</a>&nbsp;client.</p>
<h3>Home:</h3>
<ul>
<li>2010 iMac 21.5&#8221;, <span class="caps">8GB</span>&nbsp;Ram</li>
<li>Magic&nbsp;Mouse</li>
<li>Apple wireless bluetooth&nbsp;keyboard</li>
</ul>
<p>I don&#8217;t use this often, as it is the computer my <a href="http://twitter.com/nicolegrouchy">wife</a> uses primarily. I only tend to use it when I
don&#8217;t feel like slogging around with my laptop at home, or I have left it at the <a href="http://swixhq.com">office</a> or&nbsp;something.</p>
<p>I have also taken to writing drafts for my blogposts using <a href="http://gist.github.com">Github Gists</a> with my <a href="http://amzn.to/KLFZrw">1st Generation <span class="caps">32GB</span> iPad</a> and the apple bluetooth keyboard. I have found this to be a fantastic way to write a blogpost or a little code while out at a coffee shop or anywhere else when I am on the&nbsp;go.</p>
<h2>Software</h2>
<p>Like I said earlier, I don&#8217;t spend too much time outside the console, but when I do these are the things I couldn&#8217;t live&nbsp;without.</p>
<ul>
<li><a href="http://manytricks.com/moom/">Moom</a> - This is an awesome app, it allows you to tile windows in <span class="caps">OSX</span>, attach hotkeys to tiling commands and a bunch of other niceties that don&#8217;t exist on&nbsp;<span class="caps">OSX</span>.</li>
<li><a href="http://rd.io">rdio</a> - As I mentioned earlier, I use rdio. I listen to music all the time while coding, or thinking or just about anything, so I have rdio going basically all the&nbsp;time.</li>
<li><a href="http://giantcomet.com/flint">Flint</a> - We use campfire for team chat in the office so I use flint for&nbsp;that.</li>
<li><a href="http://chrome.google.com">Chrome</a> - The web browser of champions, I pretty much use Chrome exclusively now and normally have way too many tabs&nbsp;open.</li>
<li><a href="http://skitch.com/">Skitch</a> - I use skitch for taking screenshots on <span class="caps">OSX</span> it has really great support for simple editing and cropping of your screenshots that I would have a hard time switching to anything else. I dont use their server anymore for storage of my screenshots, I have a proxy set up using <a href="http://heroku.com">heroku</a> to send my screenshots to a Amazon S3 bucket. This is accomplished with <a href="https://github.com/mgrouchy/s3itch">s3itch</a>.</li>
<li><a href="http://db.tt/Hc6Cqm1">Dropbox</a> -Dropbox is fantastic. I store all the git repos I am working on in Github and it has saved my butt a few times now. I can feel safe everything is backed up and even untracked files(in git) are being versioned, just incase I delete a untracked file I end up&nbsp;needing.</li>
<li><a href="http://www.alfredapp.com/">Alfred</a> - Alfred is an indispensable quick launcher app in the vein of <a href="http://qsapp.com/">quicksilver</a>. I spend most of my time with my hands off the mouse so I don&#8217;t know what I would do without&nbsp;Alfred.</li>
<li><a href="http://rescuetime.com/ref/161860">RescueTime</a> - I work pretty hard to try to stay productive and at the very least stay knowledgeable about where my time is going. RescueTime helps with that by tracking what I do on the computer every&nbsp;day.</li>
</ul>
<h2>Command Line&nbsp;Life</h2>
<p>The command line is where I spend most of my time, on <span class="caps">OSX</span> I don&#8217;t use the terminal software that comes with <span class="caps">OSX</span>, I use <a href="http://www.iterm2.com/">iTerm2</a>. In that terminal I&nbsp;use:</p>
<ul>
<li><a href="http://www.zsh.org/">Zsh</a> with <a href="https://github.com/robbyrussell/oh-my-zsh/">Oh-my-zsh</a>, because as you know, <a href="">Zsh is your friend</a>, you can check out my .zshrc in my <a href="https://github.com/mgrouchy/dotfiles">dotfiles repo</a>.</li>
<li><a href="http://www.vim.org/">Vim</a> - The only text editor in my opinion. This is where I spend most of my time check out my <a href="https://github.com/mgrouchy/vim">vimfiles</a> for setup&nbsp;details.</li>
</ul>
<p><img alt="vim screenshot" src="http://img.mikegrouchy.s3.amazonaws.com/1._ControlP_-_%28%7E%29_-_VIM_%28vim%29-20120628-111826.jpg" /></p>
<ul>
<li><a href="http://tmux.sourceforge.net/">tmux</a> - Tmux is great. Its a great alternative to gnu screen, highly configurable and looks&nbsp;great.</li>
</ul>
<p><img alt="tmux screenshot" src="http://img.mikegrouchy.s3.amazonaws.com/1._tmux_%28tmux%29-20120628-111332.jpg" /></p>
<ul>
<li><a href="http://bpython-interpreter.org/">bpython</a> - bpython is improved interface to the Python interpreter. It supports syntax highlighting, autocomplete and a bunch of other useful features. I usually have bpython open all day every&nbsp;day.</li>
</ul>
<p><img alt="bpython screenshot" src="http://img.mikegrouchy.s3.amazonaws.com/1._bpython_%28Python%29-20120628-111458.jpg" /></p>
<h2>On My&nbsp;desk</h2>
<p>Books:</p>
<ul>
<li><a href="http://amzn.to/L2qI4V">Natural Language Processing With Python</a> - Steven Bird, Ewan Klein and Edward&nbsp;Loper</li>
<li><a href="http://amzn.to/KyjsLo">Javascript - The Definitive Guide</a> - David&nbsp;Flanagan</li>
<li><a href="http://amzn.to/M3xogV">Expert Python Programming</a> - Tarek&nbsp;Zaide</li>
</ul>
<p>A bunch of <a href="http://pycoders.com">Pycoders</a>&nbsp;stickers</p>
<p><img alt="Pycoders Sickers!" src="http://mikegrouchy.com/media/images/2012/07/pycoders-stickers.jpg" /></p>
<p>Thats about it. What does your setup look&nbsp;like?</p> </content>
</entry>
<entry>
<title type="html">Broken RSS Links Fixed</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/2012/07/broken-rss-links-fixed.html"/>
<updated>2012-07-10T09:00:00Z</updated>
<published>2012-07-10T09:00:00Z</published>
<id>http://mikegrouchy.comblog/2012/07/broken-rss-links-fixed.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="meta"
label="Meta" />
<content type="html">
<p><img alt="Darth Fail" src="/media/images/2012/07/darth-vader-epic-fail.jpeg" /></p>
<p>It seems my <span class="caps">RSS</span> feed has failed epically and none of the actual links to the blog
worked. Not too awesome for you <span class="caps">RSS</span> readers out&nbsp;there.</p>
<p>Needless to say, that is fixed now. Thank you to the people who went through the
trouble to notify me of my broken <span class="caps">RSS</span>. Your help is much&nbsp;appreciated.</p> </content>
</entry>
<entry>
<title type="html">Setting up PyPy 1.9 on OSX</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/2012/07/setting-up-pypy-1.9-on-osx.html"/>
<updated>2012-07-08T10:00:00Z</updated>
<published>2012-07-08T10:00:00Z</published>
<id>http://mikegrouchy.comblog/2012/07/setting-up-pypy-1.9-on-osx.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="software"
label="Software" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="programming"
label="Programming" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="pypy"
label="Pypy" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="python"
label="Python" />
<content type="html">
<p><img alt="pypy" src="http://pypy.org/image/pypy-logo.png" /></p>
<p>As I had said before on <a href="http://mikegrouchy.com/blog/setting-up-nginx-with-ssl-and-godaddy.html">this</a> <a href="http://mikegrouchy.com/blog/great-django-test-talks.html">blog</a>, I sometimes use it as a way to record things I want to remember. This is one of those&nbsp;times.</p>
<p>I have started a new project that uses PyPy and while there is documentation out there to get started, I find it useful to have it all in the same place and not spread&nbsp;around.</p>
<h2>What is&nbsp;PyPy</h2>
<p>PyPy is Python interpreter and <span class="caps">JIT</span> compiler. The latest PyPy release PyPy 1.9, the one we are installing, is CPython 2.7.2 compatible. PyPy is focused on speed and 100% compatibility with the <a href="http://en.wikipedia.org/wiki/CPython">CPython</a>.</p>
<h2>Installing&nbsp;PyPy</h2>
<p>There are a couple of options to install PyPy on&nbsp;<span class="caps">OSX</span>.</p>
<ul>
<li>You can install using the <a href="https://bitbucket.org/pypy/pypy/downloads/pypy-1.9-osx64.tar.bz2">binary</a> from the PyPy&nbsp;website.</li>
<li>You can <a href="http://pypy.org/download.html#building-from-source">build PyPy from source</a>.</li>
<li>You can install using <a href="http://mxcl.github.com/homebrew/">Homebrew</a>.</li>
</ul>
<p>I like to manage my packages using Homebrew when thats an option, so I installed using Homebrew.
It was very easy to get setup just
<div class="codebox"><figure class="code"><div class="highlight"><pre>brew install pypy<br /></pre></div><br /><figcaption>Bash</figcaption></figure></div></p>
<p>Then follow any instructions in your&nbsp;terminal.</p>
<p>You should then see a symlink in your /usr/local/bin directory for&nbsp;PyPy</p>
<div class="codebox"><figure class="code"><div class="highlight"><pre>~ &gt;&gt; ls /usr/local/bin | grep pypy<br /> pypy<br /></pre></div><br /><figcaption>Bash</figcaption></figure></div>
<p>And assuming you have homebrew setup correctly you should be able to type &#8220;pypy&#8221; in your terminal and get an interactive&nbsp;interpreter.</p>
<div class="codebox"><figure class="code"><div class="highlight"><pre>~ &gt;&gt; pypy<br /> Python 2.7.2 <span class="o">(</span>341e1e3821ff, Jun 07 2012, 15:42:54<span class="o">)</span><br /> <span class="o">[</span>PyPy 1.9.0 with <span class="caps">GCC</span> 4.2.1<span class="o">]</span> on darwin<br /> Type <span class="s2">&quot;help&quot;</span>, <span class="s2">&quot;copyright&quot;</span>, <span class="s2">&quot;credits&quot;</span> or <span class="s2">&quot;license&quot;</span> <span class="k">for </span>more information.<br /> And now <span class="k">for </span>something completely different: <span class="sb">``</span>it<span class="s1">&#39;s beautiful: very rectangular</span><br /><span class="s1"> and yellow&#39;</span><span class="err">&#39;</span><br /> &gt;&gt;&gt;&gt;<br /></pre></div><br /><figcaption>Bash</figcaption></figure></div>
<p>If you have gotten this far you have been successful at installing&nbsp;PyPy!</p>
<p>Now, like any good <a href="http://pycoders.com">pycoder</a>, lets move on to getting PyPy setup inside a&nbsp;Virtualenv.</p>
<h2>Getting PyPy to work with Virtualenv or&nbsp;Virtualenvwrapper</h2>
<p>Luckily getting PyPy set up in a virtualenv is really easy, for virtualenv the command&nbsp;is:</p>
<div class="codebox"><figure class="code"><div class="highlight"><pre>virtualenv -p /usr/local/bin/pypy environmentname<br /></pre></div><br /><figcaption>Bash</figcaption></figure></div>
<p>for Virtualenvwrapper, its basically the&nbsp;same:</p>
<div class="codebox"><figure class="code"><div class="highlight"><pre>mkvirtualenv -p /usr/local/bin/pypy environmentname<br /></pre></div><br /><figcaption>Bash</figcaption></figure></div>
<p>In the output of each of these commands you should&nbsp;see:</p>
<div class="codebox"><figure class="code"><div class="highlight"><pre>Running virtualenv with interpreter /usr/local/bin/pypy<br /> New pypy executable in testpypy2/bin/pypy<br /> Installing setuptools............done.<br /> Installing pip...............done.<br /></pre></div><br /><figcaption>Bash</figcaption></figure></div>
<p>Now you can activate your&nbsp;environment.</p>
<p>In&nbsp;virtualenv:</p>
<div class="codebox"><figure class="code"><div class="highlight"><pre><span class="nb">source</span> /path/to/your/virtualenv/bin/activate<br /></pre></div><br /><figcaption>Bash</figcaption></figure></div>
<p>In <a href="http://www.doughellmann.com/projects/virtualenvwrapper/">virtualenvwrapper</a>:</p>
<div class="codebox"><figure class="code"><div class="highlight"><pre>workon environmentname<br /></pre></div><br /><figcaption>Bash</figcaption></figure></div>
<p>And test your Python&nbsp;version:</p>
<div class="codebox"><figure class="code"><div class="highlight"><pre>python --version<br /> Python 2.7.2 <span class="o">(</span>341e1e3821ff, Jun 07 2012, 15:42:54<span class="o">)</span><br /> <span class="o">[</span>PyPy 1.9.0 with <span class="caps">GCC</span> 4.2.1<span class="o">]</span><br /></pre></div><br /><figcaption>Bash</figcaption></figure></div>
<p>Now you are good to get working on your Python project with PyPy. Happy&nbsp;hacking!</p> </content>
</entry>
<entry>
<title type="html">Write Less Code</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/2012/06/write-less-code.html"/>
<updated>2012-06-26T09:50:00Z</updated>
<published>2012-06-26T09:50:00Z</published>
<id>http://mikegrouchy.comblog/2012/06/write-less-code.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="software"
label="Software" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="programming"
label="Programming" />
<content type="html">
<p>One of the fundamental truths of software development is that you have to write code,
but one of the biggest fallacies is the idea that writing code is your job. When I
first started out as a software developer, I fell into that trap, writing code is
a powerful thing, its empowering, you feel like you are productive and you are
accomplishing things. However, what I have learned over the years is the real
truth of the matter. The truth that the job of a software developer is to write
as little code as&nbsp;possible.</p>
<p>Now, don&#8217;t get me wrong, we should not be getting ourselves into <a href="http://codegolf.com/">code golf</a>
situations where we are compacting code and saving keystrokes to the point where
the code you produce is no longer understandable. When you think about it though
the fact that most of your time will be maintaining the terrible code you wrote,
writing less code and not creating more work for yourself will start to look like
an exceptionally good&nbsp;idea.</p>
<h2>Why?</h2>
<p>Look around, look at your tools, look at the framework you likely use to
produce that thing you work on. Everything you do, all the tools you use,
everything is trying make you write less code. Your tools are trying to make
you less error prone, and abstracting away the things that will cause you trouble
down the&nbsp;road.</p>
<p>So why should you write less code? When I said earlier that your job was to write
less code, I was fibbing a little bit. Really your job is to <strong>think</strong>, your job
is to think about the problem at hand, devise an elegant solution and then turn
that solution into software. One of the byproducts of creating software is that you
have to write code to solve&nbsp;problems.</p>
<p><img alt="the thinker" src="http://upload.wikimedia.org/wikipedia/commons/thumb/5/56/The_Thinker,_Rodin.jpg/250px-The_Thinker,_Rodin.jpg" /></p>
<h2>Code is a&nbsp;by-product</h2>
<p>Code isn&#8217;t that important. We love to convince ourselves that it is because
as we actually start executing and turning our solutions into software, it seems
like writing code is both a means and an end unto itself. We talk about our
<a href="http://mikegrouchy.com/blog/compile-vim-with-python-on-osx-with-homebrew.html">editors</a>,
we talk about our <a href="http://pycoders.com">language of choice</a> and we talk about our
<a href="http://mikegrouchy.com/blog/zsh-is-your-friend.html">environments</a>. I do it,
you do it, we all do it. There is no shame in enjoying the craft of the work you do.
The trick is to stay focused. Code is awesome, but its also the enemy, it takes
time to write, it can be fragile, it can be unclear and not particularly&nbsp;robust.</p>
<p>This is why I stick with the mantra &#8220;Write less code&#8221;. Whenever I feel like something
is getting bigger than it should be or more complicated than it should be, I say
&#8220;Write less code&#8221;. Whenever I write so much code that it gets hard to keep it
in context, I refactor, I clean it up, all the while, thinking about &#8220;Write less&nbsp;code&#8221;.</p>
<p>As much as it pains me to say, sometimes there is no way to get around writing a
bunch of code, but if you can&#8217;t be concise, be clear. Writing less code is
writing <a href="http://amzn.to/MJFkE4">clean code</a>. Writing less code is also about
writing clear code. When you are economical with the code you write the purpose
of your code becomes&nbsp;clear.</p>
<p>So, whats the lesson here? Most importantly I think the lesson here is that
code is a by-product, its an unavoidable thing that you generate in the process
of doing your job. So think more, <a href="http://amzn.to/KHjbJp">refactor more</a>, remove some
old code and write less new code, do yourself a favor and start this&nbsp;today.</p> </content>
</entry>
<entry>
<title type="html">Great Python/Django Testing Talks</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/great-django-test-talks.html"/>
<updated>2012-06-10T21:05:00Z</updated>
<published>2012-06-10T21:05:00Z</published>
<id>http://mikegrouchy.comblog/great-django-test-talks.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="django"
label="Django" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="python"
label="Python" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="test"
label="Test" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="testing"
label="Testing" />
<content type="html">
<p>I have been working on some tests for an upcoming product at <a href="http://swixhq.com"><span class="caps">SWIX</span></a>
and as any good developer I think its important to make an effort to constantly be
learning new things. In this vein I starting digging through the videos for
this years <a href="https://us.pycon.org/2012/">Pycon <span class="caps">US</span></a>. Lo and Behold Testing was a
popular topic at Pycon so there were lots of talks to&nbsp;watch!</p>
<p>My two favorite talks were Testing and Django by <a href="https://twitter.com/carljm">Carl Meyer</a>
and Fast Test, Slow Test by the always insightful <a href="https://twitter.com/garybernhardt">Gary Bernhardt</a>.</p>
<h2>Testing and Django - Carl&nbsp;Meyer</h2>
<p><iframe width="600" height="450" src="http://www.youtube.com/embed/ickNQcNXiS4" frameborder="0" allowfullscreen></iframe>
<br/>
Carl Meyer gives this great deep dive into testing Django projects, there are
plenty of gems in here, including some code for a Django Test Runner using Unittest2&#8217;s
test discovery. Carl gives some great tips for writing tests with Django as well as tips
for just writing good tests in&nbsp;general.</p>
<h2>Fast Test, Slow Test - Gary&nbsp;Bernhardt</h2>
<p><iframe width="600" height="450" src="http://www.youtube.com/embed/RAxiiRPHS9k" frameborder="0" allowfullscreen></iframe>
<br/>
This talk is superb. Gary Bernhardt talks about how to write a fast test suite as
well as how you should be testing your applications. He points out that the slow
test suite problem is usually releated to the problem of test authors writing Unit
Tests which are actually System&nbsp;Tests.</p>
<p>Those two testing talks were my favorites, but some other good ones that are
worth checking out&nbsp;are:</p>
<ul>
<li><a href="http://www.youtube.com/watch?v=TmuEDxX1FDQ">Certainty in an Uncertain World: Gaining Confidence through Security Testing</a> - Geremy&nbsp;Condra</li>
<li><a href="https://www.youtube.com/watch?v=hvPYuqzTPIk">Fake It Til You Make It: Unit Testing Patterns With Mocks and Fakes</a> - Brian K.&nbsp;Jones</li>
<li><a href="https://www.youtube.com/watch?v=1VZfL9JVgFg">Speedily Practical Large-Scale Tests</a> - Erik&nbsp;Rose</li>
<li><a href="https://www.youtube.com/watch?v=Xu5EhKVZdV8">Stop Mocking, Start Testing</a> - Augie Fackler <span class="amp">&amp;</span> Nathaniel&nbsp;Manista</li>
<li><a href="https://www.youtube.com/watch?v=9LVqBQcFmyw">pytest - rapid and simple testing with Python</a> - Holger&nbsp;Krekel</li>
</ul>
<p>Besides these videos another great resource to take your Python testing a bit
farther is this book, the <a href="http://amzn.to/LUe8SX">Python Testing Cookbook </a>. It
has plenty of great strategys that you can use for testing your Python&nbsp;projects.</p>
<p>If you have any other good Django testing tips or Talks leave them in the comments.
If you are looking for more Python news, tips and discussion you should check out
<a href="http://pycoders.com">Pycoders Weekly</a>, a weekly Python newsletter that I&nbsp;curate.</p> </content>
</entry>
<entry>
<title type="html">Be Pythonic: __init__.py</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/be-pythonic-initpy.html"/>
<updated>2012-05-16T23:25:00Z</updated>
<published>2012-05-16T23:25:00Z</published>
<id>http://mikegrouchy.comblog/be-pythonic-initpy.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="python"
label="Python" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="tips"
label="Tips" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="tutorial"
label="Tutorial" />
<content type="html">
<p>This is hopefully the first in a series of posts about writing Pythonic code and
explaining some common Python&nbsp;idioms.</p>
<p>So the first thing I am going to address in this series of posts is <code>__init__.py</code>.</p>
<h2>What is <code>__init__.py</code> used&nbsp;for?</h2>
<p>The primary use of <code>__init__.py</code> is to initialize Python packages. The easiest
way to demonstrate this is to take a look at the structure of a standard python&nbsp;module.</p>
<pre>
package/
__init__.py
file.py
file2.py
file3.py
subpackage/
__init__.py
submodule1.py
submodule2.py
</pre>
<p>As you can see in the structure above the inclusion of the <code>__init__.py</code> file in
a directory indicates to the Python interpreter that the directory should be
treated like a Python&nbsp;package</p>
<h2>What goes in <code>__init__.py</code>?</h2>
<p><code>__init__.py</code> can be an empty file but it is often used to perform setup needed
for the package(import things, load things into path,&nbsp;etc).</p>
<p>One common thing to do in your <code>__init__.py</code> is to import selected Classes, functions,
etc into the package level so they can be convieniently imported from the&nbsp;package.</p>
<p>In our example above we can say that file.py has the Class File. So without
anything in our <code>__init__.py</code> you would import with this syntax:
<div class="codebox"><figure class="code"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">package.file</span> <span class="kn">import</span> <span class="n">File</span><br /></pre></div><br /><figcaption>Python</figcaption></figure></div></p>
<p>However you can import File into your <code>__init__.py</code> to make it available at the
package level:
<div class="codebox"><figure class="code"><div class="highlight"><pre><span class="c"># in your <strong>init</strong>.py</span><br /><span class="kn">from</span> <span class="nn">file</span> <span class="kn">import</span> <span class="n">File</span><br />&nbsp;<br /><span class="c"># now import File from package</span><br /><span class="kn">from</span> <span class="nn">package</span> <span class="kn">import</span> <span class="n">File</span><br /></pre></div><br /><figcaption>Python</figcaption></figure></div></p>
<p>Another thing to do is at the package level make subpackages/modules available
with the <code>__all__</code> variable. When the interpeter sees an <code>__all__</code> variable defined
in an <code>__init__.py</code> it imports the modules listed in the <code>__all__</code> variable when you do:
<div class="codebox"><figure class="code"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">package</span> <span class="kn">import</span> <span class="o">*</span><br /></pre></div><br /><figcaption>Python</figcaption></figure></div></p>
<p><code>__all__</code> is a list containing the names of modules that you want to be imported
with import * so looking at our above example again if we wanted to import the
submodules in subpackage the <code>__all__</code> variable in <code>subpackage/__init__.py</code> would be:
<code>__all__ = ['submodule1', 'submodule2']</code></p>
<p>With the <code>__all__</code> variable populated like that, when you perform <code>from subpackage import *</code>
it would import submodule1 and&nbsp;submodule2.</p>
<p>As you can see <code>__init__.py</code> can be very useful besides its primary function of
indicating that a directory is a module. If you have any comments or questions,
hit up the comments or contact me on <a href="http://twitter.com/mgrouchy">twitter</a>.</p>
<p>If you are looking for more Python news, tips and discussion you should check out
<a href="http://pycoders.com">Pycoder&#8217;s Weekly</a> a weekly Python newsletter that I&nbsp;curate.</p> </content>
</entry>
<entry>
<title type="html">Compile Vim with Python support on OSX with Homebrew</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/compile-vim-with-python-on-osx-with-homebrew.html"/>
<updated>2012-05-09T10:17:00Z</updated>
<published>2012-05-09T10:17:00Z</published>
<id>http://mikegrouchy.comblog/compile-vim-with-python-on-osx-with-homebrew.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="python"
label="Python" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="vim"
label="Vim" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="homebrew"
label="Homebrew" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="OSX"
label="Osx" />
<content type="html">
<p><a href="http://twitter.com/myusuf3">Mahdi</a> asked me today how I compiled Vim with +Python
on <span class="caps">OSX</span> and I couldn&#8217;t remember the exact commands, so I am writing this blog post
so I will remember in the future and because someone else might find this&nbsp;useful.</p>
<p>Compiling Vim with +Python or +Ruby is required if you want to run any plugins
that have peices that are written in those languages. The usual way around this
on <span class="caps">OSX</span> is to just install <a href="https://github.com/b4winckler/macvim">MacVim</a> and use
that. However, if you really want to use terminal Vim, you are out of luck on&nbsp;<span class="caps">OSX</span>.</p>
<p>So this is where <a href="http://mxcl.github.com/homebrew/">Homebrew</a> comes in, we can use Homebrew to compile vim from a custom
formula. The only requirements to do this are <a href="http://mercurial.selenic.com/">Mercurial</a> and&nbsp;Homebrew.</p>
<p>You can install Mercurial by using either easy_install or pip:
<div class="codebox"><figure class="code"><div class="highlight"><pre><span class="c">#install mercurial</span><br />sudo easy_install mercurial<br /><span class="c">#or</span><br />sudo pip install mercurial<br /></pre></div><br /><figcaption>Bash</figcaption></figure></div></p>
<p>You can follow the directions on the <a href="https://github.com/mxcl/homebrew/wiki/installation">Homebrew Github Wiki</a> to install&nbsp;homebrew.</p>
<p>Now you can Install this Homebrew formula which has been modified slightly to my tastes
to install&nbsp;Vim.</p>
<script src="https://gist.github.com/2051422.js?file=vim.rb"></script>
<p>To install this formula you can just use this command, or fork the Gist and modify
the formula as you see fit(that&#8217;s what I did) to install your flavor of Vim.
<div class="codebox"><figure class="code"><div class="highlight"><pre>brew install https://raw.github.com/gist/2051422/0cfce544a4ab86318221c4d7213306a7b7ec7b3d/vim.rb<br /></pre></div><br /><figcaption>Bash</figcaption></figure></div></p>
<p>By default the Vim compiled with this script is compiled with +python and +ruby,
if you want support for other interpreters you can pass those parameters to the script with:
<div class="codebox"><figure class="code"><div class="highlight"><pre>--enable-interp<span class="o">=</span><span class="caps">NAME</span>,...<span class="s2">&quot;, &quot;</span>lua, mzscheme, perl, python, python3, tcl and/or ruby<span class="err">&quot;</span><br /></pre></div><br /><figcaption>Bash</figcaption></figure></div></p>
<p>You can also specify vim be compiled with features(the scripts, default is normal)
To see what the features do, you can see this <a href="http://www.drchip.org/astronaut/vim/vimfeat.html">rather ugly table</a>
<div class="codebox"><figure class="code"><div class="highlight"><pre>--with-features<span class="o">=</span><span class="caps">TYPE</span><span class="s2">&quot;, &quot;</span>tiny, small, normal, big or huge<br /></pre></div><br /><figcaption>Bash</figcaption></figure></div></p>
<p>Now that you have vim installed with your interpreters and features compiled,
go ahead and check the version:
<div class="codebox"><figure class="code"><div class="highlight"><pre>vim --version<br /></pre></div><br /><figcaption>Bash</figcaption></figure></div></p>
<p>and you should see that it is the updated&nbsp;version.</p>
<p>If you don&#8217;t see that it is the updated version, it means your /usr/local/bin isn&#8217;t
on your path, or if it is on your path it comes after&nbsp;usr/bin.</p>
<p>So how do you fix&nbsp;this?</p>
<h2>Option 1: Update your&nbsp;path:</h2>
<p>In your .zshrc (<a href="http://mikegrouchy.com/blog/zsh-is-your-friend.html">you are using Zsh right?</a>) or .bashrc
update your&nbsp;path.</p>
<div class="codebox"><figure class="code"><div class="highlight"><pre><span class="c">#this</span><br /><span class="nb">export </span><span class="nv"><span class="caps">PATH</span></span><span class="o">=</span>/usr/bin:/usr/sbin<br /><span class="c">#to this</span><br /><span class="nb">export </span><span class="nv"><span class="caps">PATH</span></span><span class="o">=</span>/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin<br /></pre></div><br /><figcaption>Bash</figcaption></figure></div>
<h2>Option 2: Move your old Vim and symlink the new&nbsp;one</h2>
<p>You can move the Vim that comes with <span class="caps">OSX</span> and Symlink the one brew&nbsp;installed</p>
<div class="codebox"><figure class="code"><div class="highlight"><pre>sudo mv /usr/bin/vim /usr/bin/oldvim<br />ln -s /usr/local/bin/vim /usr/bin/vim<br /></pre></div><br /><figcaption>Bash</figcaption></figure></div>
<p>One of those should solve your&nbsp;problem.</p>
<h2>Protip:</h2>
<p>You may notice that your terminal Vim does not support backspace in Insert mode
with the settings I have setup in the brew&nbsp;formula.</p>
<p>If this is something you want, you can stick this line in your&nbsp;.vimrc:</p>
<div class="codebox"><figure class="code"><div class="highlight"><pre><span class="k">set</span> <span class="nb">backspace</span><span class="p">=</span>indent<span class="p">,</span><span class="nb">eol</span><span class="p">,</span><span class="k">start</span><br /></pre></div><br /><figcaption>VimL</figcaption></figure></div>
<p>I think that should be it. If you have any questions leave it in the comments or
ask me on <a href="http://twitter.com/mgrouchy">twitter</a>.</p>
<p>Edit: Discussion on <a href="http://news.ycombinator.com/item?id=3949774">Hacker&nbsp;News</a></p> </content>
</entry>
<entry>
<title type="html">Introducing Pycoders Weekly</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/introducing-pycoders-weekly.html"/>
<updated>2012-02-06T10:00:00Z</updated>
<published>2012-02-06T10:00:00Z</published>
<id>http://mikegrouchy.comblog/introducing-pycoders-weekly.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="python"
label="Python" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="newsletter"
label="Newsletter" />
<content type="html">
<p>The last couple of weeks <a href="http://mahdiyusuf.com">Mahdi Yusuf</a> and I have been talking
about the python newsletter that we would want to recieve weekly. A curated
collection of the best python news, articles and projects from around the internet
delivered to your inbox in a beautiful package&nbsp;weekly.</p>
<p>The result of this talk has been <a href="http://pycoders.com">Pycoders Weekly</a>.
The first issue is set to drop on Friday, February 17th, we hope you like it.
<img src="/media/images/2012/02/pycoders_weekly.png" style="width:560px; padding:10px;left:auto;right:auto;border:0px;"/></p>
<p>If you have created some content or run some project that you think should be
in <a href="http://pycoders.com">Pycoders Weekly</a> contact <a href="http://twitter.com/myusuf3">Mahdi</a>
or <a href="http://twitter.com/mgrouchy">me</a> and let us&nbsp;know.</p> </content>
</entry>
<entry>
<title type="html">Zsh is your friend</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/zsh-is-your-friend.html"/>
<updated>2012-01-31T11:14:00Z</updated>
<published>2012-01-31T11:14:00Z</published>
<id>http://mikegrouchy.comblog/zsh-is-your-friend.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="zsh"
label="Zsh" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="shell"
label="Shell" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="terminal"
label="Terminal" />
<content type="html">
<p>I don&#8217;t know if you know this, but ZShell is your friend, you might not know it
yet, but its true. I know what you are thinking , &#8220;whats wrong with Bash?&#8221;,
nothing, except its not&nbsp;Zsh.</p>
<p>Its not that Bash is a bad guy, I don&#8217;t want to put him down, but if we
were picking teams, Bash would be last picked in gym&nbsp;class.</p>
<p>He isn&#8217;t very versatile and he doesn&#8217;t do anything particularily great, all in all
he is kind of just a worse Zsh(or Zsh is kind of like a better&nbsp;Bash).</p>
<p>Zsh is easy to get started with because it looks and acts like bash in a lot of
ways. So if you are familiar with bash don&#8217;t worry, you can try zsh out without
skipping a beat and you still end up with a better&nbsp;shell.</p>
<h3>Why is Zsh better than&nbsp;Bash?</h3>
<p>In my mind one of the most important reasons why Zsh is better than bash is
autocompletion, and I don&#8217;t mean that whimpy autocompletion you get by installing
bash completion. I mean, this is real deal command completion, besides getting all
the completion of common commands on the command line, and being ridiculously
fast, the completion also gives you a keyboard navigable completion&nbsp;list.</p>
<p><img src="/media/images/2012/01/zshcompletion.jpg" style="width:660px; padding-top:10px;"/></p>
<p>Okay, I know what you are saying, big deal right? Well how about really great built
in autocompletion for common commands. Lets use Kill as an example. You&nbsp;type</p>
<pre><code>Kill &lt;tab&gt;
</code></pre>
<p>in bash, you get what, the list of all files that are in your current
working directory. Not very helpful behavior in my opinion. What happens if you&nbsp;type</p>
<pre><code>kill &lt;tab&gt;
</code></pre>
<p>in Zsh?&nbsp;This:</p>
<p><img src="/media/images/2012/01/zshkillcompletion.jpg" style="width:660px; padding-top:10px;"/></p>
<p>Lists of all your processes with pids? Yes&nbsp;please.</p>
<p>Another thing that make makes Zsh stand out is shared history. If you are anything
like me you live in the terminal all day long. There is nothing worse(I&#8217;m exaggerating)
than opening another terminal in a tab and navigating your history looking for
that recent thing you just did in another window and have it not be in your
history. In Zsh this isn&#8217;t an&nbsp;issue.</p>
<h3>Time for more&nbsp;awesome</h3>
<p>Okay, so we have great, fast autocompletion and shared history. How much more awesome
could there be?&nbsp;Lots!</p>
<p>Autocorrect is pretty&nbsp;cool</p>
<pre><code>mikegrouchyv2 ::(master*) » gut status
zsh: correct 'gut' to 'git' [nyae]?y
git status
</code></pre>
<p>Hey thats pretty cool, autocorrect for known commands. What would I do
without you(besides type the command&nbsp;again)?</p>
<p>Even cooler than autocorrect, for the super nerd(like me) Vi and emacs mode,
<strong>shit yeah</strong>, you can have your favorite editor on your command line. It will
support common movement commands and editing modes, like command and insert mode
for&nbsp;Vi.</p>
<p>Last but certianly not least, Zsh has <a href="https://github.com/robbyrussell/oh-my-zsh">oh-my-zsh</a>
from the&nbsp;website:</p>
<blockquote>
<p>A community-driven framework for managing your zsh configuration. Includes 40+ optional plugins (rails, git, <span class="caps">OSX</span>, hub, capistrano, brew, ant, macports, etc), over 80 terminal themes to spice up your morning, and an auto-update tool so that makes it easy to keep up with the latest updates from the&nbsp;community.</p>
</blockquote>
<p>I know one exists for bash, but I find oh-my-zsh to be excellent, it autoupdates,
has great plugins and a very active community behind&nbsp;it.</p>
<p>All in all, Zsh is pretty great, so if you haven&#8217;t tried Zsh, maybe its time you
try it out. If so <a href="https://github.com/robbyrussell/oh-my-zsh">oh-my-zsh</a> is a
pretty great place to&nbsp;start.</p>
<p>Also releated reading, a book that was reccomended to me with a lot of great
Zsh tips as well as Bash tips for those who I haven&#8217;t convinced yet is <a href="http://amzn.to/KkPrDo">Bash to Z Shell: Conquering the Command Line</a>.</p>
<p>If you are already drinking the Kool-aid and have some Zsh tips to share, either
leave a comment or hit me up on <a href="http://twitter.com/mgrouchy">twitter</a>.</p>
<p><strong><span class="caps">EDIT</span></strong>: If you are interested in learning more about Zsh, check out the <a href="http://zsh.sourceforge.net/FAQ/">Zsh <span class="caps">FAQ</span></a>.
Its pretty complete and much better than I could do in a very basic blog&nbsp;post.</p>
<p>Also, <a href="http://news.ycombinator.com/item?id=3533895">More discussion on Hacker&nbsp;News</a></p> </content>
</entry>
<entry>
<title type="html">Setting up SSL with Nginx and Godaddy</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/setting-up-nginx-with-ssl-and-godaddy.html"/>
<updated>2010-12-14T18:07:00Z</updated>
<published>2010-12-14T18:07:00Z</published>
<id>http://mikegrouchy.comblog/setting-up-nginx-with-ssl-and-godaddy.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="ssl"
label="Ssl" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="nginx"
label="Nginx" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="godaddy"
label="Godaddy" />
<content type="html">
<p>I was at a local coffee company the other day and <a href="http://twitter.com/jlgosse">Josh</a>
and I were talking about some annoyances when dealing with godaddys <span class="caps">SSL</span> certificates.
Talking to him about this reminded me that I had this post in the pipe for a long
time and gave me the motivation to finish&nbsp;this.</p>
<p>On Many browsers, if you set up a standard Godaddy <span class="caps">SSL</span> Certificate out of the box,
you will get ssl errors in many browsers saying that they can&#8217;t recognize your
certificate authority, this is generally not a good thing the whole point of installing
<span class="caps">SSL</span> is for security and establishing trust iwith your customers, clients and website&nbsp;visitors.</p>
<p>To start the process of getting set up with an <span class="caps">SSL</span> certificate from godaddy just go
and purchase one. You can pick anyone you like, but in general for most things you
can get away with just purchasing the cheapest one, I think its around&nbsp;21$/yr.</p>
<p>After you purchase your certificate, open up a terminal and log onto your server.
You first need to create a key and certificate request for your domain.
<script src="http://gist.github.com/524908.js?file=gistfile1.sh"></script></p>
<p>Just fill out the requested information and you should be good to go. You then log
into your godaddy account and provide godaddy with the certificate request and they
will generate the certificate for you. With the cheaper certificate this process usually
takes minutes. For the more expensive certificte the process takes considerably&nbsp;longer.</p>
<p>After you recieve your certificates from godaddy, you need to put your certificates
on your server and then you just add these lines to the approprate section of your
configs depending on your&nbsp;webserver.</p>
<p>For nginx:
<script src="http://gist.github.com/524908.js?file=gistfile2.sh"></script></p>
<p>For apache:
<script src="http://gist.github.com/524908.js?file=gistfile3.sh"></script></p>
<p>If you have any questions, either leave something in the comments, or you can catch me <a href="http://twitter.com/mgrouchy">here on twitter</a>.</p> </content>
</entry>
<entry>
<title type="html">SICP in Epub Format</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/structure-and-interpretation-of-computer-programs-epub.html"/>
<updated>2010-07-05T20:14:00Z</updated>
<published>2010-07-05T20:14:00Z</published>
<id>http://mikegrouchy.comblog/structure-and-interpretation-of-computer-programs-epub.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="book"
label="Book" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="lisp"
label="Lisp" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="scheme"
label="Scheme" />
<content type="html">
<p>Awhile ago(I&#8217;m not sure where), I ran across a list of programming/algorithm/computer
science book reccomendations and on that list was <a href="http://mitpress.mit.edu/sicp/">Structure and Interpretation
of Computer Programs(<span class="caps">SICP</span>)</a>. Ever since then it and a few other books have been
on the top of my <strong>must</strong> read&nbsp;list.</p>
<p>I have been interested in learning lisp for quite awhile, I think its probably the
<a href="http://news.ycombinator.com">Hacker News</a> influence, lisp is often talked
about there as Hacker News is written in a dialect of lisp authored by
<a href="http://paulgraham.com">Paul Graham</a> and <a href="http://pdos.csail.mit.edu/~rtm/">Robert Morris</a>
called <a href="http://arclanguage.org">Arc</a>. So while in <span class="caps">SICP</span> the dialect of
lisp is not Arc but Scheme, from its description and reviews I have read, <span class="caps">SICP</span> seems
like it would be a great way to get started programming in&nbsp;lisp.</p>
<p>Why learn lisp you say? Certianly not to actually program in it professionally, I
actually don&#8217;t know anyone who programs in lisp for their job(Thats not to say there
aren&#8217;t lisp jobs out there). The reason to learn lisp is that by all accounts learning
lisp is a transformative experience. I have consistently read and have had one of my
very good friends tell me that learning to write lisp changes the way you think about
programming and writing software. If nothing else that should make it worth the
time and effort to&nbsp;learn.</p>
<p>So back to <span class="caps">SICP</span>. I have been meaning to pick up a copy and start reading it for awhile
but I had never got around to it. There is a web version but like a lot of people,
I have a hard time reading from my computer screen, not because it hurts my eyes or
anything like that, I think its just a matter of focus. There are so many things external
to the book when you are reading it while sitting at your computer that it becomes tempting
to multitask while reading. So today I was very excited to learn that <a href="http://twitter.com/ieure">Ian Eure</a>
created an epub copy of the book and its available on <a href="http://github.com/ieure/sicp">github</a>.</p>
<p>This is a perfect format for me, I can now load it onto my iphone(on stanza or ibooks)
and read away while I spend my ~1.5 hours/day commuting on the bus back and forth to work.
I usually try to get books in <span class="caps">PDF</span> form and just read them out of <a href="https://www.dropbox.com/referrals/NTE5Nzg0MTU5">dropbox</a>,
which is a good experience, but I would definately prefer epub as its easier to read.
All in all this is a pretty big win for me and its certianly a great motivator to
get me started reading <span class="caps">SICP</span> and learning&nbsp;Scheme.</p>
<p>Are there any books like <span class="caps">SICP</span> that you would reccomend? I&#8217;d love to get some suggestions,
just leave a note in the&nbsp;comments!</p> </content>
</entry>
<entry>
<title type="html">My Development Toolbox: An Introduction</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/my-development-toolbox.html"/>
<updated>2010-07-04T18:14:00Z</updated>
<published>2010-07-04T18:14:00Z</published>
<id>http://mikegrouchy.comblog/my-development-toolbox.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="development"
label="Development" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="tools"
label="Tools" />
<content type="html">
<p>Lately I have seen a bunch of posts where bloggers, developers, etc. talk about their
current development environments and hardware. I really enjoy these posts because
its always nice to see what tools other developers are using, so I thought I would
chip in with a few blog posts of my own. In a couple of &#8220;My Toolbox&#8221; posts, I will
talk about the hardware and software I use to do my work as Software Developer(currently
doing mostly Python/Django work at <a href="http://swixhq.com"><span class="caps">SWIX</span></a>.</p>
<p>All in all the hardware I use in the office is pretty basic. I currently use a
<strong>13.3-Inch MacBook Pro</strong>, a pretty standard <strong>Dell 22-inch monitor</strong>,
standard <strong>Apple keyboard</strong> and the amazing <strong>Apple Magic Mouse</strong>.</p>
<p>Nothing fancy going on there, pretty standard hardware configuration and generally
what everyone in the office currently uses as we all tend to work both in the office
and from home from time to time. This hardware is essentially the perfect setup for
the work that I do. Generally the apps that I use are pretty light and I find the
13.3 inch Macbook Pro to be pretty zippy. Probably the only thing that would be a
good upgrade would be from the 22-24 inch monitor to maybe 2-22 inch&nbsp;monitors.</p>
<p>What does your setup look like? What kind of hardware do you&nbsp;use?</p> </content>
</entry>
<entry>
<title type="html">Embeddable Tweets</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/embeddable-tweets.html"/>
<updated>2010-05-05T02:14:00Z</updated>
<published>2010-05-05T02:14:00Z</published>
<id>http://mikegrouchy.comblog/embeddable-tweets.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="twitter"
label="Twitter" />
<category scheme="http://mikegrouchy.com/blog/tags'"
term="embed"
label="Embed" />
<content type="html">
<p>Twitter now allows you to Embed a Tweet, all you need is the url of a tweet, like
<a href="http://twitter.com/mgrouchy/status/13429079254">http://twitter.com/mgrouchy/status/13429079254</a>,
and you can use Twitters <a href="http://media.twitter.com/blackbird-pie/">Blackbird Pie</a>
app to embed the tweet in your website like&nbsp;below:</p>
<!-- http://twitter.com/mgrouchy/status/13429079254 -->
<p><style type='text/css'>.bbpBox{background:url(http://s.twimg.com/a/1271891196/images/themes/theme15/bg.png) #022330;padding:20px;}p.bbpTweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px}p.bbpTweet span.metadata{display:block;width:100%;clear:both;margin-top:8px;padding-top:12px;height:40px;border-top:1px solid #fff;border-top:1px solid #e6e6e6}p.bbpTweet span.metadata span.author{line-height:19px}p.bbpTweet span.metadata span.author img{float:left;margin:0 7px 0 0px;width:38px;height:38px}p.bbpTweet a:hover{text-decoration:underline}p.bbpTweet span.timestamp{font-size:12px;display:block}</style> <div class='bbpBox'><p class='bbpTweet'>This is me tweeting about how you can embed tweets, is this embedded?<span class='timestamp'><a title='Wed May 05 14:23:55 +0000 2010' href='http://twitter.com/mgrouchy/status/13429079254'>less than a minute ago</a> via <a href="http://www.tweetdeck.com" rel="nofollow">TweetDeck</a></span><span class='metadata'><span class='author'><a href='http://twitter.com/mgrouchy'><img src='http://a3.twimg.com/profile_images/817183015/swix-hipster_normal.JPG' /></a><strong><a href='http://twitter.com/mgrouchy'>Mike Grouchy</a></strong><br/>mgrouchy</span></span></p></div> <!-- end of tweet --></p>
<p>Here is the Source:
<script src="http://gist.github.com/390841.js"></script></p>
<p>Its kind of interesting, Blackbird Pie just generates a html/css snippet that you
can embed in your page. I am not sure if I prefer this way of doing things or the
way <a href="http://github.com">github</a> does it with cross site&nbsp;javascript.</p>
<p>What do you&nbsp;think?</p> </content>
</entry>
<entry>
<title type="html">A New Blog A New Beginning</title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/a-new-blog-a-new-beginning.html"/>
<updated>2010-04-30T20:14:00Z</updated>
<published>2010-04-30T20:14:00Z</published>
<id>http://mikegrouchy.comblog/a-new-blog-a-new-beginning.html</id>
<category scheme="http://mikegrouchy.com/blog/tags'"
term="meta"
label="Meta" />
<content type="html">
<p>So as you can tell this all looks a bit different. This blog that you are currently
reading is <strong>completely static</strong>. All of this post content is actually written in
<a href="http://daringfireball.net/projects/markdown/">markdown</a> and then generated as static html by
<a href="http://hyde.github.com/">Hyde</a>. As you can tell some of the css is off and
this blog isn&#8217;t overly full featured. I&#8217;m considering this a work in process and
a little project to import my css skills as well as a fun little thing I can work
on, on the side. I will probably write a post about how to get started with hyde
for people interested in trying it&nbsp;out.</p>
<p>I decided that with this new blog its a completely fresh start, I haven&#8217;t carried
over any of the old posts from my old blog and I could care less about the google
juice I am losing because of that. In this new incarnation of the blog, I&#8217;m hoping
I will post a little more consistently as well as bring a tighter focus. I have
had <a href="http://mikegrouchy.com">mikegrouchy.com</a> for 6 years and it has
been a blog that entire time, but there hasn&#8217;t been a lot of great content. I plan
on bringing back some of my old tutorial posts that people used ,
but probably update them a bit which hopefully will be an&nbsp;improvement.</p> </content>
</entry>
<entry>
<title type="html"></title>
<author><name>Mike Grouchy</name></author>
<link href="http://mikegrouchy.com/blog/2013/02/index.html"/>
<updated>2010-01-01T00:00:00Z</updated>
<published>2010-01-01T00:00:00Z</published>
<id>http://mikegrouchy.comblog/2013/02/index.html</id>
<content type="html">
</content>
</entry>
</feed>