-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathatom.xml
713 lines (593 loc) · 42.9 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
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
<?xml-stylesheet type="text/css" href="http://www.neilsmithline.com/feed/styles/feed.css"?>
<title type="html">My Geekdom</title>
<subtitle type="html">Ramblings about my nerdy pursuits</subtitle>
<link rel="alternate" type="text/html" href="http://www.neilsmithline.com/feed"/>
<link rel="self" type="application/atom+xml" href="http://www.neilsmithline.com/feed/atom.xml"/>
<updated>2012-05-10T18:44:14-05:00</updated>
<author>
<name>Neil Smithline</name>
<uri>http://www.neilsmithline.com/feed</uri>
</author>
<id>http://www.neilsmithline.com/feed/</id>
<generator uri="http://nanoblogger.sourceforge.net" version="3.5-RC1">
NanoBlogger
</generator>
<entry>
<title type="html">Blackberry's Manufacturer RIM Nearly RIP</title>
<author>
<name>Neil Smithline</name>
</author>
<link rel="alternate" type="text/html" href="http://www.neilsmithline.com/feed/archives/2012/05/09/blackberrys_manufacturer_rim_nearly_rip/"/>
<id>http://www.neilsmithline.com/feed/archives/2012/05/09/blackberrys_manufacturer_rim_nearly_rip/</id>
<published>2012-05-09T23:00:47-05:00</published>
<updated>2012-05-09T23:00:47-05:00</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<!-- NB_TAGS: tech, litigious-trio -->
<!-- NB_ID: 2012-03-31T16_14_12.txt -->
<p>
<b>RIM No Longer A Viable Company</b>
</p>
<p>
<a href="http://bit.ly/HAtKtt">RIM</a>, arguably the manufacturer of the first successful smartphone, the <a href="http://bit.ly/HAub73">Blackberry</a>, has not only lost its market lead, but is facing a rather unpredictable future. RIM's new CEO, <a href="http://bit.ly/HAuOO6">Thorsten Heins</a>, <a href="http://www.washingtonpost.com/business/rim-charts-risky-survival-plan-while-opening-door-to-sale/2012/03/31/gIQAJYZRnS_story.html?tid=pm_business_pop">has stated</a> that RIM is open to acquisition. At least for the short-term, his statements have led to a one-day, 5% bounce back of the stock price which was down 70% in the 12 months.
</p>
<p>
<b>RIM's History</b>
</p>
<p>
For those of you that are unaware of RIM's history, it got its start in <a href="http://en.wikipedia.org/wiki/Canada">Canada</a> as a <a href="http://bit.ly/H9vfx5">2-way pager</a> provider. In 1999, RIM moved into the smartphone market with its first Blackberry and immediately achieved market dominance.
</p>
<p>
Factors that led to their dominance included:
</p><ul>
<li>Intelligent Marketing::One example was a giving away pre-1.0 Blackberries to attendees of the 1999 <a href="http://en.wikipedia.org/wiki/JavaOne">JavaOne</a> conference. I imagine that there wasn't a better set of <a href="http://en.wikipedia.org/wiki/Software_release_life_cycle#Beta">beta testers</a> than the gadget geeks that attended JavaOne (myself include).
</li>
<li>Sales Channels::RIM was selling its 2-way pagers to professionals who had a need to be in constant communication such as doctors, attorneys, business executives, and law enforcement. With the introduction of the Blackberry, RIM just added a better product to offer those same professionals. Sure it was more expensive, but 2-way pagers were already fairly costly. They were the perfect audience to market smartphones to.
</li>
<li>First To Market::In 1999, most mobile providers were focused on upgrading their networks from analog to digital. Once the digital networks were in place, new functionality such as internet access would be easy to providing. But upgrading networks takes time. It involves men climbing towers, FCC regulations, local zoning laws, etc. But RIM didn't have to do this.
</li>
</ul>
<p>
<b>RIM's Brilliance</b>
</p>
<p>
In what I consider a spectacular marketing and technological move, RIM started providing internet service over their existing 2-way pager network. While only a short-term solution as the 2-way pager network was designed for low-bandwidth usage, it was instantaneous. The first Blackberry was basically a 2-way pager with a good sized screen and full QWERTY keyboard.
</p>
<p>
<b>What Went Wrong</b>
</p>
<p>
RIM's mistake was that they didn't learn from prior boom-to-bust technology companies. RIM seems to have perfectly followed the (mis)steps of Digital Electronics. While IBM has survived, it lost its market dominance in a sector, twice. The first time as a manufacture of mainframes in the 1970's and then again as a PC manufacturer in the 1980's. Apollo Computers, SGI, Xerox, all leaders at one time, are either gone or no longer of interest.
</p>
<p>
All of these companies suffered from a similar set of mistakes including:
</p><ul>
<li>Overconfidence::Each company thought that they were invulnerable. IBM is perhaps the best example. In the 1970's, when an IT manager had to make a decision about what gigantic computer to buy, they often said "Nobody ever got fired for choosing IBM.".
</li>
<li>Lack of Foresight::Technology and markets change and so too must your company. Clearly RIM, along with its arch-rival Palm, both missed the boat. Phones went from being personal communication devices to be tiny, fit-in-your-pocket, computers.
</li>
<li>Unwillingness to Self-Cannibalize::In order to stay ahead of the technology market, you must be willing to come out with products that are better and cheaper than your existing products. HP and Goodyear are two companies that get this. Within a product line, HP routinely comes out with a better and cheaper printer than the one they currently have on the market. They know that it is going to kill sales of their existing printer. But HP also knows that when their customers need a new printer, it will be an HP printer. I know that Goodyear isn't considered a technology company, but their product, tires, involve high-tech materials and manufacturing processes. The CEO of Goodyear once asked how do you keep a company in business when you know that your next product is going to be cheaper, better, and last longer than your current product? While I think that HP and Goodyear would both prefer to keep selling their old products, they know better. It seems RIM didn't.
</li>
</ul>
<p>
<b>The Final Outcome</b>
</p>
<p>
In the end, RIM, the makers of the Blackberry that was a status symbol for business executives in the 1990's, has all but been put out of business by Apple, a waning computer company in 1990, and Google, a non-existent company in 1990.
</p>
<p>
The trick to surviving in the high-tech marketplace is simple. All you need to do is realize that your market share is never safe, that there is always another company working on something that is better than what you have, and that you must act if you are fighting for your life, all-day, everyday.
</p>
</div>
</content>
</entry>
<entry>
<title type="html">Smartphones Everywhere</title>
<author>
<name>Neil Smithline</name>
</author>
<link rel="alternate" type="text/html" href="http://www.neilsmithline.com/feed/archives/2012/02/22/smartphones_everywhere/"/>
<id>http://www.neilsmithline.com/feed/archives/2012/02/22/smartphones_everywhere/</id>
<published>2012-02-22T18:38:14-05:00</published>
<updated>2012-02-22T18:38:14-05:00</updated>
<category term="tech" />
<category term="cloud" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<!-- NB_TAGS: tech -->
<!-- NB_ID: 2012-02-22T18_38_14.txt -->
<p>
Interpreting this chart from <a href="http://blog.nielsen.com/nielsenwire/online_mobile/survey-new-u-s-smartphone-growth-by-age-and-income/">Nielsen</a> (via <a href="http://www.wired.com/epicenter/2012/02/smartphone-buying-machine/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+wired/index+(Wired:+Index+3+(Top+Stories+2))">Wired</a>) does not require any great amount of effort.
</p>
<div style="text-align: center">
<p><img src="http://www.wired.com/images_blogs/epicenter/2012/02/Smartphone-Income-and-Age.jpg" alt="http://www.wired.com/images_blogs/epicenter/2012/02/Smartphone-Income-and-Age.jpg" />
</p>
</div>
<p>
It can be summarized by any of the following sentences:
</p><ul>
<li>The greater your income the more likely you are to have a smartphone.
</li>
<li>Young adults are more likely to have smartphones than older adults.
</li>
<li>Smartphones are only for the young and get outgrown by the old. (Nah! But it is a valid interpretation of th e chart.)
</li>
</ul>
<p>
But I think the graph can best be summarized by:
</p>
<div style="text-align: center">
<p><b>Smartphones are where it is at today; and tomorrow, even more so.</b>
</p>
</div>
<p>
Perhaps not the best grammar but I think it gets the point across. It becomes even more dramatic when you look at the number of people who have acquired smartphones in the past three months:
</p>
<div style="text-align: center">
<p><img src="http://blog.nielsen.com/nielsenwire/wp-content/uploads/2012/02/SmartPhone_Recent-acquirers-age1.png" alt="http://blog.nielsen.com/nielsenwire/wp-content/uploads/2012/02/SmartPhone_Recent-acquirers-age1.png" />
</p>
</div>
<p>
As <a href="http://www.imdb.com/title/tt0059968/quotes">Robin</a> would <a href="http://en.wikipedia.org/wiki/Batman_(TV_series)#.22Holy_.......2C_Batman.21.22">say</a>: Holy <a href="http://dictionary.reference.com/browse/ubiquitous+computing?qsrc=2446">ubiquitous computing</a>, Batman!
</p>
<p>
It seems clear that this is where the money is. This means that some subset of technologies such as <a href="http://en.wikipedia.org/wiki/Html5">HTML5</a>, <a href="http://en.wikipedia.org/wiki/Virtuality_(computing)">virtual computing</a>, <a href="http://en.wikipedia.org/wiki/Scala_(programming_language)">Scala</a>, <a href="http://en.wikipedia.org/wiki/Hadoop">Hadoop</a>, <a href="http://en.wikipedia.org/wiki/Amazon_Web_Services">AWS</a>, and <a href="http://en.wikipedia.org/wiki/Couchdb">CouchDB</a>, to name just a few, are going to be the technologies of tomorrow.
</p>
<p>
In my lifetime, I have seen computers revolutionize society in several different ways.
</p><dl>
<dt><a href="#Http-en.wikipedia.org-wiki-Back_office">Back office</a></dt><dd>Back office computerization led to the popularization of <a href="http://en.wikipedia.org/wiki/Automated_teller_machine">ATMs</a>, <a href="http://en.wikipedia.org/wiki/Credit_card">credit cards</a>, <a href="http://en.wikipedia.org/wiki/Fed_Ex">Fed Ex</a> and its overnight delivery service, and set the stage for the online marketplace we are familiar with today.
</dd>
<dt><a href="http://en.wikipedia.org/wiki/Personal_computer">Personal computers</a></dt><dd>Personal computers introduced computing to the public. When I was in school, I would get bonus points for typing my homework assignments. Today, homework assignments must be printed from a <a href="http://en.wikipedia.org/wiki/Word_processor">word processor</a> if not submitted electronically.
</dd>
<dt><a href="http://en.wikipedia.org/wiki/World_wide_web">The web</a></dt><dd>The web, for the first time ever, connected the back office directly to consumers in the comfort of their own home. ATMs allowed you to get 24x7 access to your bank account, but you needed to be at an ATM. PCs gave you access to many digital technologies, but having multiple computers interact was difficult, slow, and frequently expensive. But throw in the web and suddenly: <b>BOOM!</b> You have the <a href="http://en.wikipedia.org/wiki/Online_shopping">online shopping</a>, <a href="http://en.wikipedia.org/wiki/Video_gaming">video gaming</a>, and <a href="http://en.wikipedia.org/wiki/Video_on_demand">video on demand</a> that we live in today.
</dd>
</dl>
<p>
As a diehard nerd, I'm thrilled to have lived through these technical revolutions. Not only have I lived through them, but I've had the honor of having been an early consumer and even helped develop some of them. So, with great joy, and without trying to sound too greedy, I am joyous that the next revolutionary wave is coming to shore. And it is called <i>ubiquitous computing</i>.
</p>
<p>
I don't claim to be the <a href="http://article.wn.com/view/2012/02/02/Did_the_Groundhog_see_his_shadow_2012_Punxsutawney_Phil_twee/">prognosticator of prognosticators</a>. <a href="http://www.wikipedia.com">Wikipedia</a>'s page on ubiquitous computing was created <a href="http://en.wikipedia.org/w/index.php?title=Ubiquitous_computing&action=history">two years ago</a>. I'm just happy to be around to be part of it and hope that I get a chance to <a href="http://bit.ly/zN6qBU">surf the wave</a>.
</p>
</div>
</content>
</entry>
<entry>
<title type="html">My Patents</title>
<author>
<name>Neil Smithline</name>
</author>
<link rel="alternate" type="text/html" href="http://www.neilsmithline.com/feed/archives/2012/02/21/my_patents/"/>
<id>http://www.neilsmithline.com/feed/archives/2012/02/21/my_patents/</id>
<published>2012-02-21T17:20:18-05:00</published>
<updated>2012-02-21T17:20:18-05:00</updated>
<category term="about-me" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<!-- NANOBLOGGER METADATA - END -->
<!-- The posting body follows this END_HTML directive -->
<p>
Just thought I'd add a list of my patents as of Tue Feb 21, 2012:
</p><ul>
<li>US Patent #7,979,891: <a href="http://1.usa.gov/7979891">Method and System for Securing Execution of Untrusted Applications</a>, July 2011
This patent, in combination with 7,814,556 defines a model for enforcing <a href="http://en.wikipedia.org/wiki/J2ee">J2EE</a> (a.k.a: JEE) application security via <a href="http://en.wikipedia.org/wiki/Sandbox_(computer_security)">sandboxing</a> within a single Java VM.
</li>
<li>US Patent #7,814,556: <a href="http://1.usa.gov/7814556">System and Method for Protecting APIs from Untrusted or Less Trusted Applications</a>, October 2010xo
See patent 7,979,891 immediately above.
</li>
<li>US Patent #7,610,813: <a href="http://1.usa.gov/7610613">Servlet Authentication Filters</a>, October 2009
An extension of the <a href="http://en.wikipedia.org/wiki/J2ee">J2EE</a> (a.k.a: JEE) <a href="http://en.wikipedia.org/wiki/Java_Servlet">Servlets</a> model that provides an integrated and pluggable model for authentication for Servlets. <a href="http://jcp.org/en/jsr/detail?id=196">JSR-196</a> extended the ideas introduced in this patent so that the concepts are now a standard part of J2EE.
</li>
<li>US Patent #7,487,207: <a href="http://1.usa.gov/7487207">System and method for determining the functionality of a software application based on nodes within the software application and transitions between the nodes</a>, February 2009
Defines a <a href="http://en.wikipedia.org/wiki/Model–view–controller">model-view-controller</a> (MVC) model for implementing web applications. <a href="http://en.wikipedia.org/wiki/Apache_Struts">Apache Struts</a> is based on the ideas defined in this patent.
</li>
<li>US Patent #7,051,069: <a href="http://1.usa.gov/7051069">System for managing logical process flow in an online environment</a>, May 2006
Earlier version of 7,487,207 immediately above.
</li>
<li>US Patent application pending #20,060,031,855: <a href="http://bit.ly/20060031855">System and Method for Runtime Interface Versioning</a>, February 2006
The concepts embodied in this patent application have been used to ensure backwards compatibility for WebLogic Server's Security <a href="http://en.wikipedia.org/wiki/Service_Provider_Interface">SPI</a>s. The implementation of this patent allows the server to continue to add new functionality to the SPIs while maintaining forwards compatibility for security. As of January 2012, all security providers written since 2002 are compatible with the newest server version. Any <a href="http://docs.oracle.com/cd/E24329_01/apirefs.1211/e24391/weblogic/security/spi/package-summary.html">current security SPI class</a> ending with "V2" is utilizing the design model in this patent.
</li>
<li>US Patent #5,787,447: <a href="http://1.usa.gov/5787447">Memory allocation maintaining ordering across multiple heaps</a>, July 1998
A memory allocation algorithm that supported incremental modification of <a href="http://en.wikipedia.org/wiki/Executable_and_Linkable_Format">ELF executables</a>, while maintaining the ordering required by ELF as well as existing <a href="http://en.wikipedia.org/wiki/Solaris_(operating_system)">Solaris</a> tools (eg: <a href="http://en.wikipedia.org/wiki/Dbx_(debugger)">dbx</a>) without requiring restarting of the application or the tools.
</li>
</ul>
</div>
</content>
</entry>
<entry>
<title type="html">New NanoBlogger Command-Line</title>
<author>
<name>Neil Smithline</name>
</author>
<link rel="alternate" type="text/html" href="http://www.neilsmithline.com/feed/archives/2012/02/14/new_nanoblogger_command-line/"/>
<id>http://www.neilsmithline.com/feed/archives/2012/02/14/new_nanoblogger_command-line/</id>
<published>2012-02-14T13:13:34-05:00</published>
<updated>2012-02-14T13:13:34-05:00</updated>
<category term="my-software" />
<category term="blog" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<!-- NANOBLOGGER METADATA - END -->
<!-- The posting body follows this END_HTML directive -->
<p>
As I've discussed in previous <a href="http://www.neilsmithline.com/archives/blog">postings about this blog's technology</a>, this is a static blog written with NanoBlogger. NanoBlogger is a <a href="http://en.wikipedia.org/wiki/Command-line_interface">CLI</a> driven blogging system. Alas, I have found the <a href="http://nanoblogger.sourceforge.net/docs/nanoblogger.html">NanoBlogger manual</a> to be difficult to follow and the syntax of the CLI to be non-intuitive. (See the footnote <a href="https://github.com/Neil-Smithline/nbc">here</a> regarding the existing CLI.) On the upside, NanoBlogger is a CLI system which makes it easy to modify.
</p>
<p>
I started out with a few small helper scripts, eventually merging them into a single helper script. As I was using that script and learning more about NanoBlogger, I found myself writing smaller helper scripts for my big helper script. Eventually, I was never calling my original, large helper script directly.
</p>
<p>
At this point it became clear that some refactoring was needed. So I refactored. I came up with a single shell script call <i>nbc.sh</i> that does all the work and a series of shell scripts that simply call nbc.sh.
</p>
<p>
The key idea behind nbc.sh, or simply <i>nbc</i>, is that the scripts that call it are trivial. By "trivial" I mean that each script is only a few lines long, all the side scripts have identical content, and, if not for the semantics of <a href="http://en.wikipedia.org/wiki/Git_(software)">Git</a>, would simply be multiple symbolic links to the same program.
</p>
<p>
As you can see below, the code for the side scripts simply stores the command name, <i>$0</i>, of the side script that was called and then calls the <i>nbc.sh</i> script that is in the same directory as the side script.
</p>
<pre class="example">#!/bin/sh
# Code to load include file.
ORIG_ARG_0="$0"
NBDIR=${0%/*}
. ${NBDIR}/nbc.sh
</pre>
<p>
This means that as I continue to add functionality to nbc, all I need to do is copy one of the side scripts to the filename of the new command I added.
</p>
<p>
While I won't discuss the exact naming scheme used for these side scripts in detail in this posting, I will say that I have tried to systematic in how the scripts are named. Once you learn a few abbreviations (eg: "e" for "Entry" or "Entries", "u" for "Update") and the rules for combining those abbreviations (standard <a href="http://en.wikipedia.org/wiki/Reverse_Polish_Notation">RPN</a>), you will know the names of all the commands, what each command does, and the type and order of arguments each command takes.
</p>
<p>
I still need to write richer documentation for nbc and its side scripts, but I can finish this posting off with some concrete examples.
</p>
<p>
NB supports an "update" command that essentially tells NB to rebuild the blog from scratch. The syntax of this command is:
</p>
<pre class="example">nb update
</pre>
<p>
My nbc version of this command is:
</p>
<pre class="example">nbu
</pre>
<p>
All of the commands for nbc start with the letters "nb". The letter "U" is the abbreviation for "Update". So "nbu" tells nb to run the update command. As I said, the code for nbu and the other side scripts are trivial and given above. As far as examples go, nbu is not very exciting. But the nbc's CLI for creating tags is a bit more exciting.
</p>
<p>
NB's syntax for creating tags, as documented in its manual, is:
</p>
<pre class="example">nb --title <tag-name> add tag
</pre>
<p>
Gosh! That's both tough to remember and tough to type. In nbc, the command for adding a tag is <i>nbga</i>. All commands start with "nb". After that, the "g" means that we are talking about "taGs". The "a" stands for "Add". The syntax for the command is
</p>
<pre class="example">nbga <tag list>
</pre>
<p>
Besides being much easier to type and remember, it allows a tag list as compared to a single tag name. That is, you can create multiple tags in a single command rather than needing to call nb once for each new tag.
</p>
<p>
In NBC, a tag list is a comma-separated list of one or more tag names. So "tag1" is a tag list and "tag1,tag2,tag3" is also a tag list. If you prefer you can space-separate the tag list but you need to ensure that you pass the entire tag list as the first argument to nbga.
</p>
<p>
As the operations become more complex, NBC's simplifications become greater and more obvious. My next posting about NBC will discuss some of these simplifications.
</p>
<p>
If you wish to use NBC, look at the source code, or tell me why NBC sucks, you can get the scripts at <a href="https://github.com/Neil-Smithline/nbc">https://github.com/Neil-Smithline/nbc</a>.
</p>
</div>
</content>
</entry>
<entry>
<title type="html">This Blog Is Now Hosted For Free</title>
<author>
<name>Neil Smithline</name>
</author>
<link rel="alternate" type="text/html" href="http://www.neilsmithline.com/feed/archives/2012/02/03/this_blog_is_now_hosted_for_free/"/>
<id>http://www.neilsmithline.com/feed/archives/2012/02/03/this_blog_is_now_hosted_for_free/</id>
<published>2012-02-03T21:49:09-05:00</published>
<updated>2012-02-03T21:49:09-05:00</updated>
<category term="blog" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<!-- NANOBLOGGER METADATA - END -->
<!-- The posting body follows this END_HTML directive -->
<p>
While there are many free or nearly free blog hosting sites available, most of them come with a long list of restrictions. Either they restrict you to using their blogging software, throw ads on your pages, give you the "unlimited bandwidth" plan that they'll cut off if your site gets too much traffic, limit you to only the ugly themes, etc.
</p>
<p>
But <a href="http://www.neilsmithline.com">www.neilsmithline.com</a> is now hosted on a site that charges me nothing, doesn't put ads on my pages, couldn't care less about the theme I use, and, should I ever be lucky enough, survive <a href="http://en.wikipedia.org/wiki/Slashdotting">slashdotting</a>. The only restriction is that my blog has to be static. Being that I already had a static blog (see <a href="#about-this-blogs-tech.org">previous posting</a>), this was no problem for me at all. I've used lots of dynamic blogs (<a href="http://en.wikipedia.org/wiki/Drupal">Drupal</a>, <a href="http://en.wikipedia.org/wiki/Wordpress">WordPress</a>, <a href="http://en.wikipedia.org/wiki/Joomla">Joomla</a>, <a href="http://en.wikipedia.org/wiki/Blogger_(service)">Blogger</a>, <a href="http://en.wikipedia.org/wiki/Movable_Type">Movable Type</a>, etc.) and just found that "dynamic" is a short way of saying that the blogging system is going to do what it wants and not what I want.
</p>
<p>
Along with the free hosting I get automatic version control, well-managed collaboration (not that I have any collaborators), data redundancy, eternal archiving (I probably won't need it that long but it's nice to know that nothing will get lost), and the ability to get a copy of my data onto my local machine whenever I want it.
</p>
<p>
My choice of blogging technology was largely influenced by these two blog postings, <a href="http://decafbad.com/blog/2011/06/08/further-jekyll-notes">1</a> and <a href="http://decafbad.com/blog/2011/06/08/moved-to-jekyll">2</a>, and email conversations I had with their author, <a href="https://plus.google.com/114487965928288927815/about">Les Orchard</a>. While Les went with <a href="https://github.com/mojombo/jekyll">Jekyll</a>, I preferred the simpler <a href="http://nanoblogger.sourceforge.net/">NanoBlogger</a>. Les uses <a href="http://github.com">Github.com</a> for versioning his blog but hosts his blog on his own site as he wants full control of what is published. I simply couldn't agree with him more.
</p>
<p>
When I moved to my new blogging framework, I quickly got my blog up and running using NanoBlogger for site generation and sftp to publish it to my VPS. Today I investigated replacing sftp with Github and its notification framework. This would essentially mirror Les's blog system except that I am running NanoBlogger locally while he runs Jekyll.
</p>
<p>
As I was investigating using Github for transportation and archiving of my blog, I decided to take another look at <a href="http://pages.github.com/">Github Pages</a>. And then, like a lightning bolt, it occurred to me. When I publish my blog by pushing it to Github, if the repository has the magic name of <i>neil-smithline.github.com</i>, then Github would publish my blog at <a href="http://neil-smithline.github.com/">http://neil-smithline.github.com/</a> automatically. There simply was no benefit to serve my blog from my VPS as Github would do it far better than I could on my VPS.
</p>
<p>
The only problem I foresee is that I run more than just my blog on <a href="http://www.nelismithline.com">www.neilsmithline.com</a>. But the other applications I run are only for my private use so I can just map them to another sub-domain such as <i>whatever.neilsmithline.com</i>. For example, I've been playing with a cloud-based bookmarking system, <a href="http://www.phoboslab.org/projects/asaph">Asaph</a>, that allows you to run your own cloud bookmark server. But I can access it at and, if you have an interest, can view it at: <a href="http://www2.neilsmithline.com/asaph/">http://www2.neilsmithline.com/asaph/</a>.
</p>
<p>
All-in-all, it's like a nerd's dream come true :-D
</p>
<p>
<b>UPDATED: Sat Feb 11 13:12:02 EST 2012</b>
<br/>
There seems to be another problem with hosting my blog on Github. While practically all of Github requires SSL, there appears to be no way to get a Github hosted website to use SSL. Thinking about it, the task seems inherently difficult. Github makes all of its sources file public but you must protect your site's SSL private key. Currently, all site information is stored in the Github repository. A private SSL key could only be added if Github updated their configuration to allow the key to be stored out-of-band (ie: not in the repository).
</p>
</div>
</content>
</entry>
<entry>
<title type="html">Nastiest Hack I've Seen In Awhile</title>
<author>
<name>Neil Smithline</name>
</author>
<link rel="alternate" type="text/html" href="http://www.neilsmithline.com/feed/archives/2012/02/01/nastiest_hack_ive_seen_in_awhile/"/>
<id>http://www.neilsmithline.com/feed/archives/2012/02/01/nastiest_hack_ive_seen_in_awhile/</id>
<published>2012-02-01T20:40:51-05:00</published>
<updated>2012-02-01T20:40:51-05:00</updated>
<category term="my-software" />
<category term="coding" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<!-- NANOBLOGGER METADATA - END -->
<!-- The posting body follows this END_HTML directive -->
<p>
I was reading about <a href="http://code.google.com/p/android-scripting">SL4A</a>, also known as <a href="http://android.com">Android</a> <a href="http://en.wikipedia.org/wiki/Scripting_language">Scripting Languages</a>. They are a set of <a href="http://en.wikipedia.org/wiki/Quick_and_dirty">quick-and-dirty</a> ports of programming languages to the Android that interact with the Android <a href="http://en.wikipedia.org/wiki/Operating_system">OS</a>. I just stumbled upon this "<a href="http://code.google.com/p/android-scripting/issues/detail?id=184">issue page</a>" (it's more like a <a href="http://en.wikipedia.org/wiki/Internet_forum">forum</a> than a bug report).
</p>
<p>
The developer is trying to run something on his Android, which is basically <a href="http://en.wikipedia.org/wiki/Linux">Linux</a>, that requires <a href="http://en.wikipedia.org/wiki/Superuser">superuser</a> permissions. As the responses started to build upon each other, one user suggested starting his shell script with the following lines (the actual posting was in Android's flavor of <a href="http://en.wikipedia.org/wiki/Python_(programming_language)">Python</a> but I've converted it to <a href="http://linux.die.net/man/1/su">bash(1)</a> to make it more accessible):
</p>
<pre class="example">#!/bin/sh
if [ "$USER" != "root" ]; then
exec sudo $SHELL -c "`cat /proc/$$/cmdline | tr '\000' ' '`" root
fi
</pre>
<p>
I simply couldn't help being entertained at how revolting yet simply brilliant that code is. I hate when I run a command and it behaves stupidly because I didn't run it as the correct user. For example, this is the output of running <a href="http://linux.die.net/man/8/apt-get">apt-get(8)</a> without proper permission:
</p>
<pre class="example">$ apt-get install foobar
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
</pre>
<p>
So I have to rerun the command with <a href="http://linux.die.net/man/8/sudo">sudo(8)</a>? I guess that makes sense in some situations but it grates on my nerves. Including the above lines in your shell scripts will automatically run commands as root when you need root privileges. It will also do this without bypassing the security of sudo. That is, if you don't have permission to run a command with sudo, then this won't help.
</p>
<p>
Despite the plain hackery of the above code, I expanded upon it, making it a full shell script utility. You can look the code or grab a copy at my <a href="https://github.com">GitHub</a> <a href="https://github.com/Neil-Smithline">page</a> in the <a href="https://github.com/Neil-Smithline/rerunasroot">rerunasroot</a> repository.
</p>
</div>
</content>
</entry>
<entry>
<title type="html">Man vs Beast</title>
<author>
<name>Neil Smithline</name>
</author>
<link rel="alternate" type="text/html" href="http://www.neilsmithline.com/feed/archives/2012/01/14/man_vs_beast/"/>
<id>http://www.neilsmithline.com/feed/archives/2012/01/14/man_vs_beast/</id>
<published>2012-01-14T23:31:19-05:00</published>
<updated>2012-01-14T23:31:19-05:00</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<!-- NANOBLOGGER METADATA - END -->
<!-- The posting body follows this END_HTML directive -->
<p>
I stumbled upon <a href="http://bit.ly/Ad2VZd">this article</a> in the Wikipedia about an annual 22-mile cross-country race where the participants are people running and people riding horses. After 25-years the first runner won the race. In the subsequent half-dozen years there have been several more human winners.
</p>
<p>
I feel bad for any runner that is drafting a horse when the horse's tail goes up :-)
</p>
</div>
</content>
</entry>
<entry>
<title type="html">SOPA DOA? Not Quite But Getting There</title>
<author>
<name>Neil Smithline</name>
</author>
<link rel="alternate" type="text/html" href="http://www.neilsmithline.com/feed/archives/2012/01/14/sopa_doa_not_quite_but_getting_there/"/>
<id>http://www.neilsmithline.com/feed/archives/2012/01/14/sopa_doa_not_quite_but_getting_there/</id>
<published>2012-01-14T00:18:39-05:00</published>
<updated>2012-01-14T00:18:39-05:00</updated>
<category term="online-freedom" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<!-- NANOBLOGGER METADATA - END -->
<!-- The posting body follows this END_HTML directive -->
<p>
While not dead, SOPA is losing its teeth. Despite having had its major backer remove one of the more totalitarian portions from the bill (the ability to block non-US DNS addresses), SOPA appears unable to make progress in Congress.
</p>
<p>
In a <a href="http://cnet.co/ArcHPH">CNET</a> article (via <a href="http://bit.ly/zMTg3h">Slashdot</a>), the <a href="http://en.wikipedia.org/wiki/RIAA">RIAA</a> whines:
</p><blockquote>
<p>Instead of helping to come up with mechanisms to deny access to
the U.S. market by foreign criminals," the RIAA wrote, "the
opposition just keeps saying no. It is incumbent upon them to help
develop language that will ensure that criminals can't access our
market, while at the same time protecting our need for national
cybersecurity.
</p>
</blockquote>
<p>
As <a href="#SOPA-the-end-of-free-speech.org">discussed previously</a>, SOPA claims to support American businesses while it really supports the very large media companies and stifles smaller companies and individuals rights to publish.
</p>
<p>
As I've stated in my previous <a href="#SOPA-the-end-of-free-speech.org">posting about SOPA</a>, I am strongly opposed to <a href="http://en.wikipedia.org/wiki/Piracy of software">piracy</a> as I am a software engineer (ie: software pays my rent). But I also believe that piracy can be dealt with without destroying <a href="http://en.wikipedia.org/wiki/Freedom_of_speech">free speech</a>. My viewpoints are similar to those of the <a href="http://en.wikipedia.org/wiki/Electronic_Frontier_Foundation">EFF</a> and differ from the <a href="http://en.wikipedia.org/wiki/Free_Software_Foundation">FSF</a>'s viewpoint which opposes proprietary software altogether.
</p>
</div>
</content>
</entry>
<entry>
<title type="html">Cool Animation</title>
<author>
<name>Neil Smithline</name>
</author>
<link rel="alternate" type="text/html" href="http://www.neilsmithline.com/feed/archives/2012/01/09/cool_animation/"/>
<id>http://www.neilsmithline.com/feed/archives/2012/01/09/cool_animation/</id>
<published>2012-01-09T12:33:50-05:00</published>
<updated>2012-01-09T12:33:50-05:00</updated>
<category term="online-freedom" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<!-- NANOBLOGGER METADATA - END -->
<!-- The posting body follows this END_HTML directive -->
<p>
Google Plus Logo Animation by <a href="https://plus.google.com/115358085054420116311">ℑ. ℜ. Gellett</a>
<img src="https://lh4.googleusercontent.com/-POK887siH3w/Twq0UoK7YgI/AAAAAAAAAOg/dWGOAZzgcWQ/w300/Google-Plus-Logo-Animation-Small-JRGellett.GIF" alt="https://lh4.googleusercontent.com/-POK887siH3w/Twq0UoK7YgI/AAAAAAAAAOg/dWGOAZzgcWQ/w300/Google-Plus-Logo-Animation-Small-JRGellett.GIF" />
</p>
</div>
</content>
</entry>
<entry>
<title type="html">Stop PTSD, Support The Wikipedia</title>
<author>
<name>Neil Smithline</name>
</author>
<link rel="alternate" type="text/html" href="http://www.neilsmithline.com/feed/archives/2012/01/05/stop_ptsd_support_the_wikipedia/"/>
<id>http://www.neilsmithline.com/feed/archives/2012/01/05/stop_ptsd_support_the_wikipedia/</id>
<published>2012-01-05T16:02:44-05:00</published>
<updated>2012-01-05T16:02:44-05:00</updated>
<category term="online-freedom" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<!-- NANOBLOGGER METADATA - END -->
<!-- The posting body follows this END_HTML directive -->
<em><p>
<p>
This posting is an updated version of my <a href="http://wikipedia.org/">Wikipedia</a> <a href="http://en.wikipedia.org/wiki/User:Neil_Smithline">user page</a> originally posted on 6 Dec 2011.
<p/></em>
A few months ago I experienced what is known as a <a href="http://en.wikipedia.org/wiki/Traumatic_event_(psychological)">traumatic event</a>.
</p>
<p>
It was a day like many other days. I was talking to my two sons and we had a disagreement about some fact. (I have no recollection what the fact being discussed was.) So, we did what we always do. We each reached for one of the nearby smartphones, tablets, netbooks, and laptops that populate our lives and went right to the <a href="http://wikipedia.org/">Wikipedia</a> to resolve the argument.
</p>
<p>
Then it happened. The Wikipedia was down. For a second or two, none of us knew what to do. Then we <a href="http://en.wikipedia.org/wiki/Googled">Googled</a> to find the answer to our question (I still can't remember the subject but I'm sure I was right :-).
</p>
<p>
But I started thinking, what would happen if the Wikipedia were to go away? It is not that I think the Wikipedia is perfect. In fact, I think it is chock full of problems. But, what makes the Wikipedia special is that the Wikipedia's problems are ours, the users', problems. They aren't owned by <a href="http://www.antipixel.com/blog/archives/2002/10/22/steal_these_buttons.html#000526">big government</a>, <a href="http://www.antipixel.com/blog/archives/2002/10/22/steal_these_buttons.html#000526">big business</a>, <a href="http://www.antipixel.com/blog/archives/2002/10/22/steal_these_buttons.html#000526">lobbyists</a>, the <a href="http://www.antipixel.com/blog/archives/2002/10/22/steal_these_buttons.html#000526">PRC</a>, or anyone else.
</p>
<p>
If there's a problem, you can edit the page and fix it. If you're uncertain what to do, you can add a comment about the problem on the discussion page with the hope that someone else will fix it or help you out. Or you can simply ignore it. But, in all cases, <b>you</b> are making the decision.
</p>
<p>
So I donated $5 to the Wikipedia. That's about the same amount I tip the driver who delivers my groceries.
</p>
<p>
Shortly after this traumatic event, the Wikipedia started posting these banner requests for donations. Personally, I find them increasingly annoying with every visit. But they are not nearly as annoying as the 10 minutes or so the Wikipedia was down. That downright spooked me.
</p>
<p>
Being they've continued to post the banner requests, I'm assuming they continue to need more money. So I decided to start what I'm calling The Wikipedia: Just Give campaign.
</p>
<p>
I'm not sure what the campaign will consist of, but I want to encourage everyone to give to the Wikipedia. I, who am totally untalented in the graphic arts, even made a few icons to help people join my campaign.
</p>
<p>
So I ask each of you to just give. If you don't have a lot, don't give a lot. But more importantly, encourage everyone you know to just give.
</p>
<p>
<b>Update 14 January 2012:</b> Just got this
</p><blockquote>
<p> Sorry, the servers are overloaded at the moment.
</p>
<p>
Too many users are trying to view this page. Please wait a while before you access this page again.
</p>
<ul>
<li>Timeout waiting for the lock
</li>
</ul>
</blockquote>
<p class="verse">
Neil Smithline, 6 December 2011<br/>
<i>A proud sponsor of the Wikipedia and its free information.</i><br/>
</p>
<div id="outline-container-1" class="outline-3">
<h3 id="sec-1">Resources</h3>
<div class="outline-text-3" id="text-1">
<p><i>Any artistic help on the badges would be deeply appreciated.</i>
</p>
</div>
<div id="outline-container-1-1" class="outline-4">
<h4 id="sec-1-1">HTML Code For Your Website</h4>
<div class="outline-text-4" id="text-1-1">
<p>Assuming I've gotten all my angle brackets matched and tags closed, depending on the system you use, you can add a graphic to your website or email signature by copy-and-pasting this:
</p>
<center>
<a
href="http://wikimediafoundation.org/w/index.php?title=WMFJA085/en/US"
target="_blank" title="Wikimedia donation page">
<img src="http://upload.wikimedia.org/wikipedia/commons/3/34/Wikipedia_Just_Give-_Blue_Gray_Antipixel.png"
alt="Blue and gray 'Just Give' icon"/>
</a>
<br/>
<span style="font-size: 75%;">
(<a href="http://bit.ly/just-give"
target="_blank"
title="'Just Give' Campaign">what's this?</a>)
</span>
</center>
<p>
or this HTML:
</p>
<pre class="example"><a
href="http://wikimediafoundation.org/w/index.php?title=WMFJA085/en/US"
target="_blank" title="Wikimedia donation page">
<img src="http://upload.wikimedia.org/wikipedia/commons/3/34/Wikipedia_Just_Give-_Blue_Gray_Antipixel.png"
alt="Blue and gray 'Just Give' icon"/>
</a>
<br/>
<span style="font-size: 75%;">
(<a href="http://bit.ly/just-give"
target="_blank"
title="'Just Give' Campaign">what's this?</a>)
</span>
</pre>
</div>
</div>
<div id="outline-container-1-2" class="outline-4">
<h4 id="sec-1-2">Standard Badges (<a href="http://www.antipixel.com/blog/archives/2002/10/22/steal_these_buttons.html#000526">antipixel</a> style, 80x15px)</h4>
<div class="outline-text-4" id="text-1-2">
<br/><br/>
<table style='border: 2px solid black !important; border-collapse: separate;' cellspacing="0" cellpadding="6" rules="all" frame="2">
<caption></caption>
<colgroup><col class="left" /><col class="left" />
</colgroup>
<tbody>
<tr><td class="left">Blue and gray "Just Give"</td><td class="left"><img src="http://neilsmithline.com/images/just-give/Wiki-just-give-blue-gray-antipixel.png" alt="http://neilsmithline.com/images/just-give/Wiki-just-give-blue-gray-antipixel.png" /></td></tr>
<tr><td class="left">Blue and white "Just Give"</td><td class="left"><img src="http://neilsmithline.com/images/just-give/Wiki-just-give-blue-white-antipixel.png" alt="http://neilsmithline.com/images/just-give/Wiki-just-give-blue-white-antipixel.png" /></td></tr>
<tr><td class="left">Gray and blue "Just Give"</td><td class="left"><img src="http://neilsmithline.com/images/just-give/Wiki-just-give-gray-blue-antipixel.png" alt="http://neilsmithline.com/images/just-give/Wiki-just-give-gray-blue-antipixel.png" /></td></tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-1-3" class="outline-4">
<h4 id="sec-1-3">Other Badges</h4>
<div class="outline-text-4" id="text-1-3">
<br/><br/>
<table style='border: 2px solid black !important; border-collapse: separate;' cellspacing="0" cellpadding="6" rules="all" frame="2">
<caption></caption>
<colgroup><col class="left" /><col class="left" />
</colgroup>
<tbody>
<tr><td class="left">Blue "Just Give", 172x66px</td><td class="left"><img src="http://neilsmithline.com/images/just-give/Wikipedia-just-give-172x66.png" alt="http://neilsmithline.com/images/just-give/Wikipedia-just-give-172x66.png" /></td></tr>
<tr><td class="left">Yellow "Vote", 203x78px</td><td class="left"><img src="http://neilsmithline.com/images/just-give/Wikipedia-just-give-203x78.png" alt="http://neilsmithline.com/images/just-give/Wikipedia-just-give-203x78.png" /></td></tr>
<tr><td class="left">Blue "Just Give, 229x88px</td><td class="left"><img src="http://neilsmithline.com/images/just-give/Wikipedia-just-give-229x88.png" alt="http://neilsmithline.com/images/just-give/Wikipedia-just-give-229x88.png" /></td></tr>
<tr><td class="left">Blue "Just Give", 305x117px</td><td class="left"><img src="http://neilsmithline.com/images/just-give/Wikipedia-just-give-305x117.png" alt="http://neilsmithline.com/images/just-give/Wikipedia-just-give-305x117.png" /></td></tr>
<tr><td class="left">Blue "Just Give, 406x156px</td><td class="left"><img src="http://neilsmithline.com/images/just-give/Wikipedia-just-give-406x156.png" alt="http://neilsmithline.com/images/just-give/Wikipedia-just-give-406x156.png" /></td></tr>
</tbody>
</table>
<br/>
</div>
</content>
</entry>
</feed>