Disclaimer

The content of this blog is my personal opinion only. Although I am an employee - currently of Nvidia, in the past of other companies such as Iagination Technologies, MIPS, Intellectual Ventures, Intel, AMD, Motorola, and Gould - I reveal this only so that the reader may account for any possible bias I may have towards my employer's products. The statements I make here in no way represent my employer's position, nor am I authorized to speak on behalf of my employer. In fact, this posting may not even represent my personal opinion, since occasionally I play devil's advocate.

See http://docs.google.com/View?id=dcxddbtr_23cg5thdfj for photo credits.

Tuesday, September 08, 2015

Version Control of Crash Recovery Cruft



I have developed a system whereby I archive the "cruft" created by a crash into a tar file

TAR.archived-framemaker-cruft.tar



so that I can recover autosave files if necessary, but so that they do not clutter my directory.





I just added a quickie to count the number of crashes saved, or at least an approximation thereof.







This is one of those "duh, why didn't I do this years ago" sorts of things.



EVERYTHING needs version control.



Even crash recovery files.



It sure is nice to have multiple versions of the same crash recovery file(name) , rather than having to rename them autosave.1 autosave.2, ...  (Most important thing is to be able to name things. Second most important thing is to not have to name things.)







    CRUFT_FILES= $(FM_CRUFT_FILES) $(PPT_CRUFT_FILES)    FM_CRUFT_FILES= *.auto.fm *.backup.fm *.auto.book *.backup.book *.recover.fm *.recover.book    PPT_CRUFT_FILES= *Autosaved*.pptx    .PHONY: save-cruft    save-cruft: archive-all-autosave-files    .PHONY: archive-all-autosave-files    archive-all-autosave-files:    -echo $(PPT_CRUFT_FILES) | gtar -uf TAR.archived framemaker-cruft.tar    -rm $(PPT_CRUFT_FILES)    -echo $(FM_CRUFT_FILES) | gtar -uf TAR.archived-framemaker-cruft.tar    -rm $(FM_CRUFT_FILES)    make unlock-all-framemaker-files
    .PHONY: ls-cruft    ls-cruft:    ls $(CRUFT_FILES)
    .PHONY: count-crashes    count-crashes:    .PHONY: count-saved-crash-cruft    count-saved-crash-cruft:    gtar tvf TA*tar | perl -p -e 's/^([^ \t]+[ \t]+){3}([^ \t]+ [^ \t]+).*/\2/' | sort -u | tee >(echo "Unique timestamps (crash points in archive):" `gwc --lines`)











Sunday, September 06, 2015

Who says Mac OS X does not need uninstallers

I have heard people say that Windows needs uninstallers for DSW because of design flaws, whereas Mac OS X does not need uninstallers because of its perfect UNIX-ish design.



False!



Evidence: uninstalling the "Basis Sync.app", now that I am no longer using my Basis B1 watch (R.I.P.).



The web page link says, paraphrasing: "To uninstall move the 'Basis Sync.app' from the /Applications folder to Trash.  Also, go and remove support files from ~/Library/Application Support/Basis Sync."



The two separate steps would be encapsulated by an uninstaller.



But furthermore:  trying to move the 'Basis Sync.app' fails, because the app is running - I was starting it by default.  (I guess Apple has put in a Windows like interlock; normal UNIX would blindly unlink a running program.)  Option-Command-Escape does not show 'Basis Sync.app' as running.  However, standard UNIX ps does, and I can kill it, and then remove the app.



I know how to do this.  But how many non-UNIX users would?   My wife?  My mother?



Automating - creating an uninstaller - forces the software vendor to really know how to uninstall.

Wednesday, September 02, 2015

Watch and fitness band

After the Withings Activite' Pop failed to satisfy, I have reverted to a slightly updated version of what I have been wearing for the past year: a semi-smart watch on one wrist, and a fitness tracker wristband on the other.

Before their watery demise, I was wearing the Basis B1 watch, and a Jawbone UP.   I bought the Basis watch first. I later bought the Jawbone UP, at first just to get vibrating alarms - but I liked the UP iPhone app so much more that it became my main fitness tracker.   I mainly used the Basis as a watch, to tell the time, and because it had a display so that I could see how many steps I had done without opening my phone.

Now I am wearing a Pebble Smartwatch, and a Jawbone UP2.

The UP2 because I continue to prefer its app, and for sleep monitoring.  The Jawbone UP was able to tell whether I was awake or asleep automatically, but only the Misfit watchapp can do that on the Pebble - and it interferes with other watchapps, like the Jawbone UP watchapp, which actually counts steps. 

Interference between watchapps is the bugbear of the Pebble.

I was therefore a bit disappointed to learn that the UP2 has separate modes for sleep and awake.   Automatically detecting is the entire reason I got the UP2.

The Pebble SmartWatch  (a) because running the Jawbone UP watchapp displays steps taken in almost real time - i.e. because it has a display.   (b)_Swimming.  (c)_Other smartwatch goodness: (c.1) calendar (via SmartWatch Pro), (c.2)_notifications about email and text (mixed blessing, needs better filtering), (c.3)_bus and train schedule. (d) Because I can write my own watchapps, in my own copious free time. 

I can already feel the gravitational pull:  I am frustrated when something that could fit in the smartwatch's limited form factor is not available as a watchapp. Just as I prefer to use my cellphone for most things that fit on it, I think the same will apply to the watch.   The cellphone just has a bigger display, and the MacBook an even bigger display, and a big keyboard.

If we had goggles...
 

Tuesday, September 01, 2015

Development Platforms for MIPS (esp MIPS64)

I have often been asked by my hacker friends "Where do I get a MIPS based system to play with?"  As in home, personal, hacking and experimentation. SW and/or HW.



Apart from saying "Well, your home router probably has a MIPS CPU" or "Install OpenWRT or the like on a home router" I have never really had a good answer for my friends.



In particular, I did not know where to find a MIPS64 development system - to recommend to my friends, but also for my playing around with at home.



I just found the webpage of MIPS development systems here, and in particular the Ubiqiti Edgemac ERlite-3.  With its big brothers in the Ubiqiti EdgeRouter family (datasheet), the ER-8 and the ERpro-8, ranging from



2 MIPS64 cores (from Cavium) @ 500 MHz

512MB DRAM / 2GB flash / 4 ports



to



2 MIPS64 cores @ 1 GHz

2G DRAM / 4GB flash / 8 ports


with prices from circa 92$ to 345$ on Amazon.







I was about to complain about the relatively small amounts of DRAM and Flash for 64-bit OS development.  (Although, a lot more than most routers have.)



But: this is MIPS.  SW TLB miss handling is the norm.  If you can memory map the flash, you could make the flash part of the memory hierarchy beyond DRAM.  I.e. treat DRAM as a cache for flash, write absorbing.



Heck, this could be a fun system for ASPLOS type OS hacking, designing alternative page table structures for OSes, virtual machines, etc.



Attach a NAS to the ethernet ports, and away you go.





A very nice system for SW hacking, especially if you hack at the virtual memory level.


Unclear how much hardware hacking you can do.







Daddy knows what he wants for Christmas.




Monday, August 31, 2015

Now trying Pebble as a fitness (swim) monitor

After my disappointment with the Withings Activite' Pop, described in previous blog entry, I am going to try the Pebble smartwatch.



Actually, I was about to give up and reproduce my old configuration - a Basis watch, *AND* a Jawbone UP wristband - but I realized that I could get both a Jawbone UP2 and an original Pebble for the price of the current Basis Peak model.



Plus, the Pebble is the only other relatively inexpensive fitness watch that supposedly can handle both swimming and walking. After the Withings Activite' Pop, the next stop seems to be Garmin triathlon devices >> 200$.



Plus++, the Pebble supposedly has much other goodness: downloadable apps, a free SDK so that I can try writing my own, etc.







Performing a Force Sync & Simulated Workout (Pebble) – Swim.com:



'via Blog this'

Thursday, August 27, 2015

My new fitness watch: Withings Activite Pop

I just got my new fitness watch: the Withings Activite' Pop.

It replaces the Basis B1 watch and Jawbone UP that I have been wearing together, one on each wrist. I got the Basis in October 2013, and the Jawbone UP in November 2014. Replacing them because they died after being soaked in rinse water with my wetsuit. :-(

I considered getting a new Basis watch and a new Jawbone UP, since the combination worked well, except for the large UP being a bit tight.

But I decided to switch to the Withings Activite Pop, mainly because it was one of the few activity monitors that can automatically track swimming as well as walking.

This blog to track experience.

Ubiqiti EdgeMax ERLite-3 - Imagination Community

Ubiqiti EdgeMax ERLite-3 - Imagination Community:



'via Blog this'



Looks like this may be a fun and fairly inexpensive way to do 64-bit RISC hacking.  (MIPS64.)



Plus, if it doesn't work out, it's still a good router, recommended by the bufferbloat guys.