tag:blogger.com,1999:blog-42057440406719801862024-02-20T11:54:22.422-08:00. Ray's CornerUnknownnoreply@blogger.comBlogger32125tag:blogger.com,1999:blog-4205744040671980186.post-87785733711301790032016-05-15T23:17:00.003-07:002016-06-04T20:32:45.986-07:00Setting up Ugee 1910b Tablet Display in Linux (Ubuntu 16.04 LTS)I recently decided to migrate from OS X to Ubuntu, and one of the most difficult (or rather easy once you figure out) things to setup is the Ugee Tablet Monitor on Ubuntu. Fortunately, the drivers for the Ugee monitor and touch screen input are already configured and makes the display and touch input drivers load automatically when the monitor is plugged in and turned on. The tricky part is getting the calibration settings correct.<br />
<br />
Anyway, below are the steps you need to take to calibrate the Ugee.<br />
<br />
1. Figure out what displays are available and which one corresponds to the Ugee display.<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"><b>$ xrandr</b></span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Screen 0: minimum 8 x 8, current 4000 x 1715, maximum 16384 x 16384</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DP-0 disconnected (normal left inverted right x axis y axis)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span style="background-color: yellow;">DP-1 connected primary 1440x900+2560+815</span> (normal left inverted right x axis y axis) 575mm x 323mm</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 1440x900 59.89*+</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 1360x768 60.02 </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 1280x960 60.00 </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 1280x800 59.81 </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 1280x720 60.00 </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 1024x768 75.03 70.07 60.00 </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 800x600 75.00 72.19 60.32 56.25 </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 640x480 75.00 72.81 59.94 </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span style="background-color: lime;">DP-2 connected 2560x1440+0+0</span> (normal left inverted right x axis y axis) 597mm x 336mm</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 2560x1440 59.95*+</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 1280x720 59.86 </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DP-3 disconnected (normal left inverted right x axis y axis)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DP-4 disconnected (normal left inverted right x axis y axis)</span><br />
<div>
<br /></div>
<div>
<br /></div>
<div>
The Ugee is highlighted in <span style="background-color: yellow;">yellow.</span> Its resolution matches 1440x900 (which can be seen inside Settings->Displays). It's display name is <b>DP-1 </b>.</div>
<div>
<br /></div>
<div>
My primary display (iMac 27" display) is highlighted in <span style="background-color: lime;">green</span> . It's display name is DP-2 .</div>
<div>
<br /></div>
<div>
2. Figure out the input id for the touch display input. You can do this as follows:</div>
<div>
<br /></div>
<div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><b>$ xinput_calibrator --list</b></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Device "UC-Logic 19" Tablet Monito" <span style="background-color: yellow;">id=13</span></span></div>
</div>
<div>
<br /></div>
<div>
Where I've highlighted the important part in yellow. The id for my display is 13.</div>
<div>
<br /></div>
<div>
3. Just in case, jot-down the previous calibration and transformation matrix values. Replace the value 13 with your id value from step 2. You may/may not need to do this. I never did, but then had a lengthy process of trying to recover those values when I got my display into a badly calibrated state. This step also let's me explain what the calibration parameters are and what they affect.</div>
<div>
<br /></div>
<div>
<div>
<b><span style="font-family: "courier new" , "courier" , monospace;">$ xinput list-props <span style="background-color: yellow;">13</span></span></b></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Device 'UC-Logic 19" Tablet Monito':</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Device Enabled (151):<span class="Apple-tab-span" style="white-space: pre;"> </span>1</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span><span style="background-color: lime;">Coordinate Transformation Matrix (153):<span class="Apple-tab-span" style="white-space: pre;"> </span>0.360000, 0.000000, 0.640000, 0.000000, 0.524781, 0.475219, 0.000000, 0.000000, 1.000000</span></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Device Accel Profile (274):<span class="Apple-tab-span" style="white-space: pre;"> </span>0</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Device Accel Constant Deceleration (275):<span class="Apple-tab-span" style="white-space: pre;"> </span>1.000000</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Device Accel Adaptive Deceleration (276):<span class="Apple-tab-span" style="white-space: pre;"> </span>1.000000</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Device Accel Velocity Scaling (277):<span class="Apple-tab-span" style="white-space: pre;"> </span>10.000000</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Device Product ID (268):<span class="Apple-tab-span" style="white-space: pre;"> </span>21827, 71</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Device Node (269):<span class="Apple-tab-span" style="white-space: pre;"> </span>"/dev/input/event6"</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Evdev Axis Inversion (278):<span class="Apple-tab-span" style="white-space: pre;"> </span>0, 0</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span><span style="background-color: lime;">Evdev Axis Calibration (279):<span class="Apple-tab-span" style="white-space: pre;"> </span>-67, 32212, 146, 20332</span></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span><span style="background-color: lime;">Evdev Axes Swap (280):<span class="Apple-tab-span" style="white-space: pre;"> </span>0</span></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Axis Labels (281):<span class="Apple-tab-span" style="white-space: pre;"> </span>"Abs X" (297), "Abs Y" (298), "Abs Pressure" (299)</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Button Labels (282):<span class="Apple-tab-span" style="white-space: pre;"> </span>"Button Left" (154), "Button Middle" (155), "Button Right" (156), "Button Wheel Up" (157), "Button Wheel Down" (158)</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Evdev Scrolling Distance (283):<span class="Apple-tab-span" style="white-space: pre;"> </span>0, 0, 0</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Evdev Middle Button Emulation (284):<span class="Apple-tab-span" style="white-space: pre;"> </span>0</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Evdev Middle Button Timeout (285):<span class="Apple-tab-span" style="white-space: pre;"> </span>50</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Evdev Third Button Emulation (286):<span class="Apple-tab-span" style="white-space: pre;"> </span>0</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Evdev Third Button Emulation Timeout (287):<span class="Apple-tab-span" style="white-space: pre;"> </span>1000</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Evdev Third Button Emulation Button (288):<span class="Apple-tab-span" style="white-space: pre;"> </span>3</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Evdev Third Button Emulation Threshold (289):<span class="Apple-tab-span" style="white-space: pre;"> </span>20</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Evdev Wheel Emulation (290):<span class="Apple-tab-span" style="white-space: pre;"> </span>0</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Evdev Wheel Emulation Axes (291):<span class="Apple-tab-span" style="white-space: pre;"> </span>0, 0, 4, 5</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Evdev Wheel Emulation Inertia (292):<span class="Apple-tab-span" style="white-space: pre;"> </span>10</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Evdev Wheel Emulation Timeout (293):<span class="Apple-tab-span" style="white-space: pre;"> </span>200</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Evdev Wheel Emulation Button (294):<span class="Apple-tab-span" style="white-space: pre;"> </span>4</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Evdev Drag Lock Buttons (295):<span class="Apple-tab-span" style="white-space: pre;"> </span>0</span></div>
</div>
<div>
<br /></div>
<div>
I've highlighted the important lines to jot-down in green above. A quick explanation of each setting:</div>
<div>
<br /></div>
<b>Coordinate Transformation Matrix - </b>This is a 3x3 matrix that creates an affine transformation that warps a rectangular coordinate system to the coordinate system of the display. The transform needs to be changed to match the desktop layout/geometry if this gets updated (e.g., by dragging the display layout around in Settings->Display, changing the aspect ratio, or updating the rotation of the desktop).<br />
<div>
<br />
<div>
<b> Evdev Axis Calibration</b>: This is the calibration value. The settings are written in the order:</div>
<div>
<i>xmin xmax ymin ymax</i></div>
<div>
They control the bounds of the cursor in the x- and y- directions relative to some local coordinate system of the Ugee display. For mine, I roughly figured out that the coordinate system was something like 0 to 32210 for x and 0 to 20330 for y through trial and error. Tweaking the bounds around these values stretches the coordinate system along x and y to fit plane. If the display plane gets shifted from the touch display plane, the shift would be reflected by the lower or higher values.</div>
<div>
<br /></div>
<b>Evdev Axes Swap</b>: I haven't messed with this, but I'm speculating that a non-zero value flips the x- and y- coordinates so that the x-axis becomes the y-axis and vice versa. </div>
<div>
<br />
<div>
4. Turn off all displays except Ugee. From step 1, my Ugee display is DP-1 and my iMac display is DP-2. I need to turn off my iMac display (DP-2) first:</div>
<div>
<br /></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><b> $ xrandr --output DP-2 --off</b></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><b><br /></b></span></div>
<div>
5. Sync the coordinate system with the display. This step automagically populates the "Coordinate Transformation Matrix" values with the right values. Recall from step 1 that my Ugee display name is DP-1. From step 2, the Ugee input ID is 13.</div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><b> $ xinput map-to-output <span style="background-color: yellow;">13</span> <span style="background-color: yellow;">DP-1</span></b></span></div>
<div>
<br /></div>
<div>
You will want to replace the 13 and DP-1 with your values. If you're curious about how this updates the coordinate transformation matrix, feel free to check it out by running the command in step 3, xinput list-props 13</div>
<div>
<br /></div>
<div>
6. Run the calibrator.</div>
<div>
<br /></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><b> $ xinput_calibrator \</b></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><b> --device 13 \</b></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><b> --verbose \</b></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><b> --output-type xorg.conf.d </b></span></div>
<div>
<br /></div>
<div>
This will bring up a gray display with some targets to click on. If you run into issues like I did where tapping a target gets rejected or ignored because the tap is way out of bounds and gets clipped by the screen resolution, it means your display has gotten into a poorly calibrated state. The work around is to input a precalibrated value that is close to the Ugee's calibrated state. I had to figure out what these values were by trial and error. Anyway, you can also just use my calibrated values as well. </div>
<div>
<br /></div>
<div>
# Do this if the last run kept rejecting your taps:</div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><b> $ xinput_calibrator \</b></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><b> --device 13 \</b></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><b> --verbose \</b></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><b> --output-type xorg.conf.d \</b></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><b> --precalib -54 32210 137 20332</b></span><br />
<div>
<br /></div>
</div>
</div>
<div>
Make sure to look at the output. I've highlighted the important part.</div>
<div>
<br /></div>
<div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DEBUG: XInputExtension version is 2.3</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DEBUG: Skipping virtual master devices and devices without axis valuators.</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DEBUG: Selected device: UC-Logic 19" Tablet Monito</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DEBUG: Setting precalibration: -54, 32210, 137, 20332</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DEBUG: Not usbtouchscreen calibrator: Not a usbtouchscreen device</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DEBUG: Read axes swap value of 0.</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DEBUG: Read InvertX=0, InvertY=0.</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Calibrating EVDEV driver for "UC-Logic 19" Tablet Monito" id=13</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>current calibration values (from XInput): min_x=-67, max_x=32212 and min_y=146, max_y=20332</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DEBUG: Found that 'UC-Logic 19" Tablet Monito' is a sysfs name.</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DEBUG: Adding click 0 (X=178, Y=113)</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DEBUG: Adding click 1 (X=1253, Y=115)</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DEBUG: Adding click 2 (X=180, Y=787)</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DEBUG: Adding click 3 (X=1257, Y=790)</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Doing dynamic recalibration:</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Setting calibration data: -74, 32085, 182, 20353</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DEBUG: Successfully applied axis calibration.</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>--> Making the calibration permanent <--</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DEBUG: Found that 'UC-Logic 19" Tablet Monito' is a sysfs name.</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf' (/usr/share/X11/xorg.conf.d/ in some distro's)</span></div>
<div>
<span style="background-color: yellow; font-family: "courier new" , "courier" , monospace; font-size: x-small;">Section "InputClass"</span></div>
<div>
<span style="background-color: yellow; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Identifier<span class="Apple-tab-span" style="white-space: pre;"> </span>"calibration"</span></div>
<div>
<span style="background-color: yellow; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>MatchProduct<span class="Apple-tab-span" style="white-space: pre;"> </span>"UC-Logic 19" Tablet Monito"</span></div>
<div>
<span style="background-color: yellow; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Option<span class="Apple-tab-span" style="white-space: pre;"> </span>"Calibration"<span class="Apple-tab-span" style="white-space: pre;"> </span>"-74 32085 182 20353"</span></div>
<div>
<span style="background-color: yellow; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Option<span class="Apple-tab-span" style="white-space: pre;"> </span>"SwapAxes"<span class="Apple-tab-span" style="white-space: pre;"> </span>"0"</span></div>
<div>
<span style="background-color: yellow; font-family: "courier new" , "courier" , monospace; font-size: x-small;">EndSection</span></div>
</div>
<div>
<br /></div>
<div>
Copy and paste the above highlighted yellow into some scratch file or text editor. If you want to restore the calibration after each reboot, we will need to create a calibration file later on. But first to finish the calibration.</div>
<div>
<br /></div>
<div>
7. Turn on all of the displays you turned off in step 4. I turned off DP-2, so to turn it back on:</div>
<div>
<b style="font-family: 'Courier New', Courier, monospace;"> $ xrandr --output DP-2 --auto</b></div>
<div>
<b style="font-family: 'Courier New', Courier, monospace;"><br /></b></div>
8. Reset the layout of your desktop. I had to rearrange the monitor layouts in Settings->Display so that the layouts are side-by-side instead of overlapping each other.<br />
<div>
<br /></div>
<div>
9. Update and sync the updated coordinate system by repeating step 5: </div>
<div>
<br /></div>
<div>
<b style="font-family: 'Courier New', Courier, monospace;"> $ xinput map-to-output <span style="background-color: yellow;">13</span> <span style="background-color: yellow;">DP-1</span></b></div>
<div>
<b style="font-family: 'Courier New', Courier, monospace;"><span style="background-color: yellow;"><br /></span></b></div>
10. By now, everything should be calibrated. Try out the stylus on the touch display. It should all work out. You may need to run the calibrator a second time if there's still an offset.<br />
<div>
<br /></div>
<div>
11. The remaining steps are to setup Ubuntu such that the calibration is restored on reboot. First, we need to create the file <span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">/usr/share/X11/xorg.conf.d/99-calibration.conf </span>(or if the parent folder doesn't exist, then try creating <span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">/etc/X11/xorg.conf.d/99-calibration.conf </span>). The highlighted output from step 6 goes into the 99-calibration.conf file with some tweaks:</div>
<div>
<br /></div>
<div>
<div>
<span style="background-color: white; font-family: "courier new" , "courier" , monospace; font-size: x-small;">Section "InputClass"</span></div>
<div>
<span style="background-color: white; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Identifier<span class="Apple-tab-span" style="white-space: pre;"> </span>"calibration"</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="background-color: white; white-space: pre;"> </span><span style="background-color: white;">MatchProduct</span><span class="Apple-tab-span" style="background-color: white; white-space: pre;"> </span><span style="background-color: lime;">"UC-Logic 19"</span></span></div>
<div>
<span style="background-color: white; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Option<span class="Apple-tab-span" style="white-space: pre;"> </span>"Calibration"<span class="Apple-tab-span" style="white-space: pre;"> </span>"-74 32085 182 20353"</span></div>
<div>
<span style="background-color: white; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Option<span class="Apple-tab-span" style="white-space: pre;"> </span>"SwapAxes"<span class="Apple-tab-span" style="white-space: pre;"> </span>"0"</span></div>
<div>
<span style="background-color: white; font-family: "courier new" , "courier" , monospace; font-size: x-small;">EndSection</span></div>
</div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
Notice that I've updated the value in green. This step is necessary since " would cause the string to terminate and create errors in the xorg configuration file. Since MatchProduct matches substrings, the new value works (unless you happen to have another input device that contains the string "UC-Logic 19").<br />
<div>
<br /></div>
<div>
12. One more final issue. After rebooting into X11, the coordinate transformation for the input gets reset to the identity matrix. This means you'll need to update the coordinate transformation with the correct value after every reboot. E.g., I could manually run : xinput map-to-output 13 DP-1<br />
after every reboot, but I'm lazy. So, I wrote a script in ~/bin/sync_coordinate_transform.sh with the contents:</div>
<div>
<br /></div>
<div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">#!/bin/sh</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">xinput map-to-output 13 DP-1</span></div>
<div>
<br /></div>
</div>
<div>
<br /></div>
<div>
(Actually, I made mine more generic since I worry the id values and DP values can change. I used the following script instead:</div>
<div>
<br /></div>
<div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">#!/bin/sh</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">get_tablet_input_id() {</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> xinput_calibrator --list | grep "UC-Logic 19" | cut -f2 -d"="</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">get_tablet_display_id() {</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> xrandr | grep "DP" | grep "1440x900" | cut -f1 -d" "</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">INPUT_ID="$(get_tablet_input_id)"</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DISPLAY_ID="$(get_tablet_display_id)"</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">xinput map-to-output "${INPUT_ID}" "${DISPLAY_ID}"</span></div>
</div>
<div>
<br /></div>
<div>
<br /></div>
And then added this script to Startup Applications:<br />
<div>
$ gnome-session-properties</div>
<div>
<br /></div>
<div>
<b>Name</b>: Calibrate touchscreen</div>
<div>
<b>Command</b>: ~/bin/sync_coordinate_transform.sh</div>
<div>
<br />
<div>
=====================================================</div>
</div>
<div>
<br /></div>
<div>
That's it. Also, if you're lazy and want to try out my automated script of grabbing the display and input ids automatically and running xinput_calibrator, I did try and write one. It may/may not parse properly, but you can always tweak it. You'll still need to do the restore calibration part manually. You can name this file <b>calibrate_touch.sh</b>:</div>
<div>
<br /></div>
<div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">#!/bin/bash</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">get_connected_display_ids() {</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> xrandr | grep " connected" | cut -f1 -d" " | tr "\n" " "</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">get_tablet_display_id() {</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> xrandr | grep "DP" | grep "1440x900" | cut -f1 -d" "</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">get_tablet_input_id() {</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> xinput_calibrator --list | grep "UC-Logic 19" | cut -f2 -d"="</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">turnoff() {</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> id="${1}"</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> xrandr --output "${id}" --off</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">turnon() {</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> id="${1}"</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> xrandr --output "${id}" --auto</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">CONNECTED_IDS="$(get_connected_display_ids)"</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DISPLAY_ID="$(get_tablet_display_id)"</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">INPUT_ID="$(get_tablet_input_id)"</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"># Power off other displays</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">for id in ${CONNECTED_IDS}; do</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> if [ "${id}" != "${DISPLAY_ID}" ]; then</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> turnoff "${id}"</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> fi</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">done</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">xinput map-to-output "${INPUT_ID}" "${DISPLAY_ID}"</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">xinput_calibrator \</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> --device ${INPUT_ID} \</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> --verbose \</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> --output-type xorg.conf.d \</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> --precalib -54 32210 137 20332</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"># Power on other displays</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">for id in ${CONNECTED_IDS}; do</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> if [ "${id}" != "${DISPLAY_ID}" ]; then</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> turnon "${id}"</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> fi</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">done</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">xinput map-to-output "${INPUT_ID}" "${DISPLAY_ID}"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">[Updated 2016-06-04]</span><br />
<b style="font-family: "courier new", courier, monospace;">Getting Right Click to work</b><br />
<b style="font-family: "courier new", courier, monospace; font-size: x-large;"><br /></b>
If you're like me and you need to remap the stylus buttons, do the following:<br />
<br />
Create the following file /usr/share/X11/xorg.conf.d/52-tablet.conf with the following contents:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">Section "InputClass"</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Identifier "Graphics tablet mouse"</span><br />
<span style="font-family: Courier New, Courier, monospace;"> MatchIsPointer "on"</span><br />
<span style="font-family: Courier New, Courier, monospace;"> MatchProduct "UC-Logic 19"</span><br />
<span style="font-family: Courier New, Courier, monospace;"> MatchDevicePath "/dev/input/event*"</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Driver "evdev"</span><br />
<span style="font-family: Courier New, Courier, monospace;"> # Apply custom Options below.</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">EndSection</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">Section "InputClass"</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Identifier "Graphics tablet pen"</span><br />
<span style="font-family: Courier New, Courier, monospace;"> MatchIsTablet "on"</span><br />
<span style="font-family: Courier New, Courier, monospace;"> MatchProduct "UC-Logic 19"</span><br />
<span style="font-family: Courier New, Courier, monospace;"> MatchDevicePath "/dev/input/event*"</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Driver "evdev"</span><br />
<span style="font-family: Courier New, Courier, monospace;"> # Apply custom Options below.</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Option "ButtonMapping" "1 3 2"</span><br />
<span style="font-family: Courier New, Courier, monospace;">EndSection</span><br />
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b><br /></b></span>
<span style="font-family: inherit;">You'll need to experiment with the ordering of the ButtonMapping numbers to get the desired mapping.</span></div>
</div>
<div>
<br /></div>
Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-4205744040671980186.post-91193981255095500852015-12-18T23:37:00.002-08:002015-12-18T23:37:16.981-08:00Charles Schwab finally updates their password policy increasing limit to 238 charactersI just found out today that Charles Schwab updated their password policy some time in September/October. Passwords are now 6-238 characters in length and according to customer service, their passwords now allow symbols. It's also case sensitive (I tested this).<br />
<br />
If you haven't updated your password recently, better do so soon. 8 character passwords are just too weak.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-41917575385410219252015-06-18T23:51:00.000-07:002015-06-18T23:51:08.012-07:00Silicon Valley and the "Nouveau" poor<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfQsOTS3FPYyo3UQAuX4k7PdTGBhU6aYoJ1XVxZRKF5N8oe2oAdsz6laEPLM7QU7GMPI6H_93VfIdr3moLJbm4bB-LJU9wA2bKSi4H0WamoayQPl6BtzaPcrTZLm2_ixxpgXrHDHpMXA0/s1600/nouveau_poor.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfQsOTS3FPYyo3UQAuX4k7PdTGBhU6aYoJ1XVxZRKF5N8oe2oAdsz6laEPLM7QU7GMPI6H_93VfIdr3moLJbm4bB-LJU9wA2bKSi4H0WamoayQPl6BtzaPcrTZLm2_ixxpgXrHDHpMXA0/s640/nouveau_poor.jpg" width="640" /></a></div>
<br />
<br />
In recent months, the rent in Silicon Valley has been sky rocketing, and so much so that the frequency of people I see camping out at highway exits asking for money has increased.<br />
<br />
As comical as it seems seeing someone browsing the web with an iPhone, wearing Nike shoes camping out at one of these exits asking for money, it's sad to say that the rising rents really has had a negative impact adding much economic burden to renters who earn less than $90k/year. As of now, a 2 bedroom apartment in Santa Clara is around $2500/mo. A 1 bedroom apartment is about $2000/mo.<br />
<br />
The majority of hard-working folks have moved far far out -- many having at least 2-3 hours worth of commute time to their jobs in Silicon Valley, and many picking up extra jobs or spending extra time in classrooms trying to pickup new skill sets in hopes of a better paying job. There's also quite a number of individuals that decide to stay, but remain in a helpless state and depend on the public to provide a handout.<br />
<br />
And so, the comical vagrant with an iPhone and brand new shoes represents a much deeper economic issue that's been surfacing in Silicon Valley. Would I donate money to such a person if I see one? Probably not. They can do a better job with financial planning, and spend their time looking for better jobs or learning new skill sets, as many others do.<br />
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-19387720383071473942015-06-14T23:35:00.003-07:002015-06-21T23:56:50.730-07:00Tips for making SketchBook Pro (desktop) more pleasant to use on Surface 3As much as I like the Sketchable app on Surface 3, I still miss the full functionality available in Sketchbook Pro. The main annoyances of using Sketchbook Pro on Surface 3 are:<br />
<ul>
<li>accidental palm touches messing up my drawings</li>
<li>desktop windows layout takes up lots of spaces</li>
</ul>
So, here are my notes on attempting to address the above issues:<br />
<h3>
Fixing Window Clutter issue and making layout more like a Windows 8 app</h3>
<div>
Shortcut key: "Crtl + Alt + J"</div>
<div>
<br /></div>
<div>
This is one of the easiest annoyances to solve. For some reason, there isn't a "full-screen" option available in the menu, but there seems to be a shortcut key for it: "Crtl + Alt + J". This makes Sketchbook Pro look like a Windows 8 app.</div>
<div>
<br />
[Below updated: 6/21/2015 - Figured out how to automatically disable touch when Sketchbook Pro window active]</div>
<h3>
Enabling/Disabling Touch on Surface 3</h3>
<div>
This <a href="http://www.autohotkey.com/board/topic/101948-device-touchscreen-disablerenabler/"><span style="color: #3d85c6;">article</span></a> and this <a href="http://www.lovemysurface.net/surface-pro-3-purple-button/"><span style="color: #3d85c6;">post</span></a> inspired me to do something similar with additional tweaks and a workaround to suppress the UAC permissions message. My current setup is that:<br />
<br />
- When sketchbook pro window is active, touch is disabled.<br />
- When sketchbook pro window is not active (even when computer is put to sleep and back on), touch is enabled.<br />
- Pressing the top button once on the stylus once toggles touch between full screen and window mode.<br />
<br />
Here's my set of notes getting the above to work with additional details specific to my setup:<br />
<br />
1. Download and install <a href="http://www.nirsoft.net/utils/devmanview-x64.zip"><span style="color: #3d85c6;">DevManView</span></a>. You'll need to copy the executable and chm file to C:\Windows\System32 . Note: You may need to right click on the .exe file, select properties and click on Unblock if the executable doesn't run.<br />
<br />
2. Download and install <a href="http://www.autohotkey.com/"><span style="color: #3d85c6;">AutoHotKey</span></a>. I am beginning to realize how powerful this utility is. It's a must have if you're serious about customizing your Surface 3.<br />
<br />
3. To disable UAC from asking you for Administrative privileges, you'll need to follow the instructions <a href="http://www.makeuseof.com/tag/stop-annoying-uac-prompts-how-to-create-a-user-account-control-whitelist-windows/">here</a>. Here are the specific steps to take (but no pretty pictures):<br />
- Launch task scheduler. Press and release flag key. Type "schedule tasks" to search for it.<br />
- In task scheduler, expand the Task Scheduler Library folder tree. Right click on Task Scheduler Library folder and select "New Folder". Name the new folder: <b><span style="font-family: Courier New, Courier, monospace;">Custom</span></b><br />
- Select Custom folder. Right click on folder and select "Create Task". Fill out the following:<br />
Under General tab:<br />
Name: <span style="font-family: Courier New, Courier, monospace;"><b>DisableTouch</b></span><br />
Run only when user is logged on.<br />
Checked on: "Run with highest privileges"<br />
Checked on: "Hidden"<br />
Configure for "Windows 8.1"<br />
Under Actions tab:<br />
Click "New..."<br />
Action: Start a program<br />
Program/script: <b><span style="font-family: Courier New, Courier, monospace;">C:\Windows\System32\DevManView.exe</span></b><br />
Add arguments: <b><span style="font-family: Courier New, Courier, monospace;">/disable "HID-compliant touch screen"</span></b><br />
<span style="font-family: inherit;"> Click OK</span><br />
<span style="font-family: inherit;"> Under Conditions tab:</span><br />
<span style="font-family: inherit;"> Uncheck everything</span><br />
<span style="font-family: inherit;"> Under Settings tab:</span><br />
<span style="font-family: inherit;"> Checked on: "Allow task to be run on demand."</span><br />
<span style="font-family: inherit;"> Checked on: "Stop the task if it runs longer than:". Fill in: </span><b><span style="font-family: Courier New, Courier, monospace;">10 seconds</span></b><br />
<span style="font-family: inherit;"> Checked on: "If the running task does not end when requested, force it to stop"</span><br />
<span style="font-family: inherit;"> Drop down menu at bottom: "Stop the existing instance"</span><br />
<span style="font-family: inherit;"> Everything else is unchecked.</span><br />
<span style="font-family: inherit;"> Click OK</span><br />
<span style="font-family: inherit;"> - Repeat the above Create Task process but with the following differences:</span><br />
<span style="font-family: inherit;"> Name: </span><b><span style="font-family: Courier New, Courier, monospace;">EnableTouch</span></b><br />
Program/script: <b><span style="font-family: Courier New, Courier, monospace;">C:\Windows\System32\DevManView.exe</span></b><br />
Add arguments: <b><span style="font-family: Courier New, Courier, monospace;">/enable "HID-compliant touch screen"</span></b><br />
<div>
<br /></div>
<div>
4. Now for the easy part. Create a file (and name it however you want, but make sure it has a .ahk extension. Mine is "SketchbookTweaks.ahk"). Copy and paste the following content:</div>
<div>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">#Persistent</span><br />
<span style="font-family: Courier New, Courier, monospace;">disabled := 0</span><br />
<span style="font-family: Courier New, Courier, monospace;">SetTimer, disableTouch, 500</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">#IfWinActive ahk_exe SketchBookPro.exe</span><br />
<span style="font-family: Courier New, Courier, monospace;">#F20::</span><br />
<span style="font-family: Courier New, Courier, monospace;">Send {Ctrl Down}{Alt Down}j{Alt Up}{Ctrl Up}</span><br />
<span style="font-family: Courier New, Courier, monospace;">return</span><br />
<span style="font-family: Courier New, Courier, monospace;">#IfWinActive</span><br />
<span style="font-family: Courier New, Courier, monospace;">return</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">disableTouch:</span><br />
<span style="font-family: Courier New, Courier, monospace;"> If WinActive("ahk_exe SketchBookPro.exe") </span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>{</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>if (disabled = 0) {</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span> disabled := 1</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span> Run, C:\Windows\System32\schtasks.exe /RUN /TN "\Custom\DisableTouch", Hide, cmdPid</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span> }</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>WinWaitClose ahk_pid %cmdPid%</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>WinWaitNotActive ahk_exe SketchBookPro.exe</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>return</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>} else {</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>if (disabled = 1) {</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span> disabled := 0</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span> Run, C:\Windows\System32\schtasks.exe /RUN /TN "\Custom\EnableTouch", Hide, cmdPid</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>WinWaitClose ahk_pid %cmdPid%</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>WinWaitActive ahk_exe SketchBookPro.exe</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>return</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br />
<span class="Apple-tab-span" style="font-size: x-small; white-space: pre;"> </span></div>
<div>
5. Run the script and test it out. If you want it to autostart, Flag+R and type:<br />
%appdata%\Windows\Start Menu\Programs\Startup<br />
Create a shortcut link to your AHK file in there.<br />
<br />
Now I can draw without accidental palm touches.<br />
<br />
<b>Tip:</b><br />
If you need to zoom in and out, I learned the fastest way to do this is to hold the upper side button on the stylus, and click on the canvas. This will trigger the tool wheel. You can use the up gesture to trigger the zoom/pan/rotate tool (i.e., hold upper side button on stylus and draw a short line up, then let go). With the zoom/pan/rotate tool, you can quickly use the stylus to zoom/rotate/pan as desired. No more need for touch.<br />
<br /></div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-60732618098231538662015-05-31T22:57:00.003-07:002016-02-15T09:21:16.798-08:00Fun with art on Surface 3 - Sketchable vs ArtRage vs Sketchbook Pro (desktop) vs other alternatives<div class="separator" style="clear: both; text-align: left;">
Microsoft's Surface 3 has made drawing fun again. I've been experimenting more and more with cartoon sketches and getting back into the hobby of drawing and sketching cartoons again. I've been experimenting with several software available for Window and have made a few purchases here and there. I've found that any sketching software I use has to support the ability to draw layers.. without that option, it's almost impossible to sketch in guidelines. So here's what I've tried so far:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ol>
<li>Sketchable by Silicon Blenders - this is by far my favorite software. It is slightly expensive as an app, but it is intuitive to use. It supports limited number of layers and has the basic tools I need. It provides the ability to disable touch and makes use of the buttons on the Surface pen. Among all of the different drawing apps I've tried out, it has the lowest pen-to-screen latency. This makes drawing feel natural and almost paper-like. Missing features are: inability to select and cut/copy portions of sketches into different layers, paint flood tool to simplify coloring, and limitation of 12 color wells. It's great for sketching but slightly more rudimentary when it comes to coloring in sketches. The user interface is designed very well making the app enjoyable to use. Here are some example sketches I put together in 30 minutes each from Sketchable:</li>
</ol>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj69KeLCdJSqhlRs4Za3JKRAWGgX2Rs9MTx6v-4zB5LkRgBYcOMZ1cy08htQvpcthZ-n3W6CkUkvDsiZQIlUvD1C8UxUj5BuPNxftfuKJfm0BS_8QoRBwmtdxa741Rkk4FYYHP16quEhU0/s1600/sketchable_girl.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj69KeLCdJSqhlRs4Za3JKRAWGgX2Rs9MTx6v-4zB5LkRgBYcOMZ1cy08htQvpcthZ-n3W6CkUkvDsiZQIlUvD1C8UxUj5BuPNxftfuKJfm0BS_8QoRBwmtdxa741Rkk4FYYHP16quEhU0/s320/sketchable_girl.png" width="115" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs1p_EaaVx55ged8kozdmqVnphHMVTwRmBxoKQkfrfmjEsltTFgQfCPuecsx_pnBHKrrjwaHwmqrU7p2Gyks8Ec-Peg73T2fJjyhaKVCSkXUsOE8yN573YUCvIf7C2AYOeiYEtxLeQDhQ/s1600/sketchable_yoga.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs1p_EaaVx55ged8kozdmqVnphHMVTwRmBxoKQkfrfmjEsltTFgQfCPuecsx_pnBHKrrjwaHwmqrU7p2Gyks8Ec-Peg73T2fJjyhaKVCSkXUsOE8yN573YUCvIf7C2AYOeiYEtxLeQDhQ/s320/sketchable_yoga.png" width="214" /></a><br />
<br />
<br />
<div>
<br /></div>
<div>
2. ArtRage by Ambient Design - I regret buying this app. The pen-to-screen latency is so bad that it feels sluggish to draw. Even turning off the "smoothing" feature on the pen doesn't fix it. I couldn't find any settings to disable touch drawing, but palm detection seems to be pretty good. The toolset is more complete than Sketchable, but the user interface is not designed well. You have to go through a drop down menu to delete a layer, for example. I found the pen-to-screen latency to be the most frustrating thing that I couldn't bear to finish a sketch in the app.</div>
<div>
<br /></div>
<div>
3. Autodesk Sketchbook Pro (desktop version): This is by far my favorite sketch program and is the most well-thought out and feature-complete product. However, it works well on desktop with a Wacom tablet, but not as well on a Surface 3. It lacks palm detection leaving me drawing stray marks accidentally, and the windows feel squashed on a Surface 3 display [update: figured out a workaround described <a href="http://www.rayjuang.com/2015/06/tips-for-using-sketchbook-pro-with.html">here</a>]. The sketchbook app through Microsoft Store is terrible and lacking of most of the features I desire (not to mention the forced annual subscription for a majority of the tools), so I've stuck to the desktop version. Some sketches I've made via Sketchbook Pro (desktop version) on Surface 3:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyp6bREsYiW8D-f-FWtEnSbsmG3KHvJ6XDv6EPaB-jJCsSXpJsgR8t74kJVMqZObJmoVPfub359fyH9aHyq4Kks8fEByN_ZV646SgfLIb9_MaqpGym3FF0Ayo9SCwxofjora3dZTyzEWg/s1600/Image002.tif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyp6bREsYiW8D-f-FWtEnSbsmG3KHvJ6XDv6EPaB-jJCsSXpJsgR8t74kJVMqZObJmoVPfub359fyH9aHyq4Kks8fEByN_ZV646SgfLIb9_MaqpGym3FF0Ayo9SCwxofjora3dZTyzEWg/s320/Image002.tif" width="237" /></a></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLWpqwlYOwkiVYAhBv2tlu_uWajleB5mO9rycZGbM4BePtfQgXAypHnv4MDM_cvmj9FXBqY11dXvDCDaLctWrJMe9BnrWp68IDgPIyBGNzLUwrpNYkDpgmuxB_GuTl2N-GlUQ6Ygr3AvY/s1600/sketchbook_pro.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLWpqwlYOwkiVYAhBv2tlu_uWajleB5mO9rycZGbM4BePtfQgXAypHnv4MDM_cvmj9FXBqY11dXvDCDaLctWrJMe9BnrWp68IDgPIyBGNzLUwrpNYkDpgmuxB_GuTl2N-GlUQ6Ygr3AvY/s320/sketchbook_pro.png" width="209" /></a><br />
<br />
<br />
[Updated 6/21/2015 to include other apps/programs I've tried]<br />
<br />
4. Manga Studio 5 - I've only tried out the trial version and I do like the desktop app very much. They seem to integrate touch nicely. They have a nice set of tools that's more feature complete than Sketchbook. I would probably use this over Sketchbook Pro; however, my only rant with the application is that zooming in/out and rotating the canvas is janky and unbearably slow on a Surface 3. This is the only thing that's holding me back from upgrading to the full version.<br />
<br />
5. Made With Mischief - I've only tried the trial version for this as well. This is also a nice tool that is very intuitive to use. However, it's lacking in a lot of tools and is not very customizable. Sketchable is a better alternative than this app.<br />
<br />
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-55696936607913510752015-05-15T00:35:00.002-07:002015-05-15T00:40:23.145-07:00Surface 3I have no brand loyalty when it comes to devices. My home makes me look like an Apple/Android fanboy. I recently bought a Surface 3 and it is a probably one of the most enjoyable (not to mention expensive) devices to draw, take notes, and read with. It's frustrating to do any form of coding on the device because of the screen size. Though, I have found launching iPython in a browser suitable since I can change the browser screen font. I still haven't made use of the device as a development platform yet since I can't stand anything but a bash shell.<br />
<br />
So, here's a brief summary of what I think about Surface 3:<br />
<br />
<b>Pros</b><br />
<ul>
<li>Great for drawing/sketching/art and taking notes. The stylus is extremely responsive and OneNote integration is just awesome. It has a very low latency in terms of when the stylus is placed at point (x,y) and when graphics are drawn for that location.</li>
<li>OneNote -- probably my favorite app of all things on the tablet. I probably spend more time with this app than any other app. It is great for taking notes, typing, drawing diagrams, drawing cartoons, etc. Palm rejection is awesome on this.</li>
<li>Runs any Windows desktop application. I can install and run iPython on the tablet and do some scripting/analysis.</li>
<li>Keyboard automatically disables when flipped back. Unlike the Nexus 9 keyboards, you won't accidentally press keys when you fold back the keyboard cover.</li>
<li>Battery life is awesome. I've gotten through the day with the device. Though, can't say the same if I play videos/games.</li>
</ul>
<div>
<b>Cons</b></div>
<div>
<ul>
<li>Screen size sucks. It's very hard to read text for Windows applications that don't conform to display font settings (e.g. Line).</li>
<li>Processing power is underwhelming. It's not great for doing heavy computation and sometimes a bit sluggish.</li>
<li>Limited Apps. Even for drawing, there's limited number of apps available for drawing. Sketchbook is terrible through the Windows App store. Though, Sketchbook Pro from the native desktop application will run. It just has no palm rejection.</li>
<li>Lack of palm rejection for desktop windows applications.</li>
</ul>
<div>
<br /></div>
</div>
<div>
So, in terms of use cases, I found it to be my favorite device for reading research papers (PDF annotation is awesome), taking notes, doing quick scribbles, and drawing cartoons. It's good for browsing the web and watching movies too, though Microsoft's poor history of developing a secure platform has made me somewhat wary of making this a network device -- despite an improved kernel security model since Windows 7. I'll wait for Windows 10 before I make additional judgements about the security of the device.</div>
<div>
<br /></div>
<div>
I recently gave up my Intuous Pro tablet in favor of this device. It's an awesome device for drawing (I use Sketchbook Pro desktop application). I haven't found any other good use cases for the device except for drawing, reading, note-taking, and the occasional iPython scripting.</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-737914777249238542015-04-30T23:14:00.001-07:002015-04-30T23:14:29.940-07:00Fun with LuaSpent a few days learning Lua.... and oh what fun it is to discover project Moonshine and <a href="https://github.com/TannerRogalsky/punchdrunk">punchdrunk</a> which will compile lua code to javascript :)<br />
So, a first stab at creating an asteroid field:<br />
<div>
<br /></div>
<div>
<br /></div>
<iframe height="480" src="https://hkn.eecs.berkeley.edu/~rayver/asteroids/" width="640"></iframe><br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-83716303415470397532015-01-20T22:43:00.001-08:002015-01-20T23:00:48.917-08:002012 IRS Income StatsJust for fun, I thought I'd play around with some of the IRS income data made available via the <a href="http://www.irs.gov/uac/SOI-Tax-Stats-Individual-Income-Tax-Statistics-ZIP-Code-Data-%28SOI%29">IRS website</a>. In case you want to experiment with the data yourself, note that starting from 2011 and onwards, all monetary values in the csv and xls files are reported in "thousands of dollars". The scale was mentioned in the excel files, but not the csv files.<br />
<br />
I'll update this post as I get to dig around some more, but here are some quick stats:<br />
<br />
For 2012, zipcodes with the lowest average AGI (reported in dollars). N1 = number of returns.<br />
<br />
<table border="1" class="dataframe"><thead>
<tr style="text-align: right;"> <th></th> <th>N1</th> <th>AVERAGE_AGI</th> </tr>
<tr> <th>zipcode</th> <th></th> <th></th> </tr>
</thead> <tbody>
<tr> <th>47406</th> <td>150</td> <td>9860.000000</td> </tr>
<tr> <th>64147</th> <td>200</td> <td>12320.000000</td> </tr>
<tr> <th>84112</th> <td>300</td> <td>16823.333333</td> </tr>
<tr> <th>38126</th> <td>2280</td> <td>17239.912281</td> </tr>
<tr> <th>45225</th> <td>3020</td> <td>17705.298013</td> </tr>
<tr> <th>16802</th> <td>190</td> <td>17710.526316</td> </tr>
<tr> <th>37916</th> <td>1090</td> <td>18038.532110</td> </tr>
<tr> <th>57794</th> <td>110</td> <td>18454.545455</td> </tr>
<tr> <th>16501</th> <td>470</td> <td>18510.638298</td> </tr>
<tr> <th>39203</th> <td>2320</td> <td>18653.017241</td> </tr>
</tbody> </table>
<br />
Zipcode lookup:<br />
<br />
47406 - Bloomington, IN<br />
64147 - Kansas City, MO<br />
84112 - Salt Lake City, UT<br />
38126 - Memphis, TN<br />
45225 - Cincinnati, OH<br />
16802 - University Park, PA<br />
37916 - Knoxville, TN<br />
57794 - Wounded Knee, SD<br />
16501 - Erie, PA<br />
39203 - Jackson, MS<br />
<br />
<div>
Zipcodes with highest average AGI:</div>
<div>
<table border="1" class="dataframe"><thead>
<tr style="text-align: right;"> <th></th> <th>N1</th> <th>AVERAGE_AGI</th> </tr>
<tr> <th>zipcode</th> <th></th> <th></th> </tr>
</thead> <tbody>
<tr> <th>33109</th> <td>250</td> <td>2694776.000000</td> </tr>
<tr> <th>94027</th> <td>3220</td> <td>1464534.161491</td> </tr>
<tr> <th>19035</th> <td>2040</td> <td>1052018.627451</td> </tr>
<tr> <th>10005</th> <td>5580</td> <td>983553.942652</td> </tr>
<tr> <th>33480</th> <td>5580</td> <td>966673.476703</td> </tr>
<tr> <th>94301</th> <td>8490</td> <td>961332.037691</td> </tr>
<tr> <th>11765</th> <td>320</td> <td>937793.750000</td> </tr>
<tr> <th>10577</th> <td>1520</td> <td>897457.236842</td> </tr>
<tr> <th>89451</th> <td>2280</td> <td>885803.070175</td> </tr>
<tr> <th>90067</th> <td>3250</td> <td>856955.384615</td> </tr>
</tbody> </table>
<br />
Zipcode lookup:<br />
<br />
33109 - Miami Beach, FL (Fisher Island)<br />
94027 - Atherton, CA<br />
19035 - Gladwyne, PA<br />
10005 - New York, NY (near Wall St.)<br />
33480 - Palm Beach, FL<br />
94301 - Palo Alto, CA<br />
11765 - Mill Neck, NY<br />
10577 - Purchase, NY<br />
89451 - Incline Village, NV<br />
90067 - Los Angeles, CA<br />
<br />
<br />
<br />
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-79432639949440029442014-12-26T09:51:00.003-08:002014-12-26T10:22:15.789-08:00Simple Hack for Dyson DC65 on Thick CarpetAfter reading many recommendations and reviews, I finally decided to buy a Dyson DC65 Animal Complete. It worked well when I was living in an older apartment where carpeting wasn't fluffy. But, after moving to a new location with thick carpeting, it suddenly became difficult to move. The vacuum would actually suck in the carpet and get stuck to the floor. The suction was too strong that the vacuum became difficult to move.<br />
<br />
I called Dyson technical support and they suggested I remove the rope seal on the inside of the vacuum head. That didn't help. More research on YouTube revealed another man's solution which was to drill holes in the vacuum plate on the bottom. I didn't want to do that since it seemed too destructive. Dyson also claimed it would void their warranty.<br />
<br />
Anyway, I finally figured out a really easy solution. This solved all my problems. Take a rubber band and just put in on one side of the vacuum. The rubber band will lift up the bottom plate allowing for air to flow in.<br />
<br />
Picture below:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc5wzVg32VJYf6AGR-gQsrM_3m7lRdCWxD24S71bXVMHO-oeMJlb48t2HVo82-ddkkB1CDWQRZ-u5XNTMXDNiqxA9lSvYifqlRIKIc5D4iY3tttkn1qbDgm5pYUDfDvNtVqXladFTna2s/s1600/IMG_20141226_094303.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc5wzVg32VJYf6AGR-gQsrM_3m7lRdCWxD24S71bXVMHO-oeMJlb48t2HVo82-ddkkB1CDWQRZ-u5XNTMXDNiqxA9lSvYifqlRIKIc5D4iY3tttkn1qbDgm5pYUDfDvNtVqXladFTna2s/s1600/IMG_20141226_094303.jpg" height="640" width="472" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-4205744040671980186.post-36998741547426257852014-12-11T18:59:00.001-08:002014-12-11T18:59:22.362-08:00iMac randomly wakes up and how to fix itMy iMac randomly wakes up. I never noticed it until DropCam caught it in action. How do you resolve this? This forum <a href="http://forums.macrumors.com/showthread.php?t=1529750">thread</a> helped. These are notes for myself so that I remember what to do whenever I update OS X to a new version.<br />
<br />
1. Goto Settings. Click on "Energy Saver".<br />
2. Make sure "Wake for network access" is unchecked.<br />
3. Make sure "Enable Power Nap" is unchecked.<br />
4. Bring up Terminal. If you don't know how to do this, click the Spotlight Search icon (magnifying glass in upper right corner of desktop), and type "Terminal" (without the quotes). Open the Terminal app.<br />
<br />
5. Inside Terminal, type the following command to determine how often your computer wakes.<br />
pmset -g log | grep Wake<br />
<br />
This command will print how often your Mac has woken up and for what reasons. It will list all of the times your Mac has woken up. Mine said the following:<br />
<br />
<div class="p1">
<span style="color: #444444; font-size: xx-small;">...</span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 09:07:01 -0800 DarkWake <span class="Apple-tab-span"> </span>DarkWake [CDN] due to RTC/Maintenance: Using AC <span class="Apple-tab-span"> </span>46 secs </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 09:07:01 -0800 Kernel Client Acks <span class="Apple-tab-span"> </span>Delays to Wake notifications: [BNBMouseDevice driver is slow(msg: SetState to 1)(310 ms)] [AppleBluetoothHIDKeyboard driver is slow(msg: SetState to 1)(310 ms)] [en0 driver is slow(msg: DidChangeState to 2)(716 ms)] [AppleAHCIDiskQueueManager driver is slow(msg: SetState to 3)(5190 ms)] </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 09:07:49 -0800 Wake Requests <span class="Apple-tab-span"> </span>[*proc=discoveryd request=Maintenance inDelta=6478] </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 10:55:52 -0800 DarkWake <span class="Apple-tab-span"> </span>DarkWake [CDN] due to RTC/Maintenance: Using AC <span class="Apple-tab-span"> </span>45 secs </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 10:55:52 -0800 Kernel Client Acks <span class="Apple-tab-span"> </span>Delays to Wake notifications: [AppleBluetoothHIDKeyboard driver is slow(msg: SetState to 1)(372 ms)] [BNBMouseDevice driver is slow(msg: SetState to 1)(373 ms)] [en0 driver is slow(msg: DidChangeState to 2)(716 ms)] [AppleAHCIDiskQueueManager driver is slow(msg: SetState to 3)(5207 ms)] </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 10:56:39 -0800 Wake Requests <span class="Apple-tab-span"> </span>[*proc=discoveryd request=Maintenance inDelta=6478] </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 12:44:42 -0800 DarkWake <span class="Apple-tab-span"> </span>DarkWake [CDN] due to RTC/Maintenance: Using AC <span class="Apple-tab-span"> </span>45 secs </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 12:44:42 -0800 Kernel Client Acks <span class="Apple-tab-span"> </span>Delays to Wake notifications: [BNBMouseDevice driver is slow(msg: SetState to 1)(308 ms)] [AppleBluetoothHIDKeyboard driver is slow(msg: SetState to 1)(308 ms)] [en0 driver is slow(msg: DidChangeState to 2)(715 ms)] [AppleAHCIDiskQueueManager driver is slow(msg: SetState to 3)(5183 ms)] </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 12:45:29 -0800 Wake Requests <span class="Apple-tab-span"> </span>[*proc=discoveryd request=Maintenance inDelta=6478] </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 14:33:32 -0800 DarkWake <span class="Apple-tab-span"> </span>DarkWake [CDN] due to RTC/Maintenance: Using AC <span class="Apple-tab-span"> </span>45 secs </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 14:33:32 -0800 Kernel Client Acks <span class="Apple-tab-span"> </span>Delays to Wake notifications: [BNBMouseDevice driver is slow(msg: SetState to 1)(342 ms)] [AppleBluetoothHIDKeyboard driver is slow(msg: SetState to 1)(342 ms)] [en0 driver is slow(msg: DidChangeState to 2)(714 ms)] [AppleIntelAzulController driver is slow(msg: SetState to 2)(1056 ms)] [AppleAHCIDiskQueueManager driver is slow(msg: SetState to 3)(5191 ms)] </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 14:34:19 -0800 Wake Requests <span class="Apple-tab-span"> </span>[*proc=discoveryd request=Maintenance inDelta=6478] </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 16:22:22 -0800 DarkWake <span class="Apple-tab-span"> </span>DarkWake [CDN] due to RTC/Maintenance: Using AC <span class="Apple-tab-span"> </span>46 secs </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 16:22:22 -0800 Kernel Client Acks <span class="Apple-tab-span"> </span>Delays to Wake notifications: [en0 driver is slow(msg: DidChangeState to 2)(715 ms)] [AppleAHCIDiskQueueManager driver is slow(msg: SetState to 3)(5188 ms)] </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 16:23:10 -0800 Wake Requests <span class="Apple-tab-span"> </span>[*proc=discoveryd request=Maintenance inDelta=6478] </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 18:11:13 -0800 DarkWake <span class="Apple-tab-span"> </span>DarkWake [CDN] due to RTC/Maintenance: Using AC <span class="Apple-tab-span"> </span>45 secs </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 18:11:13 -0800 Kernel Client Acks <span class="Apple-tab-span"> </span>Delays to Wake notifications: [en0 driver is slow(msg: DidChangeState to 2)(716 ms)] [AppleAHCIDiskQueueManager driver is slow(msg: SetState to 3)(5174 ms)] </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 18:12:00 -0800 Wake Requests <span class="Apple-tab-span"> </span>[*proc=discoveryd request=Maintenance inDelta=6478] </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 18:43:01 -0800 Wake <span class="Apple-tab-span"> </span>Wake [CDNVA] due to XHC1/HID Activity: Using AC <span class="Apple-tab-span"> </span> </span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">2014-12-11 18:43:01 -0800 Kernel Client Acks <span class="Apple-tab-span"> </span>Delays to Wake notifications: [AppleHDADriver driver is slow(msg: SetState to 1)(405 ms)] [en0 driver is slow(msg: DidChangeState to 2)(704 ms)] [AppleHDADriver driver is slow(msg: SetState to 1)(468 ms)] [AppleAHCIDiskQueueManager driver is slow(msg: SetState to 3)(5184 ms)] </span></span></div>
<br />
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">Total Sleep/Wakes since boot at 2014-12-09 21:04:10 -0800 :26</span></span></div>
<span style="color: #444444; font-size: xx-small;"><br /></span>
<span style="color: #444444;">This also explains why my wireless keyboard and mouse batteries keep dying so quickly. </span><br />
<span style="color: #444444;"><br /></span>
<span style="color: #444444;">6. Check your power management settings. In Terminal, type the following:</span><br />
<span style="color: #444444;"><br /></span>
<span style="color: #444444;"> pmset -g</span><br />
<span style="color: #444444;"><br /></span>
<span style="color: #444444;">This command prints the current power management settings:</span><br />
<span style="color: #444444;"><br /></span>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">Active Profiles:</span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">AC Power<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>-1*</span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;">Currently in use:</span></span></div>
<div class="p1">
<span class="s1" style="background-color: yellow;"><span style="color: #444444; font-size: xx-small;"><b> standby 0</b></span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;"> Sleep On Power Button 1</span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;"> womp 0</span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;"> halfdim 1</span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;"> hibernatefile /var/vm/sleepimage</span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;"> darkwakes 0</span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;"> autorestart 0</span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;"> networkoversleep 0</span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;"> disksleep 10</span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;"> sleep 1 (sleep prevented by nsurlsessiond, nsurlsessiond, nsurlsessiond, storeassetd, storeassetd)</span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;"> autopoweroffdelay 14400</span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;"> hibernatemode 0</span></span></div>
<div class="p1">
<span class="s1" style="background-color: yellow;"><span style="color: #444444; font-size: xx-small;"><b> autopoweroff 1</b></span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;"> ttyskeepawake 1</span></span></div>
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;"> displaysleep 15</span></span></div>
<br />
<div class="p1">
<span class="s1"><span style="color: #444444; font-size: xx-small;"> standbydelay 10800</span></span></div>
<br />
I've bolded/highlighted the two settings that are referenced in the thread. These should both be zero. If not, you can override the settings as follows (you'll need to have administrator rights). Type the following in Terminal to set autopoweroff to 0:<br />
<br />
sudo /usr/bin/pmset autopoweroff 0<br />
<br />
And to set standby to 0:<br />
<br />
sudo /usr/bin/pmset standby 0<br />
<br />
The sudo command lets you run the command as an administrator. It will ask you for your password to run the command in administrator mode. You must have administrator rights to the machine for this command to work.<br />
<br />
Then verify in Terminal with:<br />
<br />
pmset -g<br />
<br />
<br />
7. Check tomorrow if your system randomly wakes up. If it persists, you'll need to dig deeper for what other possible reasons (e.g. USB device drivers plugged in that could be triggering a wake)<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-37639390947785460552014-09-22T22:43:00.003-07:002014-09-22T22:43:47.392-07:00Sketch #1<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
Since I bought a Wacom Intuos touch tablet recently, I've been making it an effort to learn to draw. Here's a sketch representing tonight's events:<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwdEGhZrVwi0YrrUARAKnJt8FLyeSjGNCUY4GrOmezzs3yV4bjs4EJY3c6S6BUuoj0tURL7VmYW7tGyZ84tYtQSJ_GMQQSKoC5MZPnUMngkP1oFnBGN9f6Dkb_T8C_kKtQ9PihWRl2OWU/s1600/baby-awakened.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwdEGhZrVwi0YrrUARAKnJt8FLyeSjGNCUY4GrOmezzs3yV4bjs4EJY3c6S6BUuoj0tURL7VmYW7tGyZ84tYtQSJ_GMQQSKoC5MZPnUMngkP1oFnBGN9f6Dkb_T8C_kKtQ9PihWRl2OWU/s1600/baby-awakened.png" height="215" width="640" /></a></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-1008983308830523672014-09-22T02:02:00.001-07:002014-09-22T02:02:14.349-07:00Welcome to Fatherhood<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn95qhfJrpjxTwwziHx8tYXZFhgi5AwEE2dSFgjg2oo7Bc8kgHO3fHuRvhVKmEVbmnq503zsK70s3D0ur97h-ALXxNcsD8qFgrlxS6VsUSSRekRoAYLiRaYH9nv9V3eabY7fhnkaoujuU/s1600/baby-crying.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn95qhfJrpjxTwwziHx8tYXZFhgi5AwEE2dSFgjg2oo7Bc8kgHO3fHuRvhVKmEVbmnq503zsK70s3D0ur97h-ALXxNcsD8qFgrlxS6VsUSSRekRoAYLiRaYH9nv9V3eabY7fhnkaoujuU/s1600/baby-crying.png" height="325" width="400" /></a></div>
<br />
Welcome to Fatherhood! To be honest, there wasn't really a welcome sign. Just a 6-pound baby born to greet us with smiles and watery eyes. Everything looked like it was going to be perfect. I was touched, moved beyond tears about becoming a first-time dad. Our baby daughter was born without ever crying. She dumbly stared at us, and we thought she was so cute and calm. We thought we got over the hard part... oh boy, what an understatement.<br />
<br />
Fast forward four months later -- being a dad is tough. Babies are not easy to raise. During the first 3 months, both my wife and I craved sleep. We took turns pretending to be dead asleep and not wanting to wake up hoping for the other to wake up and calm/feed a crying baby. If it wasn't my wife, it was my turn to feed our daughter with a bottle. If I didn't hear our daughter's cry, my wife would wake up and nurse. Our baby seemed to have a built-in two hour timer. Every two hours, she would cry. And it was on the dot. If we took 1.5 hours to feed her, she would cry 30 minutes shortly after indicating she was hungry. When the crying stopped, we had whatever small sliver of time remained to sleep.<br />
<br />
It was like this for the first 4 weeks. And slowly, there would be 3-4 hour intervals of golden blissful sleep. At two months, it was 5 hours... and now we get 8 hours. You would think getting a full 8 hours of sleep is where the fun of being a father begins, but.... no....<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_HOusdaXURbcidqlWce4evC-WOhA3GgEWlscv5p6XpbG_zZQzf9WsqAmgCjLxnUTjp7H09mjTi5hLRMLH2Q2KjL172JD_S_HDPJ-l2vfCJCt3aXDu6aUnla8YKJKiNLgadL2DGQfnGc8/s1600/baby-hold.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_HOusdaXURbcidqlWce4evC-WOhA3GgEWlscv5p6XpbG_zZQzf9WsqAmgCjLxnUTjp7H09mjTi5hLRMLH2Q2KjL172JD_S_HDPJ-l2vfCJCt3aXDu6aUnla8YKJKiNLgadL2DGQfnGc8/s1600/baby-hold.png" height="364" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Babies get cuter after 3.5 months. They are so adorable that you want to pick them up and hug them. But they are like leaches. Once you hold a baby, they won't want you to let go. If your arms get tired and you try to set them down, they give a loud cry and back up in your arms they go. And so, at four months, we learned not to hug our baby too much. Reinforce them with too much attention and they become accustomed to being held. There are days our baby daughter is like a Siren. So beautiful from far away.. her cuteness temps us to pick her up and hold her. But once we do, she latches on to us and never wants us to put her down. And so, all day she cries whenever our arms get tired and we try to set her down.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
So, fatherhood.... it's tough, but it's worth every effort. I'm happy to be a dad. Despite all of the dirty diapers, stained shirts, and drool, coming home and seeing those cute eyes and babbling coos melts my heart. I look forward to our daughter growing older and the future memories/experiences.</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-32166667634163328962014-02-25T23:52:00.002-08:002014-02-25T23:52:59.609-08:00Project 52 - Week 08 - Zooming InThis week's theme is "Zooming In". I decided to use a picture I took at 200mm while on vacation in Los Angeles.<br />
<br />
Post-processed results:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnqjy3pSlTr13u30khpgCjujFHzCPdiqgmyuQCEWP51v4EP0-4tBFLrug80liYxqPjb9NhgN-uMHiXXKdgsoXmiWGMtsUyqCCFb74wIyOrTeCf4hYzJqo_UMqDYGCO9d2s2IgiPxXmiaU/s1600/project_52_week_08-zooming_in.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnqjy3pSlTr13u30khpgCjujFHzCPdiqgmyuQCEWP51v4EP0-4tBFLrug80liYxqPjb9NhgN-uMHiXXKdgsoXmiWGMtsUyqCCFb74wIyOrTeCf4hYzJqo_UMqDYGCO9d2s2IgiPxXmiaU/s1600/project_52_week_08-zooming_in.jpg" height="425" width="640" /></a></div>
<br />
<br />
Before processing:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK1ftlvhcswil6eXrgaAOkvwWB9FhoRGIPzuElC_i9B83vGZTuCEpHuALsAsdwERd2z1KhXUrX8gP6ktf59TrcmmLBQEAGmlpAnhaisiGc_ADeHgGvcWKUKBZ_4wsNqBMHmWqrwLedC1g/s1600/project_52_week_08-zooming_in_original.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK1ftlvhcswil6eXrgaAOkvwWB9FhoRGIPzuElC_i9B83vGZTuCEpHuALsAsdwERd2z1KhXUrX8gP6ktf59TrcmmLBQEAGmlpAnhaisiGc_ADeHgGvcWKUKBZ_4wsNqBMHmWqrwLedC1g/s1600/project_52_week_08-zooming_in_original.jpg" height="426" width="640" /></a></div>
<br />
<br />
If you're wondering, this came from a sign hanging outside of a bakery/cafe in Solvang, California. The city is a beautiful Danish-style town worth visiting.Unknownnoreply@blogger.com0Solvang, CA, USA34.5958201 -120.1376480999999834.5435291 -120.21832909999998 34.648111099999994 -120.05696709999998tag:blogger.com,1999:blog-4205744040671980186.post-92219247213682869552014-02-23T21:40:00.000-08:002014-02-23T22:04:32.379-08:00Project 52 - Week 07 - IndustrialJust got back from a week long vacation in Los Angeles. I managed to grab an industrial themed shot from the Exxon Mobil Refinery in Torrance, CA:<br />
<br />
Below are the results [edit includes cropping]:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOfnYI8ZdDinRVD-Ab_43lE2nu7AaNC45TDNfGSdKfiud5uRG3cts18nIJWy-j9KHoSBG2845jOuhhvC5nSi0VKbmFVvBrAaPJ7yKkCwkz5XGzepUO4eKubSAgPr9ileoaqh_lT_DDB-U/s1600/project_52_week_07-industrial.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOfnYI8ZdDinRVD-Ab_43lE2nu7AaNC45TDNfGSdKfiud5uRG3cts18nIJWy-j9KHoSBG2845jOuhhvC5nSi0VKbmFVvBrAaPJ7yKkCwkz5XGzepUO4eKubSAgPr9ileoaqh_lT_DDB-U/s1600/project_52_week_07-industrial.jpg" height="427" width="640" /></a></div>
<br />
<br />
And original:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLyq7HvlF94lwgkhTce7Y9xzPwrkeq64tC5uWoGdTNCaLeS1oa263t1NhgK-xig3tkJQS8ZFftndW585t_vW7L8D03kBNOWqeDeJCPzI6HWRfNEsVQbvw_ix-Fcq4NLxuQ3J2xZhBR1WM/s1600/project_52-week_07-industrial_original.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLyq7HvlF94lwgkhTce7Y9xzPwrkeq64tC5uWoGdTNCaLeS1oa263t1NhgK-xig3tkJQS8ZFftndW585t_vW7L8D03kBNOWqeDeJCPzI6HWRfNEsVQbvw_ix-Fcq4NLxuQ3J2xZhBR1WM/s1600/project_52-week_07-industrial_original.jpg" height="426" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Another photo I considered using for industrial:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmvhaP6HX0Tg2BGPc571-_MYJ1ZEziBTfvf07yEFLlYngjp3q70-MkVTotmKvCb0_uOTp_AacOQHxguyZgLnb4cAYBuIqskvFEmjpUV9GILraNdcFX1m6BRmB1eWv6zklIkS4hbJRX6tk/s1600/project_52_week_07-industrial_alt.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmvhaP6HX0Tg2BGPc571-_MYJ1ZEziBTfvf07yEFLlYngjp3q70-MkVTotmKvCb0_uOTp_AacOQHxguyZgLnb4cAYBuIqskvFEmjpUV9GILraNdcFX1m6BRmB1eWv6zklIkS4hbJRX6tk/s1600/project_52_week_07-industrial_alt.jpg" height="427" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-9893121767223151442014-02-19T00:12:00.000-08:002017-04-03T22:00:56.012-07:00Buddhist-Vegetarian RestaurantsVegetarian options are getting easier and easier to find these days, but restaurants that can also accommodate Buddhist practitioners wishing to avoid the "five pungent plants" (onion, garlic, leeks, shallots, and chives) is still a rarity to find. As such, I thought it might be a good idea for me to start a list of restaurants I've found that are "Buddhist-Vegetarian" and also restaurants that are "Buddhist-vegetarian" friendly (meaning you have to specifically tell them not to put onion, garlic, leeks, shallots, or chives). I'll also add restaurants that have some (very limited) Buddhist-vegetarian menu items.<br />
<br />
<b>Key:</b><br />
<b><br /></b>
BV = Buddhist-Vegetarian (onion/garlic not used at restaurant)<br />
BVF = Buddhist-Vegetarian Friendly (dishes regularly have onion/garlic but many of them can be requested to be onion-garlic free)<br />
BVF* = Buddhist-Vegetarian Friendly but risky. Same as BVF but they sometimes get sloppy and accidentally forget to follow orders or forget to check the soup-bases for garlic/onion powder.<br />
LBV = Limited Buddhist-Vegetarian options (a limited set of items that can be made without onion-garlic at customer's request)<br />
<br />
<br />
<b>San Jose/Sunnyvale/Bay Area California</b><br />
<br />
(BVF) <a href="http://chaatbhavan.com/">Chaat Bhavan</a> [Sunnyvale and Fremont] - This is an Indian restaurant with locations in Sunnyvale and Fremont. They are entirely vegetarian and have a good selection of "jain friendly" (no onion, no garlic) dishes. Look for the Jain-friendly star icon next to the menu items. Note that this restaurant defines "Jain vegetarian" as no onion, no garlic. They are not truly Jain since true Jain diet excludes all plants grown in the ground (such as potatoes).<br />
<br />
(BV) <a href="https://sites.google.com/site/greatvegiland/">Great Vegi Land</a> (main site <a href="http://www.greatvegiland.com/">here</a>, but may lag) [Sunnyvale] - This is a traditional Chinese vegetarian restaurant that is Buddhist friendly. The food is delicious! They are located in Sunnyvale. Remember to bring cash as they are CASH ONLY.<br />
<br />
(BVF*) <a href="http://meritvegetarian.com/">Merit Vegetarian Restaurant</a> [Sunnyvale] - This is an Asian vegetarian restaurant. The cooking style is Asian fusion as they use Indian and Chinese spices but I consider them mainly Vietnamese-Chinese (with a bias towards Vietnamese style). It has ties to the Ching Hai group. The food is great! A lot of the items can be made without onion/garlic. I personally like the Indian Fried Rice. Some notes: You'll need to ask them which menu items are onion-garlic free, and for soups, to have them confirm the soup-base is also onion-garlic free. When you get your dish, make sure they didn't overlook your order (as they have added onions to my dish by mistake several times).<br />
<br />
(LBV) <a href="http://www.pastapomodoro.com/">Pasta Pomodoro</a> [Santa Clara / San Jose / Santana Row] - This is an Italian restaurant chain. One of the restaurants is located in Santana Row. The ravioli dishes can be made without onion/garlic. I'm not certain whether the ravioli skin has eggs or not (so you will need to call in advance to double check). Also, some of the pastas can be made without onion/garlic. My wife had the siciliane. It was good, though, I believe they used cooking wine since the eggplant had a bit of the taste. Call in advance to check.<br />
<br />
<strike>(LBV) <a href="https://plus.google.com/112368841886290001504/about?gl=us&hl=en">Dosa & Curry Cafe</a> [Downtown San Jose] - This is a hole-in-the-wall place to go to for late-night Indian food. They have very late hours and are popular among college students. They have some of the best freshly-made naans I've ever tasted. You can ask for Mattar Paneer to be made without onion or garlic. For drinks, you can order a mango lassi. That's pretty much all you can order that is Buddhist friendly. Oh, also, one of the spring dosas can be made without onion or garlic. You'll have to ask, but we didn't like it since it was way too spicy. </strike>[They seemed to have changed management. All items have onion/garlic now :(]<br />
<br />
(LBV) <a href="http://www.pizzaantica.com/">Pizza Antica</a> [Santa Clara / San Jose / Santana Row] - This is a pizza/Italian restaurant. They have some of the best thin-crust pizzas I've ever eaten. Only the margherita pizza was safe to order.<br />
<br />
(LBV) <a href="http://thelittlehotpot.com/">Little Hot Pot </a>[Fremont] - Chinese hotpot (huo guo) where you can definitely order a vegetarian soup-base without onion/garlic. Call in advance to find out what you can order. My wife ordered a milk-soup base and got the vegetable set. The sauces at the sauce bar might be a bit trickier to figure out which are without onion/garlic, but you can always inquire.<br />
<br />
(BV) <a href="http://www.yelp.com/biz/dong-phuong-tofu-san-jose">Dong Phuong Tofu</a> [San Jose] - Vietnamese. The owners are Buddhist, so their stuff is without meat/garlic/onion by default. Very very cheap food and probably busy during lunch. The last time I went, it was still $5-$6 for a giant to-go box. Bring cash. They don't accept credit cards. In case you don't find it, it's in the Kohl's shopping plaza. (Comment: A reviewer on Yelp claims they served real shrimp... not so sure about this, but just in case, always ask).<br />
<br />
(LBV) <a href="http://veggiegrill.com/">Veggie Grill</a> [San Jose/Santa Clara/California - lots of locations] - American-style vegetarian restaurant. They have a limited selection of no-onion and <a href="http://www.veggiegrill.com/docs/VG_Specialmenu_Garlic.pdf">no-garlic menu</a>. (See Veggie Grill under Los Angeles Area)<br />
<br />
(BVF) <a href="http://www.yelp.com/biz/sogo-tofu-san-jose">Sogo Tofu</a> [West San Jose/Cupertino] - Chinese vegetarian. TO GO lunch box only. Cash only for under $15. Expensive, but almost all of their items have no onion, no garlic. But double check just in case. Some items have eggs, so you need to ask.<br />
<br />
(BVF) <a href="http://www.yelp.com/biz/veggie-garden-mountain-view?osq=chinese+vegetarian">Veggie Garden</a> [Mountain View] - Chinese Vegetarian. They have many items you can ask to make without onion/garlic. Moderately pricey, but it's Mountain View and has a good setting. Great for dates.<br />
<br />
(BV or BVF) <a href="http://www.yelp.com/biz/royal-greens-vegetarian-san-jose?osq=chinese+vegetarian">Royal Greens Vegetarian</a> [San Jose/Cupertino] - Tawainese vegetarian. By default Taiwanese vegetarian is Buddhist vegetarian (but always double check and ask). They have many options. Pricey compared to other restaurants and service can be slow. I only went their once because they took so long to prepare the menu. But, the food is delicious if you have the patience to wait.<br />
<br />
(BVF) <a href="http://www.yelp.com/biz/loving-hut-milpitas-3">Loving Hut</a> [Milpitas (other locations not friendly)] - Asian fusion vegetarian. Their menu has indicators for no-onion no-garlic items and there's quite a few to choose from. Loving Hut has other franchises, but it seems only the Milpitas location is Buddhist vegetarian friendly.<br />
<br />
(LBVF) <a href="http://www.yelp.com/biz/the-ace-of-sandwiches-palo-alto">The Ace of Sandwiches</a> [Palo Alto] - Sandwich shop which can make pretty good sandwiches without onion or garlic. Ask to leave out pesto, ketchup, pickles, garlic, or onions. Since you can ask to leave stuff out of your sandwich, it's pretty easy to order a hot sandwich that is Buddhist vegetarian. You just have to know beforehand what items typically have onion/garlic.<br />
<br />
(BVF) <a href="http://www.gochaatzzusa.com/">Go Chaatz</a> [Fremont] - Vegetarian Indian restaurant. Not as good as Chaat Bhavan, but has a decent selection of Indian food that can be made without onion/garlic. The food is spicy, but if you like variety, this is a place to go.<br />
<br />
(BV) <a href="http://www.yelp.com/biz/veggie-lee-hayward-2">Veggie Lee</a> [Hayward] - I've only been here once several days after they opened and they have a plethora of options to order from. I will forewarn that the place is slightly pricey. Expect paying about $15 per person. I've had one bad dish and one really good dish, but yelp reviews seem to be positive.<br />
<br />
(BVF*) <a href="http://mintnbasil.com/">Mint & Basil</a> [Milpitas/Fremont] - Vegetarian Vietnamese restaurant. Yes, they are vegetarian and use mock meat. They do use onion/eggs in some of their menu items, so you need to tell them no onion/garlic/eggs when you order. They do sometimes mistakenly put onion in dishes you tell them no onion. As usual, avoid sriracha sauce and ketchup (they have garlic powder). Expect prices to be around $10-$12 per dish. I did get a chance to provide feedback to the manager and mentioned that some of the sauces have garlic/onion powder. He mentioned he'll tell his cooking staff to be more aware of the ingredients when mentioning no onion/garlic.<br />
After visiting this place several times, our favorite and safe dishes are:<br />
- hot pots: tofu dumpling hot pot (request no onion or garlic). The other hot pots seem safe too.<br />
- for kids: mac soup (cheese sauce in mac & cheese tastes like it has onion/garlic powder)<br />
- dishes: (still trying to figure out which dishes are safe here)<br />
<br />
(BV) <a href="http://www.yelp.com/biz/veggie-land-cupertino">Veggieland</a> [Cupertino/Santa Clara] - Buddhist Vegetarian <strike>restaurant</strike> food vendor inside a mall. It's a Vietnamese/Taiwanese style with interesting additions to make it unique in its own flavor. The owner/chef is Buddhist and I got a chance to speak to him. Everything they use abides by the Buddhist diet (no onion, no garlic, no shallots, no eggs, no chives). It's inside the Valco mall in Cupertino, situated in the food court next to JC Penny and Benihana. The food is delicious and very well priced ($7-9 per dish). Seaweed fried rice is my favorite dish so far. I will definitely be going back for more food since I've discovered this place.<br />
<br />
(BVF) <a href="https://www.yelp.com/biz/green-lotus-san-jose">Green Lotus</a> [San Jose] - Buddhist Vegetarian friendly restaurant. Vietnamese style. This is similar to Mint & Basil but there seems to be more variety. This is currently our new favorite place.<br />
<br />
<b>Chain Stores</b><br />
<b><br /></b>
These are places to go as a last resort if you can't find anywhere else to eat.<br />
<b><br /></b>(LBV) Taco Bell: This is my very last option (if I can't find anywhere else to go). There's only 1 item you can order safely. Order a <b>vegetarian</b> Supreme Chalupa. You have to make sure that they get the "vegetarian" part as supreme chalupas normally have beef in it. They will substitute it with beans. This is my last resort since the <a href="http://www.tacobell.com/food/menuitem/Chalupa-Supreme">Info</a> and <a href="http://www.tacobell.com/nutrition/ingredientstatement">ingredients</a> pages don't clarify what "natural flavors" are in the beans. *NOTE: Do NOT go to any TacoBells that are combined with KFC. They use the same oil they deep fry their chicken to fry their chalupa breads.<br />
<br />
(LBV) In-N-Out: Two things you can safely order here:<br />
- Grilled cheese sandwich with no sauce. Only cheese, lettuce and tomatoes. Tastes good when you're hungry, but otherwise, it's better to go elsewhere.<br />
- French fries<br />
<br />
(LBV) Subway: You can check the ingredients page <a href="https://www.subway.com/Nutrition/Files/usProdIngredients.pdf">here</a>. They sneak in garlic powder into a lot of the flavored breads. As such you're safe with ordering a "Veggie Delite" and choosing from the following options:<br />
- Bread: 9-Grain Wheat (NOTE: Contains honey), Flatbread, Hearty Italian Bread, Honey Oat Bread (NOTE: Contains honey), Monterey Cheddar Bread (available at limited stores)<br />
- You can pick any of the vegetables (except the onion). Not sure about pickles, or banana peppers.<br />
- Avocado spread is just avocado (extra cost), so it's safe.<br />
- Sauces: Only oil is safe. Everything else has onion/garlic/alcohol.<br />
- Spices: Oregano, salt, and pepper.<br />
<br />
<b>Oakland / Berkeley Area</b><br />
<b><br /></b>
(BV) <a href="http://www.naturevegetarianrestaurant.com/">Nature Vegetarian</a> [Oakland] - This is a vegan Chinese restaurant (Cantonese style) that I've gone back to so many times that I can't count any more. They have such a large menu that you'll have to constantly go back to try something new. I haven't grown tired of the place and it's still the top pick for family outings. I've also seen monks there several times. It's good. You'll need to pay for parking. I recommend the <a href="http://www.yelp.com/biz/pacific-renaissance-plaza-parking-oakland">Pacific Renaissance Plaza</a> parking structure between Franklin St and Webster St on 9th street.<br />
<br />
(BVF) <a href="http://www.yelp.com/biz/golden-lotus-vegetarian-restaurant-oakland">Golden Lotus Vegetarian Restaurant</a> [Oakland] - This is a vietnamese vegetarian restaurant. You can ask them to leave out onion/garlic for many of the menu items. It's down the street from Nature Vegetarian. Not a bad place. I still prefer Nature Vegetarian over Golden Lotus.<br />
<br />
(BVF) <a href="https://plus.google.com/110293424055191706171/about?gl=us&hl=en">Cha-Ya</a> [Berkeley] - This is a Japanese vegetarian restaurant where many of the dishes can be made onion-garlic free. Just inquire. Make sure they understand that no onion, no garlic also means no chives, no spring onions, no leeks, no scallions, and no shallots (as they can get confused).<br />
<br />
<b>Los Angeles Area</b><br />
<br />
(BVF) <a href="http://www.happyveggie.com/">Happy Veggie</a> [Redondo Beach] - This is a Vietnamese style vegetarian restaurant. A good selection of dishes can be made without onion or garlic.<br />
<br />
(LBV) <a href="http://veggiegrill.com/">Veggie Grill</a> [Redondo Beach] - This is an American-style vegan burger place. Apparently, the cashiers have a booklet of allergies with "No Garlic" listed as a page in the book. There are several items that are order-able. You'll also have to request "No Onion" as well. The items we spotted that were order-able were the Papa's Portobello burger and the "Grillin' Chicken". You can add avocado to the Portobello burger (otherwise, it's just a boring mushroom burger with tomatoes). The fries are good to order too (just no ketchup or sauce).<br />
<br />
(BV) <a href="https://foursquare.com/v/vege-paradise/4a709d2cf964a520f4d71fe3">Vege Paradise</a> [San Gabriel] - This is Chinese/Taiwanese/Catonese-style vegetarian restaurant. It's been featured in the Chinese news as one of the best, and oh man, does it live up to that name. If I lived near by, this would probably be my place to go everyday. Only things to note: it's near Ranch 99, so the the large parking lot there was almost full. Restaurant has a $25-minimum for credit cards. I ended up shelling out $26 in cash (including tip) since pre-tip amount was shy of $25.<br />
<br />
(LBV) <a href="http://www.yelp.com/biz/four-sea-restaurant-san-gabriel">Four Sea Restaurant</a> [San Gabriel] - This is a Taiwanese breakfast/brunch place that has some Buddhist-vegetarian friendly options. I wasn't too impressed with the food, but my wife had a craving for traditional Taiwanese-style breakfast. The place definitely satisfied her cravings. I don't know the English names for the Buddhist-friendly items, but you can ask about the vegetarian items without onion or garlic. They are pretty friendly.<br />
<br />
<br />
<br />
[List to be updated overtime as I recall more restaurants and places to share]Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-4205744040671980186.post-16084835446182442562014-02-18T22:05:00.002-08:002014-02-18T22:05:30.996-08:00On vacation this weekI haven't forgotten about week 07 for Project 52. I've captured some great shots of the Exxon Mobile refinery and also of the Pier at Long Beach. Since I don't have immediate access to Lightroom, I won't be able to process the RAW images and post photos until I get back. So stay tuned until then!<br />
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-13120156724984009332014-02-09T23:53:00.002-08:002014-02-09T23:53:39.529-08:00Project 52 - Week 06 - FoodThis week's theme is food. I can't take any credit for the plate of strawberries -- it's all made by my wife. Anyway, the results:<br />
<br />
After processing:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYNXr2xSaitMlxlizK4Xl5kEdPGRfRbNdxVYZlUjQjY4W5SngZojUwAHc34r5pMmZViQGqhi7E5hTb3-UYwGRCHhWoGKfzePHQv9HHjcOvvJg671A3ilD_F3hBFZ-iC839sBqgw_ZkQMM/s1600/project_52-week-06-food.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYNXr2xSaitMlxlizK4Xl5kEdPGRfRbNdxVYZlUjQjY4W5SngZojUwAHc34r5pMmZViQGqhi7E5hTb3-UYwGRCHhWoGKfzePHQv9HHjcOvvJg671A3ilD_F3hBFZ-iC839sBqgw_ZkQMM/s1600/project_52-week-06-food.jpg" height="426" width="640" /></a></div>
<br />
<br />
Before processing:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4ZfieSpP70xLRz0JL4V1WZoIJ7ogriusmIP6amncFrxU3LdomS-Mpg2TSzBXg-BwAqa_iTdBY5JcYPTMnVZdBhs-M_6KFdKgBW3AeGfVxawtEBldZC91caVi1rZclnJ7nAAcseEbhnuI/s1600/project_52-week-06-food_original.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4ZfieSpP70xLRz0JL4V1WZoIJ7ogriusmIP6amncFrxU3LdomS-Mpg2TSzBXg-BwAqa_iTdBY5JcYPTMnVZdBhs-M_6KFdKgBW3AeGfVxawtEBldZC91caVi1rZclnJ7nAAcseEbhnuI/s1600/project_52-week-06-food_original.jpg" height="427" width="640" /></a></div>
<br />
Finally, my wife and I attempted to make raviolli from scratch for the very first time. You can tell from the results that my wife is a better cook than I am:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-o-iJK855gOg/Uvh8k5wGb5I/AAAAAAAALR0/HE6aHzp91xY/s1600/raviolli-composite_web.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-o-iJK855gOg/Uvh8k5wGb5I/AAAAAAAALR0/HE6aHzp91xY/s1600/raviolli-composite_web.png" height="227" width="640" /></a></div>
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-25121334244000153222014-02-03T22:06:00.002-08:002014-02-03T22:13:37.424-08:00Project 52 - Week 05 - MacroThis week's theme is macro. The goal is to take an up-close shot of something. A tree in my community seems to have started blossoming rather early, so I decided to make it the subject of this week's photo.<br />
<br />
After processing (and yes, processing involved cropping):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipQ0jXYdUO-snDUlyjQ_9ZQ9x9rU2GVyZHdbSu65cQTWGOIQ5NWDUltCODtQS_Uvo6JStkSS3rzrgMVjnXfkvIM81RwLZFshAtkOKJqtl0_HPg82Xbg_5uNXLA24sG_ASUwOgS-1OoGAI/s1600/project_52_week_05-macro.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipQ0jXYdUO-snDUlyjQ_9ZQ9x9rU2GVyZHdbSu65cQTWGOIQ5NWDUltCODtQS_Uvo6JStkSS3rzrgMVjnXfkvIM81RwLZFshAtkOKJqtl0_HPg82Xbg_5uNXLA24sG_ASUwOgS-1OoGAI/s1600/project_52_week_05-macro.jpg" height="426" width="640" /></a></div>
<br />
<br />
Before processing:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS-GPuuPo_B7v8dAKn0xA870xuicgkgI_7p7ohRByvEVQezTdGfSCWVQDj7W6uk2wTY76bXjjjsyEJqAzTjuB7Og9fNEj_6QVzg4iXE4dkUFNgA4W0k6nn_K_KYWXrnm6KLR8VEcNEc4U/s1600/project_52_week_05-macro_original.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS-GPuuPo_B7v8dAKn0xA870xuicgkgI_7p7ohRByvEVQezTdGfSCWVQDj7W6uk2wTY76bXjjjsyEJqAzTjuB7Og9fNEj_6QVzg4iXE4dkUFNgA4W0k6nn_K_KYWXrnm6KLR8VEcNEc4U/s1600/project_52_week_05-macro_original.jpg" height="426" width="640" /></a></div>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-4338925377375029012014-01-28T21:05:00.000-08:002014-01-28T21:05:16.843-08:00Project 52 - Week 04 - Contrast themeWeek #4's theme is "contrast." It's been a busy week for me as I've been spending quite a bit of extra time learning new APIs and backends for work. Since there wasn't much time to go out and explore, I had to make-do with what was at home. Anyway, here are the results (probably not so spectacular):<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCbGAHxU7o8VhzYXJTg0T1NunVuopD4LHLNG6rL-rm594KXk5YyyVx_TL7a-3B_v6jFdrCJ296bmacluZ58Ux39tXQs5dEtD7HAExB98sAfoDGs5_s2XFoT1V_4e57Q5Fv7Bts4FdoP3Q/s1600/project52-week04-contrast.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCbGAHxU7o8VhzYXJTg0T1NunVuopD4LHLNG6rL-rm594KXk5YyyVx_TL7a-3B_v6jFdrCJ296bmacluZ58Ux39tXQs5dEtD7HAExB98sAfoDGs5_s2XFoT1V_4e57Q5Fv7Bts4FdoP3Q/s1600/project52-week04-contrast.jpg" height="425" width="640" /></a></div>
<br />
Original photo before processing:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi12Fk1gGnKnsMFzIM2ZM42nwjo7PXhlVtZduHnAVqX3oSHrs6x76jBu2gcTULgoTw6YGlaOPO_-0-E4W7eidCFBvqfAfc0Tc6H9tnAoBi3lq9SOsuAswO5cjGua7jX-8bzeYbOrwvBjGg/s1600/project52-week04-contrast_original.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi12Fk1gGnKnsMFzIM2ZM42nwjo7PXhlVtZduHnAVqX3oSHrs6x76jBu2gcTULgoTw6YGlaOPO_-0-E4W7eidCFBvqfAfc0Tc6H9tnAoBi3lq9SOsuAswO5cjGua7jX-8bzeYbOrwvBjGg/s1600/project52-week04-contrast_original.jpg" height="426" width="640" /></a></div>
<br />
The giant orange in the middle is a blood orange. It's pretty delicious. Tastes like grapes and oranges combined. It's much sweeter than a regular orange. The surrounding oranges are "cutie" oranges. When you cut a blood orange open, you get a dark-looking orange in the bottom row (the top row are Clara Clara oranges).<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYrEWJCQVB5f8TAexSKYDKUFZZ2NhmwtOjBG__JjW_VltRatdp1UtZO88u6nAzJ7hIojXt-LrAs4xNF39R6S-eeviHfgIWl61czZGzSADpuwdqxsWGDc9erm2MQ8i1ArClNLOp3CNUr7k/s1600/oranges.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYrEWJCQVB5f8TAexSKYDKUFZZ2NhmwtOjBG__JjW_VltRatdp1UtZO88u6nAzJ7hIojXt-LrAs4xNF39R6S-eeviHfgIWl61czZGzSADpuwdqxsWGDc9erm2MQ8i1ArClNLOp3CNUr7k/s1600/oranges.jpg" height="454" width="640" /></a></div>
<br />
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-41465444835067744472014-01-19T18:16:00.001-08:002014-01-20T23:02:52.701-08:00Project 52 - Week 03 - Modern themeWeek #3's theme is "modern". This week, I struggled to find a subject to shoot since everything in my apartment is old, and taking pictures at work would be a bit difficult.<br />
<br />
It just so happens that one of the teahouses I got a chance to visit over the weekend had a modern look to it:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO_BJSCRiIVibW6ywABgzE5KJ_v-M8Rw6cVIUGelmohp6RiV6L8FuEYIxKjn4uwWfucz_A_osixHpKXz2qTMF13fHMUyG5Gbx_N69WsXVEA4swgX2pa4G8aml-lGbCB_kUWNoQWeXYQwg/s1600/project_52-week3-modern.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO_BJSCRiIVibW6ywABgzE5KJ_v-M8Rw6cVIUGelmohp6RiV6L8FuEYIxKjn4uwWfucz_A_osixHpKXz2qTMF13fHMUyG5Gbx_N69WsXVEA4swgX2pa4G8aml-lGbCB_kUWNoQWeXYQwg/s1600/project_52-week3-modern.jpg" height="426" width="640" /></a></div>
<br />
Original photo before processing:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ2IKUYWL-HwzVacQkKLFfItNaVxDf7t5FGBv1idCZSHGTanDaYkkki5YyQnO-GxVU_nrEtJ5Ya7YC0DD2POjFn3DvoUYvDy12UJ_lucqnihejcFM_0DPlsLn4FJ5hws3_-nNUdOEugwY/s1600/project_52-week3-modern_original.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ2IKUYWL-HwzVacQkKLFfItNaVxDf7t5FGBv1idCZSHGTanDaYkkki5YyQnO-GxVU_nrEtJ5Ya7YC0DD2POjFn3DvoUYvDy12UJ_lucqnihejcFM_0DPlsLn4FJ5hws3_-nNUdOEugwY/s1600/project_52-week3-modern_original.jpg" height="426" width="640" /></a></div>
<br />
The above ceiling lights belongs to <a href="http://snowflaketeahouse.com/">Snowflake Teahouse</a> in Union City, CA. If you're looking for a good Taiwanese dessert place, I highly recommend it. It's a bit pricey, and it does get crowded, but it's a great place for Taiwanese desserts and hot tea. We spent an average of $9 per person at the place, but the shaved ice and hot tea was terrific!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-40326172186144072082014-01-10T23:28:00.001-08:002014-01-11T00:18:43.001-08:00Project 52 - Week 02 - VintageThis week's theme is "vintage". I just got my Nikon 14-24mm f/2.8 lens and wanted to play with the wide-angle. This picture was taken at 24mm, f/2.8 ISO 100. I'm still trying to figure out how to take advantage of ultra-wide angle at 14mm. For those of you with experience and have example photos to show off, please do share and leave a comment with a link. Thanks!<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpMLUPT7Fk4F5aGLqu13_JigJbzf1zFEVsKhr1UREn9Hh_KMxCDoWaOLLbNeWHYmfOzyumLExwYYKg_z4FvRx1dPpao3RODONM1v8T5Q551iale6uXygkbqZz3ZPXISJ0V46lJeCYPXe8/s1600/project52-week2-vintage.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpMLUPT7Fk4F5aGLqu13_JigJbzf1zFEVsKhr1UREn9Hh_KMxCDoWaOLLbNeWHYmfOzyumLExwYYKg_z4FvRx1dPpao3RODONM1v8T5Q551iale6uXygkbqZz3ZPXISJ0V46lJeCYPXe8/s1600/project52-week2-vintage.jpg" height="426" width="640" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
And original before processing:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuA99SLPsRXfUVdYEh7xHQxHND5eHMhk1ZdAPtbq6I36SJXVkCYcAd0vt1T8p2hLHR73DYlCnT7jDp5-k-noaKSPIcmOJQg7nd5dAwRh1Rvzj-AYjnA8Lzmp7rdSpirrRIHxtwDyNhQQo/s1600/project_52-week2-vintage_original.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuA99SLPsRXfUVdYEh7xHQxHND5eHMhk1ZdAPtbq6I36SJXVkCYcAd0vt1T8p2hLHR73DYlCnT7jDp5-k-noaKSPIcmOJQg7nd5dAwRh1Rvzj-AYjnA8Lzmp7rdSpirrRIHxtwDyNhQQo/s1600/project_52-week2-vintage_original.jpg" height="426" width="640" /></a></div>
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-55243591454294458602014-01-06T22:19:00.002-08:002014-01-07T03:55:07.596-08:00Project 52 - Week 01 - Action<b>Week 01 of Project 52</b>.<br />
<br />
The goal of the project is to take one photo a week with a set theme. My wife and I, along with a group of friends have agreed on a set list of 52 themes for the year. This week's theme is to take a photo of something in action. I thought I'd start a blog documenting where each photo was taken and the before/after effects of Lightroom processing for each week. I'm just starting to use Lightroom, so bear with me if my Lightroom skills are terrible.<br />
<br />
This photo was taken at <a href="http://goo.gl/maps/D8zQT">Natural Bridges State Beach</a>. If you decide to park there (and support the maintenance cost of the beach), parking is $10. Otherwise, there's plenty of street parking outside. You'll have to walk in about 0.5 miles (~5 minute walk). Follow the road in to the visitor's center. There's a walking path to the right side of the visitor's center (facing visitor's center). A sign at the front greets you as to where to go.<br />
<br />
The butterflies are there from October to February. I went on January 5, 2014. The butterflies are high up in the trees, so your camera phone won't cut it. You need at least a 200mm lens (I used a 28-300mm zoom lens with the zoom set at 300mm).<br />
<br />
So, here is week 1's results.<br />
<br />
Processed:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-CC27AluZvow/UsuXqo46KfI/AAAAAAAAK2Y/YMZe48ue6V8/s1600/project_52_week1-action.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-CC27AluZvow/UsuXqo46KfI/AAAAAAAAK2Y/YMZe48ue6V8/s1600/project_52_week1-action.jpg" height="426" width="640" /></a></div>
<br />
<br />
And before any editing:<br />
<br />
Original:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeCBmjqP_pM19xGe14hyphenhyphenJFSa8bCIEk-FXp-2ANgLJBl6479OFzluC1s5nJjO_seH93xmtc17iPThAxdiVCRPMkkgpdsj1i1uKeVkKr_RwzP1OrmAvsLpvwaEMUI-Jb_6T4J3hrawlV8Q8/s1600/unprocessed_project52_week_01-action.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeCBmjqP_pM19xGe14hyphenhyphenJFSa8bCIEk-FXp-2ANgLJBl6479OFzluC1s5nJjO_seH93xmtc17iPThAxdiVCRPMkkgpdsj1i1uKeVkKr_RwzP1OrmAvsLpvwaEMUI-Jb_6T4J3hrawlV8Q8/s1600/unprocessed_project52_week_01-action.jpg" height="426" width="640" /></a></div>
<br />
<br />
Location:<br />
<br />
<iframe frameborder="0" height="480" marginheight="0" marginwidth="0" scrolling="no" src="https://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=Natural+Bridges+State+Beach,+W+Cliff+Dr,+Santa+Cruz,+CA&aq=0&oq=natural+brid&sll=37.269174,-119.306607&sspn=20.532052,30.563965&t=m&ie=UTF8&hq=&hnear=&ll=36.952738,-122.057762&spn=0.008231,0.013733&z=16&output=embed" width="640"></iframe><br />
<small><a href="https://maps.google.com/maps?f=q&source=embed&hl=en&geocode=&q=Natural+Bridges+State+Beach,+W+Cliff+Dr,+Santa+Cruz,+CA&aq=0&oq=natural+brid&sll=37.269174,-119.306607&sspn=20.532052,30.563965&t=m&ie=UTF8&hq=&hnear=&ll=36.952738,-122.057762&spn=0.008231,0.013733&z=16" style="color: blue; text-align: left;">View Larger Map</a></small>Unknownnoreply@blogger.com0Natural Bridges State Beach, 2531 West Cliff Drive, Santa Cruz, CA 95060, USA36.9527307 -122.0577673000000236.9463862 -122.06785230000003 36.959075199999994 -122.04768230000002tag:blogger.com,1999:blog-4205744040671980186.post-29844309707214275152013-12-01T00:58:00.002-08:002013-12-01T01:03:02.055-08:00Canon EF 24-70mm f/2.8L II USM Lens TestAfter I bought a Canon EF 24-70mm f/2.8L II USM lens for my wife's camera and doing a quick test, I was initially surprised by how terrible autofocus was. Every forum, review, and blog post I've read stated the lens was suppose to be super-sharp. It wasn't the case for me initially. Pictures I took of people were never sharp, especially at 70mm f/2.8.<br />
<br />
After a bit of time playing around with the lens, I finally figured out why. It boiled down to several issues:<br />
<br />
1. I wasn't use to the extremely shallow depth of field, which means that at 70mm, if I took a picture of a person with the focus centered on the tip of the nose, their nose would be in focus, but their face would end up blurry. I had to shift the focus point to between the eyes.<br />
<br />
2. AF Microadjustment -- the results, albeit trivial, do make a difference between parts of the subject having a "soft" focus vs having a super-sharp focus throughout. This made the most difference at 24mm and negligible difference at 70mm. I recommend following the tethered approach described in <a href="http://ophrysphotography.co.uk/pages/tutoriallensmicroadjustment.htm">Ophyrs Photography</a> site. I've tried all of the approaches with the tethered approach giving the most accurate results.<br />
<br />
Finally, to highlight the subtle change between before and after AF microadjustment, here are photos taken of the same subject with the focal point on the nose of the bear. The pictures were taken at f/2.8 with a 24mm focal length. Left is before AF microadjustment, right is after. The difference is subtle, but the fur in the lower left below the nose is somewhat sharper in the right image.<br />
<br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpTlsaPLQT3nGqvTxBBFd6Matd4eS5cDQn5pN5f1gks6d_FbGEiE0QHYeGwhRb0xePtzn6S3PLXw7dPiFnmSMPrE48IdtWhssGKCaimpAQ44epC9jAHnoZ8ZsMYg-CcPxiJcgsUamSpfU/s1600/24mm-bear-comparison.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="223" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpTlsaPLQT3nGqvTxBBFd6Matd4eS5cDQn5pN5f1gks6d_FbGEiE0QHYeGwhRb0xePtzn6S3PLXw7dPiFnmSMPrE48IdtWhssGKCaimpAQ44epC9jAHnoZ8ZsMYg-CcPxiJcgsUamSpfU/s400/24mm-bear-comparison.png" width="400" /></a></div>
<div>
<br /></div>
<div>
And for a different target that's more noticeable:<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMXe0d71OWAsuAlM814YdDhroQmaCxzP9enxq_DgRjU1avynr_hP4-0M3djX8x7xb_6d32geuBp9MO6TvyRKnGzvWgYKB1kwyRbRCk5O-FUpIjBluUBSTUuw819_z2qcn7Ae9JVULg-NY/s1600/24mm-target-versus.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="221" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMXe0d71OWAsuAlM814YdDhroQmaCxzP9enxq_DgRjU1avynr_hP4-0M3djX8x7xb_6d32geuBp9MO6TvyRKnGzvWgYKB1kwyRbRCk5O-FUpIjBluUBSTUuw819_z2qcn7Ae9JVULg-NY/s400/24mm-target-versus.png" width="400" /></a></div>
<br />
<br />
And a quick test showing off what this lens can do:<br />
<br />
<div>
<br />
<div>
<div>
<div style="text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo5KISSYp9CodM7rDTZXs9cljxfR1WMCjyBT1jpPmlbElLUjbQr7Nm2NXXvcpJ2GckJajdRo7Dwk8W1hwb9chTkuC8qjGJA15217P7FAJSEQrG4kkxo6YQR_GcRJyfhW5aYo6YuX3pT-s/s1600/QY4A0504.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo5KISSYp9CodM7rDTZXs9cljxfR1WMCjyBT1jpPmlbElLUjbQr7Nm2NXXvcpJ2GckJajdRo7Dwk8W1hwb9chTkuC8qjGJA15217P7FAJSEQrG4kkxo6YQR_GcRJyfhW5aYo6YuX3pT-s/s400/QY4A0504.JPG" width="400" /></a></div>
</div>
</div>
</div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4205744040671980186.post-29627433730019867312013-08-16T01:52:00.001-07:002014-02-02T10:37:23.824-08:00Chromecast on the Open-sourced Asus RT-N65U firmwareAfter 3 hours of fiddling around with settings, I finally got my Chromecast up and running. Video played from Chrome websites runs smoothly. The setup was a bit frustrating, but once all of that's taken care and out of the way, things are smooth from then on. I just wished there had been a bit more information provided about network router settings or an explanation of what the setup process involved so that I could figure out what settings I needed enabled.<br />
<div>
<div>
<br /></div>
<div>
There are several things that you need to be mindful of:<br />
<div>
<br /></div>
<div>
1. The Chromecast stick needs to be able to send UPnP packets to whatever device you are using to configure ChromeCast. If you have a software firewall policy on your computer, you'll need to make sure that it accepts incoming connections for the ChromeCast app -OR- for UDP ports 32768 - 61000. On my MacBook pro, I had "block all incoming connections" enabled by default. You'll need to disable this, or make an exception to the relevant UDP ports. If you don't have admin rights on your computer, a work around is to use your phone or tablet where there isn't a firewall setting by default. </div>
<div>
<br /></div>
<div>
2. If you have dual wifi mode enabled (i.e., 2.4GHz wifi and 5GHz wifi), you'll need to disable the 5GHz wifi. Make sure UPnP packet routing is enabled. NOTE: You do NOT need to allow UPnP packets through your router's firewall. Allowing incoming UPnP packets from the outside world into your LAN is a bit dangerous. You only need to make sure that UPnP packets can be routed internally on your LAN. </div>
<div>
<br /></div>
<div>
3. Make sure AP Isolation is disabled. On my router, this is two settings. "Set AP Isolated" and "Isolation between Main and Guest AP". Both have to be disabled.</div>
<div>
<br /></div>
<div>
4. Finally, if you're still struggling with getting ChromeCast to connect:</div>
<div>
- Turn on IGMP Snooping.</div>
<div>
- Disable WMM and also disable Packet Aggregation temporarily.</div>
<div>
- If you can, set the multicast rate to HTMIX (1S) 30 MBps</div>
<div>
<br /></div>
</div>
</div>
<div>
I'm using the rt-n65u firmware hosted here (https://code.google.com/p/rt-n56u/ ) and had to make the following changes:</div>
<div>
<br /></div>
<div>
Under Advanced Settings --> Wireless 5GHz:</div>
<div>
- Enable Radio = OFF</div>
<div>
<br /></div>
<div>
Under Advanced Settings --> Wireless 2.4GHz:</div>
<div>
- Goto Professional tab:</div>
<div>
- AP Isolated = OFF</div>
<div>
- Isolation between Main and Guest AP = OFF</div>
<div>
- Enable IGMP Snooping? = ON</div>
<div>
- Multicast Rate (Mbps) = HTMIX (1S) 30 Mbps</div>
<div>
(optionally, you can change this back later):</div>
<div>
- Enable Packet Aggregation = Disable</div>
<div>
- Enable WMM? = Disable</div>
<div>
<br /></div>
<div>
Under Advanced Settings --> LAN --> IPTV:</div>
<div>
- Enable multicast routing = ON</div>
<div>
- TTL correction for multicast packets = NO</div>
<div>
- IPTV UDP Multicast to HTTP Proxy Port = 0 [disabled]</div>
<div>
- eXtensible UPnP agent (xupnpd), Web port = 0 [disabled]</div>
<div>
Multicast traffic - WiFi 2.4 Ghz</div>
<div>
- Enable IGMP Snooping = ON</div>
<div>
- Multicast Rate (Mbps) = HTMIX (1S) 30Mbps</div>
<div>
<br /></div>
<div>
Under Advanced Settings --> WAN</div>
<div>
- Enable IGD UPnP = NO [You'll never want to allow WAN UPnP packets in] </div>
<div>
<br />
[Edit: 2014.02.02]:<br />
Following the advice of one of the comments, try turning off IGMP snooping after setting up Chromecast. It seems to have resolved issues with dropped casting connections. Also, try enabling WMM as well. I'm testing this pre-Superbowl (<a href="http://msn.foxsports.com/foxsportsgo/">http://msn.foxsports.com/foxsportsgo/</a>)</div>
Unknownnoreply@blogger.com15tag:blogger.com,1999:blog-4205744040671980186.post-491766405935147242013-08-09T21:48:00.000-07:002013-08-09T21:51:38.708-07:00LinkedIn ? It seems like everyone in the Silicon Valley area uses LinkedIn. I remember signing up for an account when they first started out. As a joke, I wrote that my profession was a farmer and that I loved milking cows. Then, over the years, friends added me. People I met added me. And then, one year, I forgot my password. I learned after my interview at my current job that LinkedIn is actually quite popular and a place that employer's use to search for employees. (Side-note: my current employer doesn't actually use LinkedIn. They require someone at the company to have personal knowledge of you and refer you. But they do look at your LinkedIn profile if it's provided.)<br />
<br />
Shortly after joining my current employer, I removed my joke "farmer" profession, but I haven't really updated my profile to include any technical expertise or information about myself. To me, LinkedIn seems like the perfect place to gather intelligence and profile someone you want to hack. I once worked for a government intelligence agency -- so, I've heard all the scary stories.<br />
<br />
I've re-considered the benefits of LinkedIn and decided to throw in the towel. I've yet to add additional details to my LinkedIn profile. It seems like doing so would be beneficial to all of the folks who know me. I can offer feedback about their work experience, etc.<br />
<br />
Just my thoughts.. have anyone of you used LinkedIn ? Any interesting stories to share?Unknownnoreply@blogger.com0