-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfeed.xml
2074 lines (1373 loc) · 185 KB
/
feed.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
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Philipp Schmid</title>
<description>Philipp occasionally writes about things.</description>
<link>http://www.schmidp.com</link>
<atom:link href="http://www.schmidp.com/feed.xml" rel="self" type="application/rss+xml" />
<item>
<title>Lets revive this :)</title>
<description><p>At least I hope this won’t stay empty for another four years…</p>
<p>Btw, the Lancia is still not finished. It was a much worse buy than originally thought.</p>
<p>I bought another one btw, this Honda Accord SJ 81 will stay in Bremen:</p>
<p><img width="100%" src="/assets/posts/2020-01-13-hello/teilchen.jpeg" /></p>
<p>Also I witnessed this amazing firework in north korea:</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/Gdmvfl7Twpc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
<p>just posting random stuff for fun…</p>
<blockquote class="instagram-media" data-instgrm-captioned="" data-instgrm-permalink="https://www.instagram.com/p/B7PU316A3zq/?utm_source=ig_embed&amp;utm_campaign=loading" data-instgrm-version="12" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><div style="padding:16px;"> <a href="https://www.instagram.com/p/B7PU316A3zq/?utm_source=ig_embed&amp;utm_campaign=loading" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"> <div style=" display: flex; flex-direction: row; align-items: center;"> <div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"></div> <div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"></div> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"></div></div></div><div style="padding: 19% 0;"></div> <div style="display:block; height:50px; margin:0 auto 12px; width:50px;"><svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-511.000000, -20.000000)" fill="#000000"><g><path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"></path></g></g></g></svg></div><div style="padding-top: 8px;"> <div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;"> View this post on Instagram</div></div><div style="padding: 12.5% 0;"></div> <div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"><div> <div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"></div> <div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"></div> <div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"></div></div><div style="margin-left: 8px;"> <div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"></div> <div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"></div></div><div style="margin-left: auto;"> <div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"></div> <div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"></div> <div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"></div></div></div></a> <p style=" margin:8px 0 0 0; padding:0 4px;"> <a href="https://www.instagram.com/p/B7PU316A3zq/?utm_source=ig_embed&amp;utm_campaign=loading" style=" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;" target="_blank">20xx printrbot vs ultimaker 2+ #ultimaker #3dprinting</a></p> <p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;">A post shared by <a href="https://www.instagram.com/schmidphilipp/?utm_source=ig_embed&amp;utm_campaign=loading" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px;" target="_blank"> Philipp Schmid</a> (@schmidphilipp) on <time style=" font-family:Arial,sans-serif; font-size:14px; line-height:17px;" datetime="2020-01-13T00:19:30+00:00">Jan 12, 2020 at 4:19pm PST</time></p></div></blockquote>
<script async="" src="//www.instagram.com/embed.js"></script>
</description>
<pubDate>Mon, 13 Jan 2020 00:00:00 +0100</pubDate>
<link>http://www.schmidp.com/2020/01/13/hello/</link>
<guid isPermaLink="true">http://www.schmidp.com/2020/01/13/hello/</guid>
</item>
<item>
<title>Lancia Fulvia Sport (Zagato) 1600</title>
<description><p>I cannot really remember why I got interested in old cars - I do remember always admiring Tim Taylor from Home Improvement, for slowly building up his Hot Rod.</p>
<p><img width="100%" src="/assets/posts/2016-04-18-lancia-fulvia-zagato/hotrod.png" /></p>
<p>But what specifically got me to buy myself a classic car book and price index (<a rel="nofollow" href="http://www.amazon.de/gp/product/395843309X/ref=as_li_tl?ie=UTF8&amp;camp=1638&amp;creative=6742&amp;creativeASIN=395843309X&amp;linkCode=as2&amp;tag=schmidp-21">Oldtimer Katalog Nr. 30: Europas größter Marktführer - Jubiläumsausgabe 30 Jahre</a><img src="http://ir-de.amazon-adsystem.com/e/ir?t=schmidp-21&amp;l=as2&amp;o=3&amp;a=395843309X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />) slipped my mind.</p>
<p>Anyway, I went thought the book and looked for cars that have an interesting style, are not yet extremely expensive and have some kind of interesting history. The car that stood out in the end was the Lancia Fulvia Zagato.</p>
<h1 id="car-1-vienna">Car #1 Vienna</h1>
<p>So I started looking for those cars and there was even one 1972 1.6 being sold near Vienna for € 24500 at <a href="http://www.oldie-point.at">Jüly Oldie Point</a>. Lena and I had a look at the car on a weekend sometime in 2015, it was a red 1.6 liter one. Lancia only built 800 of them.</p>
<p><img width="100%" src="/assets/posts/2016-04-18-lancia-fulvia-zagato/zagato_wien.jpg" /></p>
<p>But the car was in a condition, that I didn’t have the guts to buy it:</p>
<ul>
<li>Broken windscreen</li>
<li>Doors did not close</li>
<li>Carburates where removed and seemed to have burned</li>
<li>Lot’s of other things I don’t rembember</li>
</ul>
<h1 id="car-2-amsterdam">Car #2 Amsterdam</h1>
<p>Then I looked at a car in Amsterdam. The seller wanted € 30000 when I first saw the car online (maybe early 2015?) and € 35000 in November 2015:</p>
<p><img width="100%" src="/assets/posts/2016-04-18-lancia-fulvia-zagato/zagato_amsterdam.jpg" /></p>
<p>I did not buy the car (the last price was € 33000), because I was hoping to find one in better condition and maybe even cheaper directly in italy.</p>
<h1 id="car-3-milano">Car #3 Milano</h1>
<p>So the next stop was Milano in Italy. I wanted to look at this car (which is currently still available):
<a href="http://ww3.autoscout24.at/classified/274848683">http://ww3.autoscout24.at/classified/274848683</a>, so Lena and I flew to Milano over the weekend to also do some sight seeing.</p>
<p>By chance, there also was the Milano Classic Expo on the same weekend, where Lena and I went to on Saturday morning.
Lots of great cars :-) We even saw (and heared!) a Lancia Stratos racing around a track.</p>
<p>At the expo, I also saw my orange Zagato for the first time, but more about that <a href="#car-4-milano">later</a>.</p>
<p>So we left the expo to look at the red Zagato:</p>
<p><img width="100%" src="/assets/posts/2016-04-18-lancia-fulvia-zagato/zagato_gabrielle.jpg" /></p>
<p>The owner was a private seller (a lawyer) and very nice, he picked us up from the hotel and showed us the car.
He wanted € 40000, but I felt that the Zagato at the Expo was in better shape and much cheaper.
So I offered him a much, much lower price, which he (as I expected) did not acccept.</p>
<h1 id="car-4-milano">Car #4 Milano</h1>
<p>As already mentioned, at the Milano Classic Car expo, there was an orange Zagato for sale by a dealer (Grimaldi in Vigevano).</p>
<p>Here are some pictures of the car at the expo:</p>
<p><img width="100%" src="/assets/posts/2016-04-18-lancia-fulvia-zagato/milano_expo_1.jpg" />
<img width="100%" src="/assets/posts/2016-04-18-lancia-fulvia-zagato/milano_expo_2.jpg" />
<img width="100%" src="/assets/posts/2016-04-18-lancia-fulvia-zagato/milano_expo_3.jpg" /></p>
<p>After the weekend in Milano I was back in Vienna and there was still no Zagato in my driveway :-/</p>
<p>Luckily, two weeks later I had a business trip to Milano and used the time to look at the orange one again. I took a test drive and inspected the car for 2 hours:</p>
<ul>
<li>the engine was hot when I came there, but was running very nice otherwise</li>
<li>some coolant was leaking from a tube, nothing major</li>
<li>bumpers have quite a few dents</li>
<li>the dashboard is cracked not particularly nice</li>
<li>speedometer does not work</li>
<li>the door handles feel loose and they do not lock well.</li>
<li>some rust at the rear hatch, but overall I could’t find much rust</li>
</ul>
<p>But, from my limited knowlege, the car looked pretty complete.</p>
<p>So I pulled the trigger and made the dealer an offer that included transporting the car to Vienna.
He accepted, we shook hands and I was the owner of a 44 year old car.</p>
<p>According to the dealer, the story of the car is: A guy bought it 20 years ago and restored it. Shortly afterwards he had a fatal car accident and the car stayed in his garage until his wife sold it to the dealer.</p>
<p>About two weeks later the dealer sent me a picture of the car being loaded onto a trailer:</p>
<p><img width="100%" src="/assets/posts/2016-04-18-lancia-fulvia-zagato/trailer_behind.jpg" /></p>
<p>So on the 15th of April my <em>Lancia Fulvia Zagato 1600 818.750 001490</em> finally arrived at his new home:</p>
<p><img width="100%" src="/assets/posts/2016-04-18-lancia-fulvia-zagato/home.jpg" /></p>
</description>
<pubDate>Mon, 18 Apr 2016 00:00:00 +0200</pubDate>
<link>http://www.schmidp.com/2016/04/18/lancia-fulvia-zagato/</link>
<guid isPermaLink="true">http://www.schmidp.com/2016/04/18/lancia-fulvia-zagato/</guid>
</item>
<item>
<title>Full Disk Encryption with GRUB 2 + LUKS + LVM + SWRAID on Debian Jessie</title>
<description><p>In January I started setting up a home server/NAS based on FreeBSD on a HP Microserver. Read about my setup in <a href="/2014/01/06/zfs-full-disk-encryption-with-freebsd-10-part-1/">part 1</a> and <a href="/2014/01/07/zfs-full-disk-encryption-with-freebsd-10-part-2/">part 2</a>.</p>
<p>While I generally like the idea (BSD license, complete base system in one repo) and community behind FreeBSD, I have the feeling that the project is missing some manpower. VIMAGE is still experimental and in combination with PF it will crash every night (because of a Cron job). There seems to be a bug that IPSec tunnels bypass the firewall.
There is no AMD support in bhyve yet (it’s scheduled for October 2014 with the 10.1 release), so I cannot run any virtual machines on my home server.</p>
<p>So my concerns about manpower and the fact that I cannot run any virtual machines yet lead me back to Debian Linux.</p>
<h1 id="the-plan">The Plan</h1>
<p>Because with Debian I can use KVM and run multiple virtual machines, I’ll set up a minimalistic, fully encrypted base system with Debian. All services the NAS will supply will run in virtual machines that run Ubuntu, Debian or FreeBSD.</p>
<h1 id="the-setup">The Setup</h1>
<p>Before we finally talk about the setup, I’d like to give attribution to the blog posts that I based this guide on:</p>
<ul>
<li><a href="http://michael-prokop.at/blog/2014/02/28/state-of-the-art-debianwheezy-deployments-with-grub-and-lvmsw-raidcrypto/">State of the art Debian/wheezy deployments with GRUB and LVM/SW-RAID/Crypto</a></li>
<li><a href="https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption">archlinux: dm-crypt/Device encryption</a></li>
</ul>
<h2 id="hardware">Hardware</h2>
<p>I have four disks in my HP MicroServer:</p>
<ul>
<li>Disk 1: Operating System - 3.5’ 250GB 7200RPM HDD</li>
<li>Disk 2: Operating System - 2.5’ 200GB 7200RPM HDD</li>
<li>Disk 3: Data - 3.5’ 4TB NAS HDD</li>
<li>Disk 4: Data - 3.5’ 4TB NAS HDD</li>
</ul>
<p>The first two disks will hold the base operating system and maybe the virtual machine operating system images.
The data disks will be for data only.</p>
<p>The storage system layers will look like this:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>| Filesystem (eg. ext4) |
| LVM |
| LUKS Crypto |
| Linux Software RAID 1 |
| Physical Hard Disk |
</code></pre></div></div>
<p>Above the physical block layer, we’ll put a Linux software RAID. The first RAID 1 will span disks 1 and 2 and a second RAID 1 will span the data disks (disks 3 and 4).</p>
<p>And on top of the software RAID will be the encryption layer. Why not the other way round? Because otherwise we would have two crypto devices instead of one, and the CPU would have to encrypt/decrypt any write/read operation twice.</p>
<p><a href="http://www.saout.de/pipermail/dm-crypt/2011-July/001789.html">This thread</a> on the dm-crypt list discusses the two options.</p>
<h2 id="software">Software</h2>
<p>We are going to use <a href="http://grml.org">grml</a>, a Debian-based rescue/admin live distribution, to install the system.</p>
<p>So after downloading grml and booting the live CD, let’s start with becoming root:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="nb">sudo </span>su -</code></pre></figure>
<h3 id="initialize-the-disks-with-random-data">Initialize the disks with random data</h3>
<p>We will start writing random data to the two operating system disks.</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">badblocks <span class="nt">-c</span> 10240 <span class="nt">-w</span> <span class="nt">-t</span> random <span class="nt">-s</span> <span class="nt">-v</span> /dev/sda
badblocks <span class="nt">-c</span> 10240 <span class="nt">-w</span> <span class="nt">-t</span> random <span class="nt">-s</span> <span class="nt">-v</span> /dev/sdb</code></pre></figure>
<p>This may take a very long time, depending on how big your disks are.</p>
<h3 id="partitioning-the-os-disks">Partitioning the OS disks</h3>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">root@grml ~ <span class="c"># parted /dev/sda</span>
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type <span class="s1">'help'</span> to view a list of commands.
<span class="o">(</span>parted<span class="o">)</span> mklabel gpt
<span class="o">(</span>parted<span class="o">)</span> mkpart primary 2048s 4095s
<span class="o">(</span>parted<span class="o">)</span> <span class="nb">set </span>1 bios_grub on
<span class="o">(</span>parted<span class="o">)</span> name 1 <span class="s2">"BIOS Boot Partition"</span>
<span class="o">(</span>parted<span class="o">)</span> mkpart primary 4096s 100%
<span class="o">(</span>parted<span class="o">)</span> <span class="nb">set </span>2 raid on
<span class="o">(</span>parted<span class="o">)</span> name 2 <span class="s2">"SW-RAID / Linux"</span>
<span class="o">(</span>parted<span class="o">)</span> quit
Information: You may need to update /etc/fstab.</code></pre></figure>
<p>Copy the the partition table from the first disk to the second:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">root@grml ~ <span class="c"># sgdisk -R=/dev/sdb /dev/sda</span>
The operation has completed successfully.</code></pre></figure>
<p>Set new UUIDs on /dev/sdb:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">root@grml ~ <span class="c"># sgdisk -G /dev/sdb</span>
The operation has completed successfully.</code></pre></figure>
<h3 id="raid-mirror-setup">RAID Mirror Setup</h3>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">root@grml ~ <span class="c"># mdadm --create /dev/md0 --verbose --level=mirror --raid-devices=2 /dev/sda2 /dev/sdb2</span>
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store <span class="s1">'/boot'</span> on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
<span class="nt">--metadata</span><span class="o">=</span>0.90
mdadm: size <span class="nb">set </span>to 10474496K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.</code></pre></figure>
<h3 id="luks-crypto-setup">LUKS Crypto Setup</h3>
<p>We use aes-xts as XTS works especially well for encrypting filesystems.<br />
The keysize of 512 is actually 256, because XTS splits the key in half.<br />
Because we use sha512 instead of sha1, we need to increase the time for the hash iterations.<br />
Also, we have to use /dev/random instead of /dev/urandom, as urandom does not stop giving data if entropy gets low.</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">cryptsetup <span class="nt">-v</span> <span class="nt">--cipher</span> aes-xts-plain64 <span class="nt">--key-size</span> 512 <span class="nt">--hash</span> sha512 <span class="nt">--iter-time</span> 5000 <span class="nt">--use-random</span> <span class="nt">--verify-passphrase</span> luksFormat /dev/md0</code></pre></figure>
<p>Now let’s open the crypto device:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">cryptsetup luksOpen /dev/md0 cryptomd0</code></pre></figure>
<h3 id="lvm-setup">LVM Setup</h3>
<p>Let’s create a physical volume and a volume group:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">root@grml ~ <span class="c"># pvcreate /dev/mapper/cryptomd0</span>
Physical volume <span class="s2">"/dev/mapper/cryptomd0"</span> successfully created
root@grml ~ <span class="c"># vgcreate system /dev/mapper/cryptomd0</span>
Volume group <span class="s2">"system"</span> successfully created</code></pre></figure>
<p>Now the logical volumes. Be sure to ajust the sizes of the volumes to fit your system:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">root@grml ~ <span class="c"># lvcreate -n swap -L1G system</span>
Logical volume <span class="s2">"swap"</span> created
root@grml ~ <span class="c"># lvcreate -n root -L6G system</span>
Logical volume <span class="s2">"root"</span> created</code></pre></figure>
<h3 id="create-the-file-systems">Create the file systems</h3>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">root@grml ~ <span class="c"># mkfs.ext4 /dev/system/root</span>
mke2fs 1.42.9 <span class="o">(</span>4-Feb-2014<span class="o">)</span>
Filesystem <span class="nv">label</span><span class="o">=</span>
OS <span class="nb">type</span>: Linux
Block <span class="nv">size</span><span class="o">=</span>4096 <span class="o">(</span><span class="nv">log</span><span class="o">=</span>2<span class="o">)</span>
Fragment <span class="nv">size</span><span class="o">=</span>4096 <span class="o">(</span><span class="nv">log</span><span class="o">=</span>2<span class="o">)</span>
<span class="nv">Stride</span><span class="o">=</span>0 blocks, Stripe <span class="nv">width</span><span class="o">=</span>0 blocks
393216 inodes, 1572864 blocks
78643 blocks <span class="o">(</span>5.00%<span class="o">)</span> reserved <span class="k">for </span>the super user
First data <span class="nv">block</span><span class="o">=</span>0
Maximum filesystem <span class="nv">blocks</span><span class="o">=</span>1610612736
48 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: <span class="k">done
</span>Writing inode tables: <span class="k">done
</span>Creating journal <span class="o">(</span>32768 blocks<span class="o">)</span>: <span class="k">done
</span>Writing superblocks and filesystem accounting information: <span class="k">done</span></code></pre></figure>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">root@grml ~ <span class="c"># mkswap -f /dev/system/swap</span>
Setting up swapspace version 1, size <span class="o">=</span> 1048572 KiB
no label, <span class="nv">UUID</span><span class="o">=</span>a44ea90d-72b4-4d2c-864f-70e9d2218651</code></pre></figure>
<h3 id="preparing-for-installation">Preparing for installation</h3>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">root@grml ~ <span class="c"># mkdir /mnt/root</span>
root@grml ~ <span class="c"># mount /dev/system/root /mnt/root</span></code></pre></figure>
<h3 id="installation">Installation</h3>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">grml-debootstrap <span class="nt">--target</span> /mnt/root <span class="nt">--password</span> YOUR_PASSWORD <span class="nt">--hostname</span> YOUR_HOSTNAME <span class="nt">--release</span> jessie</code></pre></figure>
<h3 id="finishing-the-installation">Finishing the installation</h3>
<p>Let’s get into our new installation:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">root@grml ~ <span class="c"># grml-chroot /mnt/root /bin/bash</span>
Writing /etc/debian_chroot ...
<span class="o">(</span>YOUR_HOSTNAME<span class="o">)</span>root@grml:/#</code></pre></figure>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="o">(</span>rna<span class="o">)</span>root@grml:~# apt-get install console-setup</code></pre></figure>
<p>Edit /etc/fstab to look like:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">/dev/system/root / auto defaults,errors<span class="o">=</span>remount-ro 0 1
/dev/system/swap none swap sw 0 0
proc /proc proc defaults 0 0</code></pre></figure>
<p>Edit /etc/crypttab to look like:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">cryptomd0 /dev/md0 none luks</code></pre></figure>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="o">(</span>YOUR_HOSTNAME<span class="o">)</span>root@grml:~# <span class="nb">echo </span><span class="nv">GRUB_CRYPTODISK_ENABLE</span><span class="o">=</span>y <span class="o">&gt;&gt;</span> /etc/default/grub
<span class="o">(</span>YOUR_HOSTNAME<span class="o">)</span>root@grml:~# <span class="nb">echo</span> <span class="s1">'GRUB_PRELOAD_MODULES="lvm cryptodisk mdraid1x"'</span> <span class="o">&gt;&gt;</span> /etc/default/grub</code></pre></figure>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="o">(</span>YOUR_HOSTNAME<span class="o">)</span>root@grml:/# grub-install /dev/sda
Installation finished. No error reported.
<span class="o">(</span>YOUR_HOSTNAME<span class="o">)</span>root@grml:/# grub-install /dev/sdb
Installation finished. No error reported.</code></pre></figure>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="o">(</span>YOUR_HOSTNAME<span class="o">)</span>root@grml:/# update-initramfs <span class="nt">-k</span> all <span class="nt">-u</span>
update-initramfs: Generating /boot/initrd.img-3.14-1-amd64
df: Warning: cannot <span class="nb">read </span>table of mounted file systems
<span class="o">(</span>YOUR_HOSTNAME<span class="o">)</span>root@grml:~# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.14-1-amd64
Found initrd image: /boot/initrd.img-3.14-1-amd64
<span class="k">done</span></code></pre></figure>
<h3 id="prepare-for-reboot">Prepare for reboot</h3>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="o">(</span>YOUR_HOSTNAME<span class="o">)</span>root@grml:~# <span class="nb">exit
exit
</span>grml-chroot /mnt/root /bin/bash 9.21s user 2.43s system 0% cpu 21:20.00 total
root@grml ~ <span class="c"># umount /mnt/root</span></code></pre></figure>
<h3 id="reboot">Reboot</h3>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">root@grml ~ <span class="c"># reboot</span></code></pre></figure>
</description>
<pubDate>Fri, 12 Dec 2014 00:00:00 +0100</pubDate>
<link>http://www.schmidp.com/2014/12/12/full-disk-encryption-with-grub-2-+-luks-+-lvm-+-swraid-on-debian/</link>
<guid isPermaLink="true">http://www.schmidp.com/2014/12/12/full-disk-encryption-with-grub-2-+-luks-+-lvm-+-swraid-on-debian/</guid>
</item>
<item>
<title>Book List September 2014</title>
<description><p>Books I read in September:</p>
<h2 id="the-lean-startup-by-eric-ries"><a href="http://amzn.to/10YLoFA">The Lean Startup</a> by Eric Ries</h2>
<h3 id="notes">Notes</h3>
<p>Building a startup is an exercise in institution building; thus, it necessarily involves management.</p>
<p>The Lean Startup method, in contrast, is designed to teach you how to drive a startup.
Instead of marking complex plans that are based on a lot of assumptions, you can make constant adjustments with a steering wheel called the Build-Measure-Learn feedback loop.</p>
<p>A startup is a human institution designed to create a new product or service under conditions of extreme uncertainty.</p>
<p>Lean thinking defines value as providing benefit to the customer; anything else is waste.</p>
<p>I’ve come to believe that learning is the essential unit of progress for startups.</p>
<p>This is true startup productivity: Systematically figuring out the right things to build.</p>
<p>The two most important assumptions entrepreneurs make are what I call the value hypotheses and the growth hypotheses. The value hypotheses tests weather a product or service really delivers value to customers once they are using it. For the growth hypotheses, which tests how new customers will discover a product or service, …</p>
<p>Their [entrepreneurs and managers] challenge is to overcome the prevailing management thinking that puts its faith in well-researched plans. Remember, planning is a tool that only works in the presence of a long and stable operating history.</p>
<p>Build-Measure-Learn Feedback Loop: LEARN -&gt; Ideas -&gt; BUILD -&gt; Product -&gt; MEASURE -&gt; Data -&gt; LEARN</p>
<p>… we need to focus our energies on minimising the <em>total</em> time through this feedback loop. This is the essence of steering a startup…</p>
<p>[To implemented validated learning] … the method I recommend is called <em>innovation accounting</em>, a quantitive approach that allows us to see whether our engine-tuning efforts are bearing fruit. It also allows us to create learning milestones.</p>
<p>Finally, and most important, there’s the <em>pivot</em>. Upon completing the Build-Measure-Learn loop, we confront the most difficult question any entrepreneur faces: whether to pivot the original strategy or persevere.</p>
<p>Although we write the feedback loop as Build-Measure-Learn because the activities happen in that order, our planning really works in the reverse order: we figure out what we need to learn, use innovation accounting to figure out what we need to measure to know if we are gaining validated learning, and then figure out what product we need to build to run that experiment and get that measurement.</p>
<p>The first challenge and entrepreneur is to build an organisation that can test these [basically all, business assumptions, strategy assumptions, assumptions about customer acceptance.] assumptions systematically. The second challenge, as in all entrepreneurial situations, is to perform that rigorous testing without losing sight of the company’s overall vision.</p>
<p>The restated approach should make clear that what is needed is to do some empirical testing first: let’s make sure that there really are hungry customers out there eager to embrace our new technology.</p>
<p>There are many value-destroying kinds of growth that should be avoided. An example would be a business that grows through continuous fund-raising from investors and logs of paid advertising but does not develop a value-creating product.</p>
<p>The importance of basing strategic decisions on firsthand understanding of customers is one of the core principles that underlies the Toyota Production System. At Toyota, this goes by the Japanese term <em>genchi gembutsu</em>, which is one of the most important phrases in the lean manufacturing vocabulary. In English, it is usually translated as a directive to “go and see for yourself” so that business decisions can be based on deep firsthand knowledge.</p>
<p>Before new products can be sold successfully to the mass market, they have to be sold to early adopters. These people are a special breed of customer. They accept - in fact prefer - an 80 percent solution; you don’t need a perfect solution to capture their interest.</p>
<p>Early adopters use their imagination to fill in what a product is missing. They prefer that state of affairs, because what they care about above all is being the first to use or adopt a new product or technology. In consumer products, it’s often the thrill of being the first one on the block to show off a new basketball shoe, music player, or cool phone. In enterprise products, it’s often about gaining a competitive advantage by taking a risk with something new that competitors don’t have yet. Early adopters are suspicious of something that is too polished: if it’s already for everyone to adopt, how much advantage can one get by being early? As a result, additional features or polish beyond what early adopters demand is a form of wasted resources and time.</p>
<p>It is important to contrast this with the case of a small business, in which it is routine to see the CEO, founder, president, and owner serving customers directly, one at a time. In a concierge MVP, this personalised service is not the product but a learning activity designed to test the leap-of-faith assumptions in the company’s growth model.</p>
<p>In a Wizard of Oz test, customers believe they are interacting with the actual product, but behind the scenes human beings are doing the work.</p>
<p>If we do not know who the customers is, we do not know what quality is.</p>
<p>Customers don’t care how much time something takes to build. They care only if it serves their needs.</p>
<p>As you consider building your own minimum viable product, let this simple rule suffice: remove any feature, process, or effort that does not contribute directly to the learning you seek.</p>
<p>For startups that rely on patent protection, there are special challenges with releasing an early product. [so read up on them]</p>
<p>In fact, I have often given entrepreneurs fearful of this issue the following assignment: take one of your ideas (one of your lesser insights, perhaps), find the name of the relevant product manager at an established company who has responsibility for that area, and try to get that company to steal your idea. Call them up, write them a memo, send them a press release - go ahead, try it. The truth is that most managers in most companies are already overwhelmed with good ideas. Their challenge lies in prioritisation and execution, and it is those challenges that give a startup hope of surviving.</p>
<p>The only way to win is to learn faster than anyone else.</p>
<p>Successful entrepreneurs do not give up at the first sign of trouble, nor do they preserve the plane right into the ground. Instead, they possess unique combination of perseverance and flexibility.</p>
<p>We all need a disciplined, systematic approach to figuring out if we’re making progress and discovering if we’re actually achieving validated learning.</p>
<p>This is why to myth of perseverance is so dangerous. We all know stories of epic entrepreneurs who managed to pull out a victory when things seemed incredibly bleak. Unfortunately, we don’t hear stories about the countless nameless others who preserved too long, leading their companies to failure.</p>
<p>When one is choosing among the many assumptions in a business plan, it makes sense to test the riskiest assumptions first.</p>
<p>To demonstrate validated learning, the design changes must improve the activation rate of new customers. If they do not, the new design should be judged a failure. This is an important rule: a good design is one that changes customer behaviour for the better.</p>
<p>Compared to a lot of startups, the Grockit team had a huge advantage: they were tremendously disciplined. A disciplined team may apply the wrong methodology but can shift gears quickly once it discovers its error. Most important, a disciplined team can experiment with its own working style and draw meaning ful conclusions.</p>
<p>.. the three A’s of metrics. actionable, accessible, and auditable.</p>
<p>In Silicon Valley, we call this experience getting stuck in the land of the living dead. It happens when a company has achieved a modicum of success - just enough to stay alive - but is not living up to the expectations of its founders and investors. Such companies are a terrible drain of human energy. Out of loyalty, the employees and founders don’t want to give in; they feel the success might be just around the corner.</p>
<p>We’ve discussed the telltale signs of the need to pivot: the decreasing effectiveness of product experiments and the general feeling that the product development should be more productive. Whenever you see those symptoms, consider a pivot.</p>
<p>I recommend that every startup have a regular “pivot or preserve” meeting. In my experience, less than a few weeks between meetings is too often and more than a few months is too infrequent.</p>
<p>Working in small batches ensures that a startup can minimise the expenditure of time, money, and effort that ultimately turns out to have been wasted.</p>
<p>Five Whys is a powerful organisational technique. Some of the engineers I have trained to use it believe that you can derive all the other Lean Startup techniques from the Five Whys. Coupled with working in small batches, it provides the foundation a company needs to respond quickly to problems as they appear, without overinvesting or overengineering.</p>
<p>I ask teams to adopt these simple rules:</p>
<ul>
<li>Be tolerant of all mistakes the first first time</li>
<li>Never allow the same mistake to be made twice</li>
</ul>
<p>As Lean Startups grow, they can use adaptive techniques to develop more complex processes without giving up their core advantage: speed through the Build-Measure-Learn feedback loop. In fact, one of the primary benefits of using techniques that are derived from lean manufacturing is that Lean Startups, when they grow up, are well positioned to develop operational excellence based on lean principles. They already know how to operate with discipline, develop processes that are tailor-made to their situation, and use lean techniques such as the Five Whys and small batches.</p>
<p>… startup teams require three structural attributes: scarce but secure resources, independent authority to develop their business, and a personal stake in the outcome.</p>
<p>Shusa … Toyota employees translate the term as chief engineer, and they refer to the vehicle under development as the shusa’s car. They assured us that the shush has final, absolute authority over every aspect of vehicle development.</p>
<p>There is a fourth phase as well, one dominated by operating costs and legacy products. This is the domain of outsourcing, automation and cost reduction.</p>
<p>Over time, those teams are almost guaranteed to improve as long as they get the constant feedback of small-batch development and actionable metrics and are held accountable to learning milestones.</p>
</description>
<pubDate>Fri, 10 Oct 2014 00:00:00 +0200</pubDate>
<link>http://www.schmidp.com/2014/10/10/book-list-september-2014/</link>
<guid isPermaLink="true">http://www.schmidp.com/2014/10/10/book-list-september-2014/</guid>
</item>
<item>
<title>Notes on: Sam Altman's How to Start a Startup - Lecture 2</title>
<description><p>Y Combinator teaches a class at Stanford on startups: <a href="http://startupclass.samaltman.com">http://startupclass.samaltman.com</a></p>
<p>These are my notes on <a href="http://startupclass.samaltman.com/courses/lec02/">Lecture 2</a>:</p>
<h1 id="ideas-products-teams-and-execution-part-ii">Ideas, Products, Teams and Execution Part II</h1>
<h2 id="qa-on-lecture-1">Q&amp;A on Lecture 1</h2>
<p><strong>How to identify markets that are growing quickly:</strong></p>
<p>Trust your instincts. Younger people/students have an advantage. Just watch what you and others are doing.</p>
<p><strong>How to deal with burnout as a founder:</strong></p>
<p>It sucks, but you just have to keep going. Address the things that are going wrong . . .</p>
<h2 id="lecture-2">Lecture 2</h2>
<h3 id="co-founders">Co-Founders</h3>
<p>The co-founder relationship is very, very important – one of the most important decisions. The track record for companies whose founders don’t know each other well is very bad.</p>
<p>A solo founder is better than a random co-founder.</p>
<p>A founder should be relentlessly resourceful. A founder’s role model should be James Bond (really!). You need someone who behaves like James Bond.</p>
<p>You want to have known your co-founders for years.</p>
<p>You want a tough, calm co-founder.</p>
<p>Two or three co-founders work well. Five are really bad.</p>
<p>When should co-founders decide on the equity split? Very soon after they start working together. It should be near equal.</p>
<p>You have to discuss what happens when a co-founder leaves. Shares should vest over four years. Anyone who leaves within the first year gets nothing.</p>
<p>Co-founders should be in the same location. Sam is very skeptical about remote teams in general.</p>
<h3 id="team">Team</h3>
<p>Try not to hire! Be proud to have as few employees as possible.</p>
<p>The most successful YC companies have no or very few employees. In the early days, the goal should be not to hire.</p>
<p>The cost of getting an early hire wrong is very high. It usually kills the company.</p>
<p>Write down a list of core values a hire should have. Most importantly, he should love the product. (Would you still want to work on our project if you got a medical diagnosis that you had only one year left to live?)</p>
<p>Have a very high bar. Get the best people.</p>
<p>It can easily take a year to recruit someone very good.</p>
<p>How much time should you spend on hiring? Either 0 or 25% of your time.</p>
<p>Mediocre engineers do not build great companies. Mediocre engineers infect the culture of a startup and destroy it.</p>
<p>The best people to hire are people you or your coworkers already know.</p>
<p>For most early hires in a startup experience does not help very much, but appetite does.</p>
<p>What to look at:</p>
<ul>
<li>Are they smart?</li>
<li>Do they get things done?</li>
<li>Do I want to spend a lot of time around them?</li>
</ul>
<p>Call references. Dig in. Is this person in the top 5%? Why don’t you try to hire this person again?</p>
<ul>
<li>Good communication skills</li>
<li>Maniacally determined (they should also like risk)</li>
<li>Pass the “animal test” (see <a href="http://www.paulgraham.com/start.html">Paul Graham</a> )</li>
<li>You would feel comfortable reporting to them</li>
</ul>
<p>Care more about giving equity to employees than investors. Be generous with equity to early employees.</p>
<p><strong>After you hire someone, you have to retain them.</strong> They have to feel happy and valued.</p>
<p>Praise your team. Give your team credit for all the good that happens. You take responsibility for the bad things.</p>
<p>Fire fast. It’s better for the company, it’s better for the employee.</p>
<h3 id="execution">Execution</h3>
<p>Whatever the founders do becomes the culture. The founders have to be execution machines.</p>
<p>Ideas themselves are not worth anything without someone executing them.</p>
<p>The CEO has five jobs:</p>
<ul>
<li>Set the vision</li>
<li>Raise money</li>
<li>Evangelize the company</li>
<li>Hire and manage</li>
<li><strong>Make sure the entire company executes</strong></li>
</ul>
<p><strong>Execution: Can you figure out what to do? You get it done.</strong></p>
<h4 id="focus">Focus</h4>
<p><strong>Focus.</strong> Identify the most important two or three things and work on them. Ignore or delegate the others. If you don’t, you will never be great about getting stuff done.</p>
<p>Many startups/founders work really hard, but they work on the wrong things. If you work really hard on the wrong things, nobody will care.</p>
<p>Communicate the goals. This keeps the company focused and everyone works in the right direction. Communicate them over and over again.</p>
<p><strong>Focus on growth and momentum.</strong> Have metrics for this. If you don’t focus on these two things, you are probably doing it wrong.</p>
<h4 id="intensity">Intensity</h4>
<p>You have to outwork your competitors.</p>
<ul>
<li>Relentless operating rhythm (move fast and break things)</li>
<li>Obsession with execution quality</li>
</ul>
<p>You need to move fast, but maintain high quality (of course it’s tricky)</p>
<ul>
<li>Bias towards action: you need to make decisions.</li>
</ul>
<p>The best founders are:</p>
<ul>
<li>Quick: they respond to email quickly . . .</li>
<li>Present: they show up at meetings . . .</li>
</ul>
<p><strong>Always keep momentum.</strong> Never take your foot off the gas peddle. A winning team keeps winning. A losing team gets demotivated and keeps losing.</p>
<p>Software startups: always keep growing.</p>
<p>Hardware startups: don’t miss shipping dates.</p>
<p>Getting the product right in the beginning is the best way to avoid losing momentum later.</p>
<p>If you have a demotivated team, you have to find small wins. “Sales fix everything.”</p>
<p>Don’t worry about competitors unless they beat you with a real, shipped product. Don’t give a shit about press releases.</p>
<p>Don’t spend more money than you have.</p>
</description>
<pubDate>Sat, 27 Sep 2014 00:00:00 +0200</pubDate>
<link>http://www.schmidp.com/2014/09/27/notes-on-sam-altmans-how-to-start-a-startup-lecture-2/</link>
<guid isPermaLink="true">http://www.schmidp.com/2014/09/27/notes-on-sam-altmans-how-to-start-a-startup-lecture-2/</guid>
</item>
<item>
<title>Notes on: Sam Altman's How to Start a Startup - Lecture 1</title>
<description><p>Y Combinator teaches a class at Stanford on startups: <a href="http://startupclass.samaltman.com">http://startupclass.samaltman.com</a></p>
<p>These are my notes on <a href="http://startupclass.samaltman.com/courses/lec01/">Lecture 1</a>:</p>
<h1 id="welcome-and-ideas-products-teams-and-execution-part-i">Welcome, and Ideas, Products, Teams and Execution Part I</h1>
<p>The course is for startups that aim for hyper growth.</p>
<p>It covers four areas:</p>
<ul>
<li>Idea</li>
<li>Product</li>
<li>Team</li>
<li>Execution</li>
</ul>
<h2 id="idea">Idea</h2>
<p>Only start a company if you want to fix a specific problem, not for the sake of the startup itself. The problem comes first, the startup second.</p>
<p>Long-term thinking is extremely important – 10 years.</p>
<p>Build a business that is difficult to replicate.</p>
<p>The idea comes first. A good idea is extremely important.</p>
<p>Have a mission-oriented idea. People need a mission to be really good at something.</p>
<p>Good startups take 10 years.</p>
<p>Copying an existing idea is nothing that gets people excited.</p>
<p>Ideas that seem bad at first are often very good. If it sounded really good, everybody would do it.</p>
<p>Find a niche where you can create a monopoly and expand from that.</p>
<p>The initial idea does not have to sound big, but it has to take a big market share of a specific niche.</p>
<p>Think about the growth rate of the market.</p>
<p>Ask yourself the question: Why now? Why was two years ago too early? Why will it be too late in two years?</p>
<p>Build something you need yourself; otherwise, you’re at a big disadvantage.</p>
<p>The idea should be very easy to explain. If that is not possible, the idea is too complicated.</p>
<p>Think about the market first – what people want.</p>
<h2 id="product">Product</h2>
<p>Great Idea -&gt; Great Product -&gt; Great Company</p>
<p>Build a good product. Ignore everything else. Build something that users love.</p>
<p>Build something that a small number of users love, instead of building something that a lot of people use, but do not love.</p>
<p>Sales and marketing is very important, but in the early days you need organic growth. If you don’t have it, you just waste your money on sales and marketing.</p>
<p>Very few startups die from competition. Most die because they don’t build something that users love.</p>
<p>Great founders are fanatic about the quality of the product.</p>
<p>Create a very tight feedback loop. Show it -&gt; Feedback -&gt; Product</p>
<p>The use of metrics is super-important:</p>
<ul>
<li>total registrations</li>
<li>active users</li>
<li>activity levels</li>
<li>cohort retention</li>
<li>revenue</li>
<li>Net Promoter Score</li>
</ul>
<p>More on that in the next class . . .</p>
<h1 id="dustin-moskovitz-why-to-start-a-startup">Dustin Moskovitz: Why to Start a Startup</h1>
<p>“You Can’t Not Do It.” You are so passionate about it that you <em>have</em> to do it.</p>
<p>When you’re recruiting, candidates can smell if you don’t have passion.</p>
<p><em>Do something the world needs!</em></p>
</description>
<pubDate>Thu, 25 Sep 2014 00:00:00 +0200</pubDate>
<link>http://www.schmidp.com/2014/09/25/notes-on-sam-altmans-how-to-start-a-startup/</link>
<guid isPermaLink="true">http://www.schmidp.com/2014/09/25/notes-on-sam-altmans-how-to-start-a-startup/</guid>
</item>
<item>
<title>Book List August 2014</title>
<description><p>Books I read in August:</p>
<h2 id="software-estimation-demystifying-the-black-art-developer-best-practices-by-steve-mcconnell"><a href="http://amzn.to/1o3X8vO">Software Estimation: Demystifying the Black Art (Developer Best Practices)</a> by Steve McConnell</h2>
<p>The book is about software estimation as an art, not a science. It aims to help you get your estimates within a plus/minus 25% range. While 25% still sounds huge, many companies have trouble estimating more precisely than plus/minus 100%, which I can confirm from our own (painful, expensive) experience.</p>
<p>McConnell gives you a framework of estimation techniques that you can use, adapt and combine to improve the estimation skills of your team/organization. We have started to use some very simple techniques from the book and are already feeling much more confident in our estimations.</p>
<p><strong>tl;dr</strong> Tighten the <a href="http://www.construx.com/Thought_Leadership/Books/The_Cone_of_Uncertainty/">Cone of Uncertainty</a>. Count, don’t judge. Use historical data from your own team/organization to estimate size, effort, and schedule.</p>
<p><strong>Buy?</strong> Yes</p>
<h2 id="how-to-organize-offshore-and-nearshore-collaboration-lessons-learned-in-offshoring-and-nearshoring-by-hugo-messer-et-al"><a href="http://amzn.to/1qLH5Zi">How to organize offshore and nearshore collaboration: Lessons learned in offshoring and nearshoring</a> by Hugo Messer et al.</h2>
<h3 id="notes">Notes</h3>
<p>Three ingredients for successful remote collaboration:</p>
<ul>
<li>process</li>
<li>responsibilities</li>
<li>performance (and measuring)</li>
</ul>
<p>Ensure that the team members discuss their personal development with their manager every 3-6 months.</p>
<p>The product owner should be onshore, as close as possible to the customer.</p>
<p>The whole team is part of sprint planning (via videoconferencing).</p>
<p>Who is responsible for:</p>
<ul>
<li>Describing the functionality and user stories?</li>
<li>Deciding what to build when in a sprint?</li>
<li>Testing the app?</li>
<li>Demoing the app?</li>
</ul>
<p>One crucial role in offshore collaboration is a “process manager” (also called a delivery manager, quality manager or similar title). This person’s responsibility lies outside the project, and his core mission is to ensure smooth communication between the onshore and offshore teams.</p>
<p>To lay a solid foundation for remote collaboration, it is important to create “think time” before “doing”.</p>
<p>If your collaboration involves core algorithms or functionality, have good NDAs and grant access on a strict need-to-know basis.</p>
<p>Lack of proper planning makes it impossible to set up the right infrastructure and results in the failure of many projects. Agile development thrives in an environment which promotes collaboration and trust, and the right infrastructure is the key enabler for this.</p>
<p>The audio/video devices from Avaya and Polycom have given me good results in many locations.</p>
<p>Interactive digital whiteboards are cool.</p>
<p>Use a tool that’s able to record both the screen and the audio during conference calls.</p>
<p><a href="http://camstudio.org/">CamStudio</a> has a pretty good free screen recording software.</p>
<p>When team members from a different country visit, get volunteers from the onshore part of the same team to accompany them. They can act as local guides for shopping and sightseeing. I have personally experienced strong bonding after such outings.</p>
<p>Set up periodic communication about the project vision, overall project milestones, and key developments.</p>
<p>Use a gated check-in policy (all commits still have to build). Use continuous integration.</p>
<p>Ensure that everyone has a good and current view of the project. Use wikis, dashboards, chats, blogs, and issue tracking.</p>
<p>Continuous integration is a practice which enables early assembly of code units to a common shared mainline, as well as reflection on code quality, unit tests, and other kinds of measurable parameters.</p>
<p>Dashboards on LCD TVs in a project area are a nice way to represent the current build status and compliance reports for the agreed quality indicators.</p>
<p>There is no rule of thumb except that local teams should be able to work independently and that dependencies across teams should be identified and clear. This could mean that roles such as Business Analyst or Technical Architect will have to co-exist with local teams (this was for offshore teams).</p>
<p>We have found that our best practice in nearshoring is to work together as one team rather than subcontracting parts of the work. Modern communication devices and the availability of high bandwidth enables this. We call this an eXtended Resource Team (XRT).</p>
<p>XRT Principles</p>
<ol>
<li><strong>We are all equal colleagues.</strong> We treat every team member as a colleague – not as a replaceable extra resource, but as a long-term colleague.</li>
<li><strong>We are one Team.</strong> Both teams can do all activities. In this way we steer away from work packages and are free to distribute the tasks on a day-to-day basis where the availability and capacity are independent of the location.</li>
<li><strong>We have daily contact.</strong> Every day, the manager interacts with all the team members. Thus, we make sure that the team stays together and everyone has the same knowledge available to make the right decisions.</li>
<li><strong>We create opportunities together.</strong> The team manager visits the nearshore part of the team at least every other month. The whole team gets together at the start of a new project and at least once a year.</li>
</ol>
<p><strong>tl;dr</strong> Use collaboration tools. Build a team. Someone has to be responsible.</p>
<p><strong>Buy?</strong> Maybe</p>
<h2 id="how-to-get-prepared-for-managing-a-remote-team-by-hugo-messer-et-al"><a href="http://amzn.to/XELiRX">How To Get Prepared For Managing A Remote Team</a> by Hugo Messer et al.</h2>
<h3 id="notes-1">Notes</h3>
<p>I just started taking notes on my Kindle, so I don’t have many on this book.</p>
<h4 id="offshore-process">Offshore Process</h4>
<p>Ambiguities in specification documents will be very expensive.
Expect a lack of background understanding of the business processes (of the project or the customer) by your offshore team.</p>
<p>Make sure you have developed a common understanding on the expected deliverables.</p>
<h4 id="team-room">Team Room</h4>
<p>This is only for working. There should be another room for casual or non-work-related talk.</p>
<p>You need good headsets so you can talk collaboratively without disturbing others.</p>
<p>You need multiple project walls, as well as a company wall.</p>
<p><strong>tl;dr</strong> Interesting read for everyone thinking about building a nearshore or offshore team.</p>
<p><strong>Buy?</strong> Yes</p>
</description>
<pubDate>Wed, 10 Sep 2014 00:00:00 +0200</pubDate>
<link>http://www.schmidp.com/2014/09/10/book-list-august-2014/</link>
<guid isPermaLink="true">http://www.schmidp.com/2014/09/10/book-list-august-2014/</guid>
</item>
<item>
<title>IPSec between FreeBSD and Mac OS X in Transport Mode</title>
<description><p>Because I do not trust WPA2 Wifi encryption for sensitive data, I implemented IPSec in transport mode between my NAS and my Mac.</p>
<h1 id="mac-os-x">Mac OS X</h1>
<p>Open the file containing the pre-shared keys:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="nb">sudo </span>vim /etc/racoon/psk.txt</code></pre></figure>
<p>And add the IP adress of the FreeBSD box:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">10.0.1.5 password</code></pre></figure>
<p>Add to /etc/racoon/racoon.conf</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">remote 10.0.1.5 <span class="o">[</span>500]
<span class="o">{</span>
exchange_mode main<span class="p">;</span>
doi ipsec_doi<span class="p">;</span>
situation identity_only<span class="p">;</span>
my_identifier address 10.0.1.6<span class="p">;</span>
peers_identifier address 10.0.1.5<span class="p">;</span>
lifetime <span class="nb">time </span>8 hour<span class="p">;</span>
passive off<span class="p">;</span>
proposal_check obey<span class="p">;</span>
generate_policy off<span class="p">;</span>
proposal <span class="o">{</span>
encryption_algorithm aes 256<span class="p">;</span>
hash_algorithm sha512<span class="p">;</span>
authentication_method pre_shared_key<span class="p">;</span>
lifetime <span class="nb">time </span>30 sec<span class="p">;</span>
dh_group 16<span class="p">;</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="c"># Mac &lt;-&gt; NAS transport</span>
sainfo address 10.0.1.6 any address 10.0.1.5 any <span class="o">{</span>
pfs_group 16<span class="p">;</span>
encryption_algorithm aes 256<span class="p">;</span>
authentication_algorithm hmac_sha512<span class="p">;</span>
compression_algorithm deflate<span class="p">;</span>
<span class="o">}</span></code></pre></figure>
<p>/etc/racoon/setkey.conf:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="c">#!/usr/sbin/setkey -f</span>
<span class="c">## Flush the SAD and SPD</span>
<span class="c">#</span>
flush<span class="p">;</span>
spdflush<span class="p">;</span>
<span class="c"># Mac &lt;-&gt; NAS transport</span>
spdadd 10.0.1.6 10.0.1.5 any <span class="nt">-P</span> out ipsec esp/transport//require ah/transport//require<span class="p">;</span>
spdadd 10.0.1.5 10.0.1.6 any <span class="nt">-P</span> <span class="k">in </span>ipsec esp/transport//require ah/transport//require<span class="p">;</span></code></pre></figure>
<h1 id="freebsd-10">FreeBSD 10</h1>
<p>First you need to compile a kernel that supports IPSec. Check the <a href="https://www.freebsd.org/doc/handbook/ipsec.html">FreeBSD handbook</a> on how to do that.</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">options IPSEC
device crypto
options IPSEC_FILTERTUNNEL
device enc</code></pre></figure>
<p>Assuming you are running a kernel that supports IPSec:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="nb">cd</span> /usr/ports/security/ipsec-tools
make install</code></pre></figure>
<p>Pre-shared keys:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">vim /usr/local/etc/racoon/psk.txt</code></pre></figure>
<p>And add the IP address of the FreeBSD box:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">10.0.1.6 password</code></pre></figure>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">chmod 0600 /usr/local/etc/racoon/psk.txt</code></pre></figure>
<p>Setup: /usr/local/etc/racoon/racoon.conf:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="c"># search this file for pre_shared_key with various ID keys.</span>
path pre_shared_key <span class="s2">"/usr/local/etc/racoon/psk.txt"</span><span class="p">;</span>
<span class="c"># racoon will look for certificate file in the directory,</span>
<span class="c"># if the certificate/certificate request payload is received.</span>
path certificate <span class="s2">"/etc/cert"</span> <span class="p">;</span>
<span class="c"># "padding" defines some parameter of padding. You should not touch these.</span>
padding
<span class="o">{</span>
maximum_length 20<span class="p">;</span> <span class="c"># maximum padding length.</span>
randomize off<span class="p">;</span> <span class="c"># enable randomize length.</span>
strict_check off<span class="p">;</span> <span class="c"># enable strict check.</span>
exclusive_tail off<span class="p">;</span> <span class="c"># extract last one octet.</span>
<span class="o">}</span>
<span class="c"># If no listen directive is specified, racoon will listen to all</span>
<span class="c"># available interface addresses.</span>
listen
<span class="o">{</span>
isakmp 10.0.1.5 <span class="o">[</span>500]<span class="p">;</span>
<span class="o">}</span>
<span class="c"># Specification of default various timer.</span>
timer
<span class="o">{</span>
<span class="c"># These value can be changed per remote node.</span>
counter 10<span class="p">;</span> <span class="c"># maximum trying count to send.</span>
interval 3 sec<span class="p">;</span> <span class="c"># interval to resend (retransmit)</span>
persend 1<span class="p">;</span> <span class="c"># the number of packets per a send.</span>
<span class="c"># timer for waiting to complete each phase.</span>
phase1 30 sec<span class="p">;</span>
phase2 30 sec<span class="p">;</span>
<span class="o">}</span>
remote 10.0.1.6 <span class="o">[</span>500]
<span class="o">{</span>
exchange_mode main<span class="p">;</span>
doi ipsec_doi<span class="p">;</span>
situation identity_only<span class="p">;</span>
my_identifier address 10.0.1.5<span class="p">;</span>
peers_identifier address 10.0.1.6<span class="p">;</span>
lifetime <span class="nb">time </span>8 hour<span class="p">;</span>
passive off<span class="p">;</span>
proposal_check obey<span class="p">;</span>
generate_policy off<span class="p">;</span>
proposal <span class="o">{</span>
encryption_algorithm aes 256<span class="p">;</span>
hash_algorithm sha512<span class="p">;</span>
authentication_method pre_shared_key<span class="p">;</span>
lifetime <span class="nb">time </span>30 sec<span class="p">;</span>
dh_group 16<span class="p">;</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="c"># NAS &lt;-&gt; Mac transport</span>
sainfo address 10.0.1.5 any address 10.0.1.6 any <span class="o">{</span>
pfs_group 16<span class="p">;</span>
encryption_algorithm aes 256<span class="p">;</span>
authentication_algorithm hmac_sha512<span class="p">;</span>
compression_algorithm deflate<span class="p">;</span>
<span class="o">}</span></code></pre></figure>
<p>Setup: /usr/local/etc/racoon/setkey.conf:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh">flush<span class="p">;</span>
spdflush<span class="p">;</span>
<span class="c"># NAS &lt;-&gt; Mac transport</span>
spdadd 10.0.1.5 10.0.1.6 any <span class="nt">-P</span> out ipsec esp/transport//require ah/transport//require<span class="p">;</span>
spdadd 10.0.1.6 10.0.1.5 any <span class="nt">-P</span> <span class="k">in </span>ipsec esp/transport//require ah/transport//require<span class="p">;</span></code></pre></figure>
<p>Configure pf rules /etc/pf.conf:</p>
<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="c"># IPSec</span>
pass <span class="k">in </span>quick proto esp from any to any
pass <span class="k">in </span>quick proto ah from any to any
pass <span class="k">in </span>quick proto ipencap from any to any
pass <span class="k">in </span>quick proto udp from any <span class="nv">port</span><span class="o">=</span>500 to any <span class="nv">port</span><span class="o">=</span>500
pass out quick proto esp from any to any
pass out quick proto ah from any to any
pass out quick proto ipencap from any to any
pass out quick proto udp from any <span class="nv">port</span><span class="o">=</span>500 to any <span class="nv">port</span><span class="o">=</span>500</code></pre></figure>