HNHacker News
TopNewBestAskShowJobs

tumba

291 karma · joined July 22, 2009

Micah Valine

You can reach me at micah@micahvaline.com.

submissionscomments
tumba··on A History of Palm, Part 1: Before the PalmPilot
I was thrilled by my purchase of an original Palm Pilot during my last year of high school and delighted in filling its Notes application with a wealth of data which would now be in my "palm." I would go on to develop a few applications that ran on later devices such as the Palm III and Palm V. To this day, I recall with fondness poring over Palm's documentation and the book by Neil Rhodes and Julie McKeehan [1] and writing code using the MetroWorks CodeWarrior for Palm OS [2].

Having primarily used Windows and early Linux distributions at the time, Palm's elegant and useful user interface guidelines were my introduction to user experience and eventually led me to Mac OS.

While I fought the Palm OS storage model at the time, in retrospect, it was, like the UI approach, also an elegant abstraction that played a key role in safeguarding the performance expectations of the user experience.

[1] https://www.safaribooksonline.com/library/view/palm-os-progr...

[2] http://www.palminfocenter.com/news/4762/metrowerks-releases-...

tumba··on Escape from the Heap: Low-Level Programming in Common Lisp [video]
This is a presentation by Ahmon Dancy, a software engineer with Franz. The talk was originally prepared for the 8th European Lisp Symposium, April 20-21, 2015; this recording was a presentation to the Bay Area Lisp and Scheme Meetup.

He discusses the implementation of a variety of data structures outside the Common Lisp heap in the storage engine for AllegroGraph, a RDF triple-store entirely implemented in Common Lisp.

tumba··on Epigenetics Has Become Dangerously Fashionable
Can you make any recommendations on textbooks that would be useful for a non-specialist who wants to survey how "basic genetics work" and understand the current state of knowledge? I am not looking for popular treatments, but something along the lines of Less Wrong's "Best Textbooks on Every Subject" list. [1]

[1] http://lesswrong.com/lw/3gu/the_best_textbooks_on_every_subj...

tumba··on Feynman: Simulating Physics with Computers (1981) [pdf]
If you enjoyed this, may I also recommend Feynman's Lectures on Computation. [1] It consists of transactions of a lecture series that begins with computer architecture and theory of computation and considers interesting subjects like the physical limits to computational capability--all through the unique lens of Feynmans' mind.

Feynman worked on this subject working on the Connection Machine supecomputer. [2][3]

[1] http://www.amazon.com/Feynman-Lectures-Computation-Richard-P...

[2] https://en.wikipedia.org/wiki/Connection_Machine

[3] http://longnow.org/essays/richard-feynman-connection-machine...

tumba··on Ask HN: Books to learn advanced C programming
I suggest C Interfaces and Implementations: Techniques for Creating Reusable Software by David Hanson.[1] It focuses on helpful engineering practices for reliably and efficiently implementing algorithms in C.

I also second the recommendation for Peter van der Linden's Expert C Programming for its masterful treatment of how C really functions, including the surprisingly frequent areas in which real-world constructs produce "undefined behavior" from the perspective of the C standard.

[1] http://www.amazon.com/Interfaces-Implementations-Techniques-...

tumba··on Introducing Kindle Oasis
No, but if you are serious about a PDF workflow for reference and annotation, the Sony DPTS1 is an excellent single-purpose device.

http://pro.sony.com/bbsc/ssr/product-DPTS1/

tumba··on [dead]
See extensive discussion on the Washington Post article.

https://news.ycombinator.com/item?id=11270529

tumba··on Obama at SXSW: ‘Absolutist view’ on digital privacy cannot prevail
> You know, I haven’t flown commercial in a while. But my understanding is that it’s not great fun going through security. But we make the concession. It’s a big intrusion on our privacy, but we recognize it as important.

I cannot agree that I recognize the "security theater" conducted by the TSA as important or useful. [1] I will grant that it may have helped the airline industry continue to attract travelers during the fear-filled period immediately following 9/11. Was that worth infecting air travel with a self-perpetuating institutional virus?

Are we prepared accept the consequences of similarly infecting a vastly more significant industry?

[1] https://www.schneier.com/essays/archives/2009/11/beyond_secu...

tumba··on Obama at SXSW: ‘Absolutist view’ on digital privacy cannot prevail
I suspect a data breach or exploit of cloud storage or other service providers is more likely for most consumers than an attack on their device following theft or loss.

For both privacy and protection against criminals, cloud storage must become as impregnable as our physical devices. Do we truly lack the will or creativity to produce custodians who cannot recover our data without our permission?

tumba··on Obama at SXSW: ‘Absolutist view’ on digital privacy cannot prevail
It is fallacious to believe that because publicly available technology is being effectively used by terrorists and criminals, removing legal access to this technology will make terrorists and criminals ineffective.

Indeed, it may merely create an additional category of criminals (analogous to drug traffickers) whose product is the provision of effective communication channels.

tumba··on Obama at SXSW: ‘Absolutist view’ on digital privacy cannot prevail
There is also the mistaken belief that effective restriction of free thought is is possible through political/legal means. That strategy was ineffective against communism and remains ineffective today.
tumba··on How to Deploy Software
Off topic, but to create an immediately effective KDS root key, just set the effective time ten hours in the past. You can validate propagation by looking for the 4004 event in the KDS event log. This is probably not a good idea in production, but is useful when building/rebuilding a lab.

  Add-KdsRootKey –EffectiveTime ((get-date).addhours(-10))
See https://technet.microsoft.com/en-us/library/jj128430.aspx
tumba··on Voice Quality on Smart Phones Still Sucks (2014)
Any recommendations or examples of "good communications grade" handsets?
tumba··on Auto companies are lacking key ingredients for the future of the automobile

  > ... their dashboards are (likely to be) gorgeous and
  > vastly improved over the mostly superfluous dials and 
  > gauges car manufacturers think we need to see (when was 
  > the last time you had to check your RPMs or engine  
  > temperature?).
Being aware of engine RPMs and temperature is important.

I'm all for better interfaces. Personally, I drive a diesel Volkswagen and having a customizable dashboard that could provide access to additional engine parameters and sensors, such as I can access today with a laptop connected using Vag-Com (see http://www.ross-tech.com) could be useful. But the key is to provide better situational awareness for the driver, not more distractions.

In the US alone, more than 40k people die every year and millions are injured while operating or riding in these machines. Self-driving cars may be the future in some urban areas and on interstates, but we need to continue to optimize vehicles for drivers, not make them into more distracting spaces where people can continue to indulge their addictions to communication and media consumption.

tumba··on Practical Emacs Lisp
I have no desire to get into a personal argument, but I would like to point out that one contribution he has made for me that have not seen elsewhere is that he has chosen to use Emacs as a text-processing scripting environment in preference to Perl or Python or some other scripting languages. Without commenting on issues of style or idiom I found his write-ups of this experience using the text-editing primitives of Emacs to be useful and interesting.

For example, consider:

"Text Processing: Emacs Lisp vs Perl" http://ergoemacs.org/emacs/elisp_text_processing_lang.html

"How to Write grep in Emacs Lisp" http://ergoemacs.org/emacs/elisp_grep_script.html

tumba··on Ask HN: Why did literate programming not catch on?
Programming occurs in a wide variety of contexts, and different tools and workflows are optimal in different contexts. In the same way that I find interactive programming in Common Lisp optimal for exploratory work in a complicated or uncertain domain, I find literate programming to be optimal for work that requires rigor in a domain with little uncertainty and static requirements.

Literate programming hasn't "taken off" only in the sense that few people are performing the type of tranquil and rigorous work it was made for. Much of the (admittedly difficult) work being done by programmers today is in fact trivial. The difficulty comes from attempting to solve ill-specified or constantly changing requirements by glueing together a constantly changing set of frameworks and tools.

However, I would suggest that even in organization whose primary responsibility is wrangling with a messy soup of ill-defined requirements as fast as possible, there are often sub-problems whose treatment is amenable for the use of literate program, such as a library implementing a unique and non-trivial algorithm. In such cases, it can be worthwhile to carve out an island of tranquility, clear prose, and rigor, even if it means using slightly different tooling than the rest of the project.

tumba··on Programming for four-year-olds – No assembler required
I think there are two ways in which children may constructively be taught computing. The first is algorithmic problem solving, which is often better taught using logic puzzles and games rather than programming trivial if-then statements. Anany and Maria Levitin's book, Algorithmic Puzzles, is a good example of the genre. [1]

Secondly, they need to be taught an active and inquisitive posture towards technology. Most devices today (especially tablets and phones) force the user into a dependent and passive mode of interaction in which it is impossible to know how things work. Accordingly, I think it may be destructive for children to spend too much time with these devices.

The KIBO system described in the article seems like a great thing to play with to build a basic understanding of symbolic control flow, although it too is opaque. I think 4 is too young to spend much time staring at a screen, but by the time a child is 8-10, I think it is better to have an admittedly difficult to use Linux workstation or an old computer running FreeDOS. Also good are the many simple devices arising out of the "maker" movement.

I would really like to give my kids a simple device that could be programmed from the hardware up in something like Forth. Something like an HP calculator, but with a command line and options to connect to other devices would be great.

[1] http://www.amazon.com/gp/product/0199740445

tumba··on Ask HN: Where to switch from Gmail?
I have been a happy Fastmail customer for a year now. I prefer their webmail interface to any software other than mutt because of its excellent keyboard shortcuts.

CalDAV access to my calendar has been very stable and CardDAV access to contacts (the feature I've been waiting for) is in beta now. I have seen a small bug related to shared address books (I have a "business" account) on Yosemite, but other than that it has been rock solid.

tumba··on Publishing Effective Modern C++, Part 2
Link to discussion of Part 1 https://news.ycombinator.com/item?id=9540955
tumba··on Getting Things Done – Revised 2015
I have found adopting time/energy contexts to be helpful. I believe the original blog post is http://simplicitybliss.com/blog/a-fresh-take-on-contexts.
tumba··on How we spent two days making Perl faster
Thank you for PerlGuts Illustrated!

http://cpansearch.perl.org/src/RURBAN/illguts-0.49/index.htm...

tumba··on Ask HN: Programmers, how do you handle Copyright and IP in your contracts?
You should probably have your own lawyer draft something for me, but here's some of my own standard language. Basically, it grants the client an unlimited license while maintaining all intellectual property rights. It also acknowledges that I bring intellectual property to the table when I start and that in no way belongs to the client.

"Client shall have a perpetual, irrevocable, nontransferable license to use and copy the materials and deliverables created, discovered, invented, developed or prepared in the course of this agreement (“Deliverables”) and prepare derivative works based on the Deliverables for its internal use. All other rights in the Deliverables remain in and/or are assigned to Consultant. Client acknowledges that the Deliverables may in whole or in part be created using Consultant’s prior acquired knowledge, skill and expertise, and may include Consultant’s proprietary information and prior developed intellectual property of Consultant, which Consultant shall continue to own and have an unrestricted right to use for other purposes. Consultant may retain archival copies of the Deliverables for Consultant's internal use, and nothing herein shall prevent Consultant from continuing to use Consultant's information, knowledge, skill and/or expertise for other purposes."

tumba··on Object Pascal Handbook
At least in the commercial world, the current legacy of Pascal is really in the C# community. See Anders Hejlsberg [1]. He was the author of Turbo Pascal and the chief architect of Delphi before becoming the architect of C#. There is a lot of consistency between the three language environments, especially between Delphi and C#.

[1] https://en.wikipedia.org/wiki/Anders_Hejlsberg

tumba··on Microsoft Announces Azure Stack
This has been a consistent direction from Microsoft for some time. When Microsoft talks about private cloud or hybrid cloud, they refer to a design approach in which infrastructure and applications are separated. Even today, using the latest versions of Windows Server and System Center, you can manage physical hardware, storage and networking as a "fabric" and even offer self-service server provisioning.

In large shops, this allows for a real separation of roles between infrastructure and applications. I think this is a useful separation. Even in small shops where the same people are doing everything, this mental separation enables better management. Many small and medium sized businesses still operate in the mode that deploying an application or a major upgrade involves starting with deploying a new server.

tumba··on A Day in the Life of a Stolen Healthcare Record
Your healthcare record does not exist as an entity anywhere; it is an amalgam of all the records different physicians and medical service providers have on you. It is not uncommon to need to gather all these records if, for example, you go to a research hospital for treatment.

The only practical method today is to keep your records yourself as they accumulate. When you see a doctor, ask for a copy of his consultation notes. If any tests are done, ask for copies of the full results. If you have imaging done, request a copy. Most medical imaging facilities can provide CD-ROMs with files in standard formats or that come packaged with viewing software.

Most importantly, make your own notes on what has transpired and what the doctor said.

If you ever do request all your records, you will discover that many physicians keep TERRIBLE notes. Sometimes the only record of a consultation is a hand-written form containing a few impressions and notes on vital signs. Thankfully, this is becoming less common, but even doctors that have implemented an electronic health record system that forces them to enter standard consultation records don't always put the full depth of the discussion you had in those records. It will also often be difficult to reconstruct start and stop dates for medications unless you keep track of that yourself.

tumba··on Is Computer Science Science? (2005) [pdf]
Knuth's Turing Award speech "Computer Programming as Art" [1] is relevant. It is useful to apply the scientific paradigm when appropriate, but it is also true that there is an aesthetic dimension to computer programming and the use of computer programs as a form of human knowledge that gets lost unless we remember that the artistic element is vital to the field.

[1] http://dl.acm.org/citation.cfm?id=361604.361612. See also http://www.paulgraham.com/knuth.html for a transcription.

tumba··on A Pressing Business: Inside a Czech Vinyl Plant
There is a long tradition of this sort of payment. [1] I have run across it in industrial settings, particularly where the industry or its management were strongly influenced by Taylorism. [2] However, if quality standards aren't easily achieved by standard work, it can be highly dysfunctional.

[1] https://en.wikipedia.org/wiki/Piece_work

[2] https://en.wikipedia.org/wiki/Scientific_management

tumba··on Ask HN: How do you find your next book?
If you find yourself in the position of saying "Hey, I have some free time; what should I read?" I recommend focusing first on what you want to know or do, secondly on determining what book and articles are likely to contain useful information, and only then determining a plan for what to read. Here is the process I follow.

For each subject in which I am interested, I maintain a bibliography. The most common way entries are added here is by discovering references to books or articles in other things I am reading.

When reading books in physical media, I usually draw an arrow by references or notes that indicate books I should add to these bibliographies. When I am done with a book or article, I go back through and add any such references that still seem relevant to my bibliography. (I do this at the same time I am transcribing notes and quotations, files of which are also an important part of my system.) I usually include a brief note on why I believe this work will be of value and where I got the reference.

Where this becomes useful is when I am pursuing some sort of study. I have learned that I study best with some object in view, so even if my study is for general education, I prepare a syllabus that presents objectives of some sort (code to write, questions to answer, etc.).

Once I have the objectives prepared, I use my living bibliography files to create a reading plan. Of course, once I really delve into a subject, that plan usually expands and I add more references into both my general bibliography and reading plan.

This process provides me an apparatus to pursue my interests in a structured way to make the most of my time. I don't worry much about what to read next except in the context of some such study.

I have found that without this sort of structure to focus my reading, I am in danger of becoming a dilettante. I don't have an exceptional memory, and if I read without a structure, I easily fall into the trap of cultivating superficial knowledge without ever getting deep enough to answer substantive questions or do original work.

I do, however, want to encourage serendipity, so I subscribe to and read periodicals in variety of fields. I have also found The London Review of Books and book reviews in leading newspapers to be useful sources of references and lines of thought that I would probably never otherwise discover.

tumba··on Zen of Palm (2003) [pdf]
This brings back fond memories of Palm OS development. It wasn't the easiest platform to develop for, but as this document describes, user experience was emphasized and the thrill of making sophisticated tasks simple using constrained resources was satisfying.
tumba··on Build Static Websites
In fact, that was the way Moveable Type worked and was a dominant publishing tool before WordPress took off.
← PreviousPage 2 of 3Next →